Для подключения к системе 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 --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 в домашней директории.
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
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
Сделайте файл исполяемым, для этого выполните команду:
sudo chmod +x ./openconnect.sh
и теперь попробуйте выполнить подключение:
./openconnect.sh
Для обрыва соединения по прежнему можете использовать команду
sudo pkill -SIGINT openconnect
Но, как видите, это не очень удобно. Удобнее было бы использовать сервис systemd для установления и обрыва соединения. Давайте сделаем и его.
Бывает, что пользоваться скриптом 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 файл (если еще не создавали ранее). А если создавали то добавьте в него только команды, начинающиеся со sleep 2.
Итак, откройте или создайте файл:
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. Описание команд скрипта было дано чуть выше. Здесь же продолжим с команды sleep 2
2. sleep 2 - это команда ожидания в две секунды для подключения и создания интерфейса tun0
3. ip route add 192.168.1.0/24 via inet 172.16.0.33 dev tun0 - добавляем маршрут к вашей удаленной сети, которая будет теперь доступна через интерфейс tun0 и адрес сервера 172.16.0.33
и теперь попробуйте выполнить подключение:
./openconnect.sh
Как обычно проверьте пинг сервера по двум адресам:
ping 172.16.0.33
ping 172.16.0.1
Если ваш другой туннель подключен и в нем настроена "сеть за маршрутизатором", то можете выполнить команду:
ping 192.168.1.1
Команду для отключения вы уже знаете:
sudo pkill -SIGINT openconnect
Или можете использовать команды
service openconnect start и service openconnect stop