Содержание

[заметка] Кастомизация конфигурации клиента OpenVPN в Linux

Содержание

Обычно, для упрощения взаимодействия, на клиентских машинах с Linux устанавливаются пакет network-manager-openvpn-gnome, в котором легко импортировать конфигурацию подключения к OpenVPN-серверу предоставляемую в виде единого файла. В последствии, там можно через GUI настроить все параметры маршрутизации и т.д., если нужно. Но тут по некоторым причинам в одной системе данная функциональность оказалась не доступной из-за того что служба NetworkManager не могла управлять интерфейсом, который являлся основным для данной системы и по ряду причин нельзя было сделать чтобы таки он мог этим интерфейсом управлять. В общем данная заметка о том как подключиться вручную используя консоль.

Предположим, у нас есть файл, выданный сисадиином некой организации, который использует метод авторизации TSL с ключом и паролем, который называется client1.ovpn. В нормальных условиях, после подключения, весь трафик нашего компьютера заворачивается в этот туннель и он полностью подменяет наши локальные настройки DNS на свои.

Для начала следует переименовать данный файл и переместить в папку /etc/openvpn/:

1
2
3
sudo mv client01.ovpn /etc/openvpn/client01.conf
sudo chown root:root /etc/openvpn/client01.conf
sudo chmod 600 /etc/openvpn/client01.conf

После чего убедиться что в системе установлены пакеты resolvconf и openvpn-systemd-resolved, чтобы OpenVPN мог управлять настройками DNS:

1
sudo apt-get install -y resolvconf openvpn-systemd-resolved

Далее, чтобы не вводить каждый раз при подключении пароль от TLS-ключа, добавим в наш файл конфигурации /etc/openvpn/client01.conf следующую строку:

1
2
3
...
askpass /etc/openvpn/client01.txt
...

Сохраним в этот файл пароль:

1
2
3
sudo echo -e 'MySuperPassword' > /etc/openvpn/client01.txt
sudo chown root:root /etc/openvpn/client01.txt
sudo chmod 600 /etc/openvpn/client01.txt

Так же чтобы применялись настройки DNS при подключении следует добавить в конфигурацию строки:

1
2
3
4
5
...
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
...

Чтобы примениить какие-то собственные настройки DNS со стороны клиента можно добавить примерно такие строки:

1
2
3
4
...
dhcp-option DNS 192.168.0.1
dhcp-option DOMAIN orgdomain.net
...

Отключаем опцию создания маршрута по умолчанию для данного тоннеля:

1
#redirect-gateway def1

Так же, чтобы добавить собственные маршруты, добавляем что-то примерно такого вида:

1
2
3
4
5
6
...
route 192.168.100.0 255.255.255.0
route 192.168.101.0 255.255.255.0
route 192.168.102.0 255.255.255.0
route 192.168.103.0 255.255.255.0
...

Теперь, чтобы подключиться используем команду:

1
systemctl start openvpn@client01

Чтобы отключиться, соответственно:

1
systemctl stop openvpn@client01

А если мы хотим чтобы данное подключение поднималось автоматически при загрузке системы, то можно еще и так:

1
systemctl enable openvpn@client01