25 февраля 2018

Запуск OpenVPN в нужное время при загрузке.



Проблемой назвать это сложно, но странность при запуске сервиса OpenVPN в Debian 9 имеет место быть. Мост до домашней сети у меня был настроен давно, и сбоев в его работе я не замечал. Информацию о том, что не всё там гладко, сообщил один товарищ с форума https://www.linux.org.ru.

После перехода Debian на Systemd скрипты запуска OpenVPN были переписаны на service-юниты. Юнит для управления сразу всеми экземплярами называется "openvpn.service", кроме него есть еще шаблон для управления экземплярами индивидуально "openvpn@.service". Настройки берутся из каталога "/etc/openvpn".

Проблема возникла из-за зависимостей. Юниты запускались еще до поднятия и настройки сети, т.е. сетевых интерфейсов в системе фактически ещё нет. При этом в режиме сервера без явного указания прослушиваемого сетевого интерфейса всё работало исправно. Если адрес для прослушивания в конфиге был указан явно, то сервис не запускался из-за отсутствия сети.

Решение проблемы есть, но у него есть один серьезный недостаток.

Для начала надо остановить и выключить все запущенные экземпляры:

sudo systemctl stop openvpn.service
sudo systemctl disable openvpn.service
# возможно, что придётся еще отдельно отключить
# все экземпляры
# bla-bla-bla - имя conf-файла в /etc/openvpn
sudo systemctl stop openvpn@bla-bla-bla.service
sudo systemctl disable openvpn@bla-bla-bla.service

Теперь надо перенести все серверные конфигурации в каталог "/etc/openvpn/server", клиентские конфигурации в каталог "/etc/openvpn/client" и включить и запустить соответствующие сервисы:

# client1 - имя conf-файла в /etc/openvpn/client
# server1 - имя conf-файла в /etc/openvpn/server
sudo systemctl enable openvpn-client@client1.service
sudo systemctl start openvpn-client@client1.service
sudo systemctl enable openvpn-server@server1.service
sudo systemctl start openvpn-server@server1.service

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