我正在运行 ubuntu 版本 12.04 LTS,并且已在其上安装了 OpenVPN。经过一段时间的故障排除,我的客户端无法连接(我已生成密钥并配置了客户端),我从命令行运行了“service openvpn status”,并收到以下错误:
无法访问 VPN‘服务器’的 PID 文件
我已经重启、启动并重新启动了该服务,但每次检查状态时,我都会收到 PID 错误。我很确定我无法连接,因为该服务没有运行。
我应该从哪里开始排除故障?我不知道该寻找什么。任何帮助都将不胜感激。
谢谢!
答案1
could not access PID file for VPN 'server'
表示无法读取 PID 文件。这可能有不同的原因:
- 您没有权限读取 pid 文件 - 您是以 root 身份运行该命令还是使用
sudo
? - pid 文件不存在,因为进程未运行或由于某种原因无法创建该文件
因此,为了进一步调试,你需要查看/var/run/openvpn.server.pid
它本身
- 它存在吗?
- 是否有一个 openvpn 进程正在运行,并且文件中列出了它的 pid?
- 是否有其他 openvpn 进程正在运行?
如果进程没有运行,则您的配置很可能是错误的,您必须阅读日志以了解它为何没有启动。运行service openvpn start
也可能会带来有用的输出。
答案2
初始化脚本报告 OpenVPN 未启动,因此openvpn
无法读取 pid 文件。
您必须检查system/daemon/openvpn
日志才能查看无法启动的原因。
答案3
Openvpn 的配置方式允许运行多个服务实例。如果您作为客户端或服务器拥有不同的配置,并且想要分别管理它们,那么这非常有用。
openvpn 的 systemd 配置文件(位于 /lib/systemd/system)包含“@”字符,表示您可以为该服务启用不同的实例。我已经用它启用了一些 VPN 连接。如果除了这些用“@”修饰的配置文件外,还有一个不带“@”的配置文件,您可以只启用所需的连接:
systemctl disable openvpn.service
systemctl enable openvpn@<conf filename for the connection>.service
这些实例在启动时应插入正确的选项
--writepid <conf filename for the connection>.pid
无论如何,如果您喜欢测试一些更简单的东西,您可以在 /etc/openvpn/ 中包含以下行<conf filename for the connnection>.conf
writepid /var/run/<conf filename for the connection>.pid
答案4
启动脚本将尝试启动 OpenVPN,但如果失败,它不会向您显示任何错误消息。手动执行 OpenVPN
$ openvpn /etc/openvpn/server.conf
并解决您在此处看到的所有错误。如果您没有看到错误,请检查您是否未将其设置log
为关闭,并且可能使用 增加详细程度verb
。