Я использую 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 вам не понадобится), вам придется завершить работу клиента и подключиться снова в случае прерывания.