Для подключения к системе VPNKI по протоколу Openconnect вам необходимо:
Но обо всем по порядку ...
Здесь вы можете создать новый туннель или использовать уже существующий.
Есть только один нюанс - для корректной работы подключения по протоколу Openconnect в нашей системе необходимо, чтобы IP адрес туннеля в сети VPNKI (сеть 172.16.x.x) находился в нужном поддиапазоне.
Это мы рассмотрим чуть позже, а пока создайте туннель в личном кабинете системы и назначьте ему пароль для подключения.
Туннель для Openconnect ничем не отличается от туннелей, подключающихся по PPTP, L2TP, L2TP/IPsec, IKEv2/IPsec, SSTP и OpenVPN.
Установите клиента Openconnect для вашего устройства. В нашем примере мы будем использовать клиент для Ubuntu.
Установите его командами:
apt-get update
apt-get install -y openconnect
На этом все.
Как было сказано выше, для корректной работы соединения Openconnect с сервером VPNKI необходимо изменить IP адрес туннеля.
Это необходимо для корректной маршуртизации на сервере. Адрес туннеля должен находиться в диапазоне 172.16.0.34 - 172.16.0.62.
Адрес VPN сервера после подключения будет 172.16.0.33.
После изменения адреса ваш туннель по-прежнему сможет подключаться и по другим протоколам (PPTP, L2TP, L2TP/IPsec, IKEv2/IPsec, SSTP, OpenVPN).
Однако, перед изменением IP адреса, стоит оценить насколько изменение IP адреса туннеля повлияет на уже эксплуатируемую вами систему.
Если изменение IP адреса не повредит или вы создали новый туннель только с целью использования Openconnect, то переходите в личный кабинет на страницу изменения IP адреса.
Меню "Мои настройки" - "Для Openconnect".
На скриншоте показаны три туннеля. Два из которых уже обладают нужными IP адресами, а для одного туннеля можно изменить IP адрес.
Туннель, подключаемый по протоколу Openconnect, может подключаться и с маршрутизатора. В этом смысле он не отличается от других ваших туннелей.
После изменения IP адреса существующего туннеля имеет смысл проверить подключение пока тестовой командой:
sudo openconnect msk.vpnki.ru:46000 --user=userXXXXX --passwd-on-stdin --background --interface=tun0
Вместо userXXXXX используйте логин туннеля из личного кабинета. Система попросит ввести пароль подключения.
После успешного подключения стоит проверить что интерфейс tun0 в вашей системе создался:
sudo ifconfig
А также проверить что базовые маршруты к серверу прописались.
sudo ip route
Среди маршрутов вы найдете как минимум два маршрута к сети VPNKI:
172.16.0.0/16 dev tun0 scope link
172.16.0.32/27 dev tun0 scope link
*** А в идеальной ситуации к этим маршрутам добавятся и маршруты к другим вашим сетям, указанным как "сеть за туннелем" на главной странице настройки туннелей. Например:
192.168.0.0/24 dev tun0 scope link
Попробуйте выполнить пинг VPN сервера по адресу 172.16.0.33.
ping 172.16.0.33
И по адресу 172.16.0.1
ping 172.16.0.1
И по адресу, например, 192.168.0.1 (если такая сеть существует за каким-либо другим вашим туннелем).
ping 192.168.0.1
Пока этого достаточно.
После проверки отключите соединение командой
sudo pkill -SIGINT openconnect
*** почему в идельной ситуации? Дело в том, что когда вы меняете настройки туннелей на главной странице системы, то маршруты к сетям "за туннелем" должны быть доступны и для сервера Openconnect. Однако, пока нам добиться этого в автоматическом режиме не удалось. Пришлось сделать специальную кнопку для обновления данных в сервере Openconnect.
Воспользуйтесь ей на всякий случай.
Бывает, что пользоваться скриптом openconnect.sh и обрывом соединения при помощи pkill не очень удобно.
Кроме того, бывает необходимо выполнять подключение соединения при старте компьютера.
Чтобы это реализовать необходимо запускать openconnect на сервис для systemd. Для этого:
Создайте файл с описанием сервиса в директории /lib/systemd/system
nano /lib/systemd/system/openconnect.service
и добавьте туда следующие строки:
[Unit]
Description=Openconnect service
After=network.target
[Service]
Type=oneshot
PIDFile=/run/openconnect.pid
ExecStart=/home/путь к файлу/openconnect.sh
RemainAfterExit=yes
ExecStop=/bin/pkill -SIGINT openconnect
[Install]
WantedBy=multi-user.target
Только замените путь к файлу openconnect.sh на реальный путь в вашей ОС.
Сохраните Ctrl+X
Теперь дайте команду на обновление сервисов:
systemctl daemon-reload
и теперь попробуйте подключиться используя команду:
service openconnect start
Подождите несколько секунд и выполните команду:
service openconnect status
Вы должны увидеть успешный статус подключения.
Для обрыва соединения теперь можете использовать команду:
service openconnect stop
И в завершение, если вы хотите подключать соединение Openconnect при старте компьютера, то выполните команду:
systemctl enable openconnect.service
На этом все!
И еще на всякий случай - если маршруты к другим вашим сетям не поступили, то их можно прописать локально в Ubuntu/Debian вот таким способом:
После установления соединения на ваше устройство поступали два маршрута:
Эти маршруты позволят вашему устройству иметь доступ к IP адресам сети VPNKI.
Однако этих маршрутов окажется недостаточно, если у вас где-то есть домашняя сеть, например, с адресом 192.168.1.0/24 и эта сеть уже доступна через другой ваш туннель VPNKI.
Чтобы на вашем клиенте Openconnect прописать новый маршрут необходимо после установления соединения выполнить скрипт, который выполнит эту работу на вашем устройстве.
В нашей системе маршруты на клиенте потребуется прописать самостоятельно.
Для этой цели можно использовать разные способы. Мы используем весьма простой скрипт.
Создайте в домашней директории пользователя Ubuntu файл.
sudo nano ./openconnect.sh
и добавьте в него строки:
#!/bin/bash
echo YouRpAssWoRdHerE | sudo /usr/sbin/openconnect msk.vpnki.ru:46000 --user=userXXXXX --pid-file /run/ocserv.pid --passwd-on-stdin --background --interface=tun0
sleep 2
sudo ip route add 192.168.1.0/24 via inet 172.16.0.33 dev tun0
Сохраните файл Ctrl+X
1. Так как Openconnect всегда просит ввести пароль при установлении соединения, то, чтобы не делать это постоянно вручную, вы делаете команду echo с вашим паролем и передаете этот пароль в качестве входных данных для выполнения команды openconnect. Замените слово YouRpAssWoRdHerE на ваш пароль от туннеля из личного кабинета системы VPNKI.
2. Клиент устанавливает соединение с адресом msk.vpnki.ru и его портом TCP 46000
3. При этом клиент использует имя туннеля userXXXXX - замените XXXXX на имя вашего туннеля.
4. PID файл запущенного процесса будет находиться в файле /run/ocserv.pid
5. --passwd-on-stdin - пароль вводим со стандартного ввода, в который, на самом деле, был отправлен вывод предыдущей команды echo
6. Клиент Openconnect запускается в режиме background, а консоль Ubuntu отдается вам после успешного старта.
7. После подключения в вашем устройстве будет создан VPN интерфейс tun0
8. sleep 2 - это команда ожидания в две секунды для подключения и создания интерфейса tun0
9. ip route add 192.168.1.0/24 via inet 172.16.0.33 dev tun0 - добавляем маршрут к вашей удаленной сети, которая будет теперь доступна через интерфейс tun0 и адрес сервера 172.16.0.33
Сделайте файл исполяемым, для этого выполните команду:
sudo chmod +x ./openconnect.sh
и теперь попробуйте выполнить подключение:
./openconnect.sh
Как обычно проверьте пинг сервера по двум адресам:
ping 172.16.0.33
ping 172.16.0.1
Если ваш другой туннель подключен и в нем настроена "сеть за маршрутизатором", то можете выполнить команду:
ping 192.168.1.1
Команду для отключения вы уже знаете:
sudo pkill -SIGINT openconnect