![OpenVPN 从 CLI 启动时可以工作,但在启动时使用 init.d 脚本启动时则不工作](https://linux22.com/image/888801/OpenVPN%20%E4%BB%8E%20CLI%20%E5%90%AF%E5%8A%A8%E6%97%B6%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E4%BD%BF%E7%94%A8%20init.d%20%E8%84%9A%E6%9C%AC%E5%90%AF%E5%8A%A8%E6%97%B6%E5%88%99%E4%B8%8D%E5%B7%A5%E4%BD%9C.png)
当我运行
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)(这对我来说很重要。)检查日志文件。必须在配置文件中启用它,但当我阅读日志文件消息时,我很快就明白了问题所在。我浪费了很多时间试图猜测其他解决方案。