Как стать автором
Обновить

Как в линуксе подключиться к корпоративному VPN с помощью openconnect и vpn-slice

Время на прочтение14 мин
Количество просмотров61K
Всего голосов 13: ↑11 и ↓2+9
Комментарии18

Комментарии 18

Большинство ip адресов подверглись жестокой обфускации

Адреса из пулов для частных сетей и тестирования читались бы легче и не описывали бы что либо конфиденциальное. Ну, или указывать какой IP к какой сети принадлежит (wan/lan/vpn).

Пример...
  • 192.0.2.0/24 — для описания WAN
  • 198.18.0.0/15 — для описания WAN (предназначена для тестирования оборудования)
  • 192.168.0.0/24 — для описания LAN
  • 172.16.0.0/12 — для описания LAN
  • 10.0.0.0/8 — для описания LAN

Есть такая штука, как network-manager-vpnc — плагин цискиного vpn для NetworkManager, который работает через vpnc. Умеет импортировать нативные цискины конфиги, дальнейшие настройки — через NetworkManager, в том числе можно и через GUI.

Он и для openconnect есть, но у меня не завёлся. Почему я не понял, а теперь я считаю, что у велосипеда, который я собрал есть определённые достоинства. ))

Их нет. Поставьте totp (консольный гуглаутентификатор) и настройте нормально networkmanager. Ну и пароль добавьте в ключницу вашего DE, после чего добавьте в автозагрузку скрипт через пользовательский юнит файл системд в домашней директории при логине, с автореконнектом. Ключинца по умолчанию разблокируется когда ваша сессия активна.

Их нет.

В статье их нет. А дальше вы собственно сами их перечислили )).


и настройте нормально networkmanager

Что вы имеете в виду под нормальной настройкой? Пока что я обернул скрипт модулем systemd, который запускается после поднятия сети.


Ну и пароль добавьте в ключницу вашего DE

Спасибо за совет! Значительную часть ваших рекомендаций я уже использую, но ключница у меня там не участвует. Вы предлагаете положить в ключницу пароль от впн, то есть его фиксированную часть? И можно будет использовать его как переменную в скрипте?

Что вы имеете в виду под нормальной настройкой?

Открыть логи journalctl и посмотреть там причины сбоев в работе openconnect из networkmanager. Настроить использования сети впн только для ресурсов за впн (галочка в гуях нетворкменеджера).


И можно будет использовать его как переменную в скрипте?

Да.

Но если я буду использовать графический интерфейс то у меня же не получится дёргать скрипт с помощью systemd.


Вы хотите сказать, что графический интерфейс нужно использовать для того, чтобы диагностировать проблему, а дальше сделать всё скриптами, только запускать openconnect надо с помощью NetworkManager, а не напрямую, как я делаю сейчас?

Если вы воспользуетесь NetworkManager и настроите всё через gui, то потом сможете поднимать соединение из консоли без проблем. Хоть через nmtui (текстовый интерфейс), хоть через nmcli (командный интерфейс).
Что тут произошло, мне не понятно. Но эксперимент показывает, что если добавить в /etc/resolv.conf строку


А вас не смущает, то что в файле явно сказано, что менять его не стоит…

Правьте хотя бы тут: /etc/systemd/resolved.conf
после изменений: systemctl restart systemd-resolved.service

А вас не смущает, то что в файле явно сказано, что менять его не стоит…

Очень смущает. Именно поэтому я и не стал его менять )). За рекомендацию спасибо, меня интересовало, что делать, если мне всё-таки захочется поправить этот файл, но я как-то всё откладывал выяснения на потом.

Какое-то переизобретение велосипеда. Предположу, что у пользователей с Windows и MacOS нет такой проблемы с роутами. Это значит, что они отдаются сервером в виде HTTP Header-ов, это можно посмотреть, если подключиться с опцией --verbose.
Ещё у openconnect есть штатный механизм для обработки этих header-ов, называется vpnc-script, если запустить openconnect c --script /usr/share/vpnc-scripts/vpnc-script (значение по умолчанию) не передавая никаких параметров, то он и resolv.conf поправит (или dnsmasq) и роуты нужные добавит на основании данных от VPN. Но, вероятно, в вашей версии Ubuntu что-то идёт не так, у меня на 16.04 и 18.04 всё ок.
Пример заголовков:
X-CSTP-DNS: nameserver1
X-CSTP-Split-Exclude: 0.0.0.0/255.255.255.255
X-CSTP-Split-Include: 172.14.24.0/255.255.255.0
Какое-то переизобретение велосипеда.

Типа того. Я утешаю себя тем, что это многому меня научило.


Предположу, что у пользователей с Windows и MacOS нет такой проблемы с роутами.

Да, у них нет проблем.


Это значит, что они отдаются сервером в виде HTTP Header-ов

Попробовал, да, всё так. Большое спасибо, уверен в будущем это поможет мне не нащупывать маршруты вслепую ))


Но, вероятно, в вашей версии Ubuntu что-то идёт не так, у меня на 16.04 и 18.04 всё ок.

Я пробовал с нескольких разных машин, до сих пор проблема воспроизводилась везде.

Увы но на маке и Винде работа с впн намного хуже, как только я распробовал нетворкменеджер Линукс стал единственным инструментом который автоматически поднимает мне туннели любого вида куда нужно, при этом не обрывая интернет и не гоняет лишний трафик по туннелям если админы впн косорукие.

Наши админы например решили пушить dafault gw через vpn. Так как мне такая радость нафиг не нужна, пришлось кинуть скрипт в /etc/vpnc/post-connect.d/ чтобы оно его назад вернуло и прописало только нужные через тунель.


dns у меня свой локальный настроен — просто настроил форвард для рабочей зоны.

Я честно скажу — не запускал цисковского клиента на линуксах, но ЕМНИП он есть оригинальный… или не взлетел?

Оригинальный какой-то капризный, и anyconnect и старый cisco vpnclient

У меня не взлетел оригинальный, а потом не взлетел gui интерфейс для openconnect. Я погуглил, проблема с оригинальным клиентом возникает у многих, проблема с gui возникает реже, но так как получилось настроить консольные скрипты, я не стал разбираться отчего возникла проблема с gui.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории