网络连接恢复时 OpenVPN 退出

网络连接恢复时 OpenVPN 退出

我使用 OpenVPN 作为守护进程,当我失去互联网连接时,OpenVPN 会等待 2 分钟,然后每 5 秒尝试重新启动一次。这正是我想要它表现的方式。但是,当互联网连接再次建立时,OpenVPN 会尝试重置 tun0,失败并退出,由于它是一个守护进程,它不会再尝试,而是保持死机状态。

由于权限被拒绝,IP 地址删除失败,结果为 2。

我尝试过设置chmod +sOpenVPN 可执行文件,但没有任何效果。如果这可能是一个问题,我也会使用 NetworkManager 来管理网络连接。

然而,看起来操作成功了,因为如果我手动重新启动 OpenVPN,它就可以工作。

答案1

为了避免出现“权限被拒绝”的情况,请尝试以 root 身份运行 OpenVPN 客户端,然后稍后在客户端配置文件中将用户更改为权限较低的用户。

例如:

user nobody
group nogroup 

我使用以下 systemd 脚本将客户端作为 systemctl 服务运行。当网络连接恢复时,它会自动重新连接。

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),则您必须终止客户端并在发生中断时重新连接。

相关内容