OpenVPN 从 CLI 启动时可以工作,但在启动时使用 init.d 脚本启动时则不工作

OpenVPN 从 CLI 启动时可以工作,但在启动时使用 init.d 脚本启动时则不工作

当我运行

openvpn /etc/openvpn/staticserver.conf

从 CLI。

openvpn 似乎在重新启动时从 init.d 脚本启动,因为我运行后得到了这个响应

/etc/init.d/openvpn status

● openvpn.service - OpenVPN 服务 已加载:已加载(/lib/systemd/system/openvpn.service;已启用;供应商预设:已启用) 活动:活动(已退出)自 2016-11-19 星期六 22:47:26 GMT;30 分钟前 进程:1116 ExecStart=/bin/true(代码=exited,状态=0/SUCCESS) 主 PID:1116(代码=exited,状态=0/SUCCESS) 任务:0 内存:0B CPU:0 CGroup:/system.slice/openvpn.service

11 月 19 日 22:47:26 ubuntu systemd[1]: 正在启动 OpenVPN 服务... 11 月 19 日 22:47:26 ubuntu systemd[1]: 已启动 OpenVPN 服务。 11 月 19 日 22:48:32 ubuntu systemd[1]: 已启动 OpenVPN 服务。

在我看来它好像启动成功了。

但是,隧道不起作用(无法 ping 入或 ping 出)。

如果我发出命令

/etc/init.d/openvpn start

那么隧道似乎开始运转了。

我应该怎么做才能确保 openvpn 在重启时正常启动?服务器通常无人值守,因此 VPN 在重启时自动重启非常重要。

答案1

解决了。

当 openvpn 在启动过程中运行时,系统无法访问位于我家子目录中的密钥。我没有足够的经验来详细解释这一点。显然,在启动完成时,密钥是可用的,并且当时运行的 init.d 脚本正常工作。我通过将 key.txt 文件移动到 /etc/openvpn 解决了这个问题。这可能不是最安全的解决方案,但在这种情况下我并不关心安全性。

得到教训:

1)尽管从上面的状态输出来看 openvpn 服务正在运行

ps aux | grep openvpn

结果表明事实并非如此。

2)(这对我来说很重要。)检查日志文件。必须在配置文件中启用它,但当我阅读日志文件消息时,我很快就明白了问题所在。我浪费了很多时间试图猜测其他解决方案。

相关内容