Назад | Перейти на главную страницу

OpenVPN завершает работу при восстановлении сетевого подключения

Я использую OpenVPN в качестве демона, и когда я теряю подключение к Интернету, OpenVPN ждет 2 минуты, прежде чем пытаться перезапустить каждые 5 секунд. Вот так я хочу, чтобы он себя вёл. Однако, когда подключение к Интернету снова установлено, OpenVPN пытается сбросить tun0, терпит неудачу и завершает работу, и, поскольку это демон, он не будет пытаться снова, но останется мертвым.

Он не работает с 2 на IP-адресе del из-за отказа в разрешении.

Я пытался установить chmod +s в исполняемый файл OpenVPN безуспешно. Я также использую NetworkManager для управления сетевыми подключениями, если это может быть проблемой.

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

Чтобы избежать отказа в разрешении, попробуйте запустить клиент OpenVPN от имени пользователя root и позже в файле конфигурации клиента измените пользователей на менее привилегированных.

Например:

user nobody
group nogroup 

Я запускаю клиент как службу systemctl, используя следующий сценарий systemd. Он автоматически переподключается при восстановлении сетевого подключения.

https://github.com/thilinaba/systemd-scripts/blob/master/openvpn-client.service

В скрипте задайте путь /etc/openvpn/client.ovpn чтобы указать файл конфигурации клиента в соответствии с вашими настройками и скопировать сценарий в /etc/systemd/system/. После копирования запустить systemctl daemon reload чтобы загрузить новую службу.

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

Например:

sudo systemctl start openvpn-client.service
sudo systemctl stop openvpn-client.service
sudo systemctl status openvpn-client.service

Однако вам необходимо установить следующие параметры в файле конфигурации клиента, чтобы включить функцию автоматического переподключения.

proto udp
resolv-retry infinite
persist-tun

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