Авторизация

НАСТРОЙКА СОЕДИНЕНИЯ ПО ПРОТОКОЛУ OPENCONNECT

для сервера VPNKI и клиента на ОС Ubuntu

v logo new ha 60

Подключение по протоколу Openconnect

Для подключения к системе VPNKI по протоколу Openconnect вам необходимо:

  • иметь логин/пароль туннеля в личном кабинете;
  • иметь установленный клиент Openconnect на вашем устройстве;
  • иметь корректный IP адрес туннеля для работы Openconnect в VPNKI;
  • настроенные маршруты для клиента Openconnect на вашем устройстве.

 

Но обо всем по порядку ...

 

 

Настройки в личном кабинете

Здесь вы можете создать новый туннель или использовать уже существующий.

Есть только один нюанс - для корректной работы подключения по протоколу Openconnect в нашей системе необходимо, чтобы IP адрес туннеля в сети VPNKI (сеть 172.16.x.x) находился в нужном поддиапазоне.

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

Туннель для Openconnect ничем не отличается от туннелей, подключающихся по PPTP, L2TP, L2TP/IPsec, IKEv2/IPsec, SSTP и OpenVPN.

 

 

Клиент Openconnect

Установите клиента Openconnect для вашего устройства. В нашем примере мы будем использовать клиент для Ubuntu.

Установите его командами:

 

apt-get update
apt-get install -y openconnect

На этом все.

 

 

Изменение IP адреса туннеля

Как было сказано выше, для корректной работы соединения Openconnect необходимо изменить IP адрес туннеля.

Это необходимо для корректной маршуртизации на сервере. Адрес туннеля должен находиться в диапазоне 172.16.0.34 - 172.16.0.62.

Адрес сервера после подключения будет 172.16.0.33.

 

После изменения адреса ваш туннель по-прежнему сможет подключаться и по другим протоколам (PPTP, L2TP, L2TP/IPsec, IKEv2/IPsec, SSTP, OpenVPN).

Однако, перед изменением IP адреса, стоит оценить насколько изменение IP адреса туннеля повлияет на уже экплуатируемую вами систему.

Если изменение IP адреса не повредит или вы создали новый туннель только с целью использования Openconnect, то переходите в личный кабинет на страницу изменения IP адреса.

Меню "Мои настройки" - "Для Openconnect"

Туннель, подключаемый по протоколу 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

 

Попробуйте выполнить пинг сервера по адресу 172.16.0.33

ping 172.16.0.33

 

И по адресу 172.16.0.1

ping 172.16.0.1

 

Пока этого достаточно

 

После проверки отключите соединение командой

sudo pkill -SIGINT openconnect

 

Настройка маршрутов на клиенте Openconnect

После установления соединения на ваше устройство поступали два маршрута:

  • 172.16.0.0/16 dev tun0 scope link
  • 172.16.0.32/27 dev tun0 scope link

Эти маршруты позволят вашему устройству иметь доступ к IP адресам сети VPNKI.

Однако этих маршрутов окажется недостаточно, если у вас где-то есть домашняя сеть, например, с адресом 192.168.1.0/24 и эта сеть уже доступна через другой ваш туннель VPNKI.

Чтобы на вашем клиенте прописать новый маршрут необходимо после установления соединения выполнить скрипт, который выполнит эту работу на вашем устройстве.

 

В нашей системе маршруты на клиенте потребуется прописать самостоятельно.

Для этой цели можно использовать разные способы. Мы используем весьма простой скрипт.

Создайте в домашней директории пользователя 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 на ваш пароль от туннеля из личного кабинета системы

2. Клиент устанавливает соединение с адресом msk.vpnki.ru и портом 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

 

 

Команду для отключения вы уже знаете:

sudo pkill -SIGINT openconnect

 

Сервис 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

 

На этом все!