我将我的树莓派连接到 VPN,然后我把它放在那里几个小时。当我检查它通过 SSH 或 VNC 连接时,我意识到它没有互联网连接。如果我重新启动然后再次连接到 VPN,它会再次工作。
我的问题是:如何诊断问题?如何排除故障?是否有一些日志文件或 systemctl 日志可供我查看以找出导致问题的原因?
我想自动化,如果 Pi 没有连接到互联网,那么它会重新启动。我想通过一些.target
文件或udev
规则以“干净”的方式做到这一点。
我将我的树莓派连接到 VPN,然后我把它放在那里几个小时。当我检查它通过 SSH 或 VNC 连接时,我意识到它没有互联网连接。如果我重新启动然后再次连接到 VPN,它会再次工作。
我的问题是:如何诊断问题?如何排除故障?是否有一些日志文件或 systemctl 日志可供我查看以找出导致问题的原因?
我想自动化,如果 Pi 没有连接到互联网,那么它会重新启动。我想通过一些.target
文件或udev
规则以“干净”的方式做到这一点。
您可能不需要重新启动。当 rpi 检测到中断时重新启动 VPN 连接应该足够好(除非它是硬件故障)。
至于检测中断,是否有一些您知道在 VPN 启动时应该能够访问但在 VPN 关闭时不能访问的主机或 IP 地址?如果是这样,请设置一个尝试
fping
该主机的 cron 作业。如果它响应,则一切正常。如果没有,请重新启动 VPN。否则,如果在日志中记录了 VPN 中断,请编写脚本来监控日志并在 VPN 出现故障时重新启动 VPN。例如,通过以下内容:
或使用File::Tail模块编写 perl 脚本)。顺便说一句,
File::Tail
在libfile-tail-perl
Debian 的软件包中,所以也应该在 Raspbian 上可用。如果您在日志文件中找不到中断消息,并且您的 VPN 连接是由 systemd 服务启动的,您可以使用
systemctl status <servicename>
它来确定它是否启动。简而言之,解决这个问题有两个部分:
可靠地检测 VPN 是否启动。这可能需要 cron 作业或在后台运行的脚本来监视日志文件。它可能需要多个测试条件来检测中断。
如果不是,请重新启动 VPN 连接。
systemctl restart servicename
如果 VPN 使用 systemd 服务启动,这可能就像运行一样简单。或/etc/init.d/vpn-service
在 SysV 初始化。(这些名称并不准确,它们只是您的真实服务名称的占位符)。这些部分可以(并且应该)相互独立地解决。