OpenVPN systemd 超时错误但有效

OpenVPN systemd 超时错误但有效

我有一个包含这些设置的文件 /lib/systemd/system/openvpn.service :

[Unit]
Description=OpenVPN client
After=network.target

[Service]
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --dameon --writepid /var/run/openvpn/openvpn.pid --config /etc/openvpn/pia/Mexico.ovpn
ExecStop=-/bin/kill -TERM $MAINPID
Restart=on-failure


[Install]
WantedBy=multi-user.target

每当我运行 systemctl start openvpn 时,我都会收到这个奇怪的错误:

Job for openvpn.service failed because a timeout was exceeded. See "systemctl status openvpn.service" and "journalctl -xe" for details.

但如果我检查我的公共 IP,它会显示我的 VPN IP。但它每隔几秒就会改变一次,我相信这是因为 OpenVPN 正在重新启动......

针对该错误消息运行命令显示:

Jun 19 04:29:33 test systemd[1]: openvpn.service: PID file /var/run/openvpn/.pid not readable (yet?) after start: No such file or directory

/var/run/openvpn 上 ls -l 的输出:

-rw-r--r-- 1 root root 5 Jun 19 04:32 openvpn.pid

所以我不明白可能出了什么问题?操作系统是 Ubuntu 16.04,带有从源代码编译的 OpenVPN 2.4.2。 Mexico.conf 是我的conf 文件,已将.ovpn 重命名为.conf。

如果我将 PIDFILE 更改为:PIDFile=/var/run/openvpn/openvpn.pid它就无法完全启动

我从某处的指南复制了此设置,当它被命名为时它就可以工作 [电子邮件受保护]但是当其命名为 openvpn.service 时,相同的设置会出现上述错误...有什么特别的原因吗?这是设置:

[Unit]
Description=OpenVPN client
After=network.target

[Service]
RuntimeDirectory=openvpn
PrivateTmp=true
KillMode=mixed
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/openvpn.pid --cd /etc/openvpn/pia/ --config Mexico.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
Restart=on-failure
RestartSec=3
ProtectSystem=yes
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw


[Install]
WantedBy=multi-user.target

我注意到这些设置在命名为时有效[电子邮件受保护]但它仍然会给出一些非致命错误,例如:

ERROR: Linux route add command failed: external program exited with error status: 7

WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this

答案1

您的服务抱怨的原因是它需要一个没有收到的参数:参数的位置是,在[电子邮件受保护]文件,无论你在哪里看到%我,特别是在该行

 PIDFile=/var/run/openvpn/%i.pid

这也应该反映在执行启动下面一行,您替换的位置--writepid /var/run/openvpn/openvpn.pid为了本来应该发生的事情--writepid /run/openvpn/%i.pid

使用服务的正确方法,例如[电子邮件受保护]就是向它传递一个参数:例如

 systemctl enable [email protected]
 systemctl start  [email protected]

在这个简单的例子中,传递的参数(客户) 只是存储进程 PID 的文件名,没有其他内容,因此您可以随意命名它。只需确保将服务文件重命名为/lib/systemd/系统/[电子邮件受保护]我确信,就像您安装时一样,您就可以开始了。

openvpn 仍然有效的原因实际上是您唯一错过的是 PID 文件的名称,而不是 openvpn 配置。

至于另外两个错误,第二个是警告,只需注意它(=使用auth-nocache配置文件中的选项)。第二个需要更多信息来诊断,IE完整的错误消息,开放VPN配置文件和路由表(ip路由显示设置 VPN 后。

相关内容