我将树莓派连接到 VPN,然后将其留在那里几个小时。当我通过 SSH 或 VNC 检查它的连接时,我意识到它没有互联网连接。如果我重新启动并再次连接到 VPN,它会再次工作。
我的问题是:如何诊断问题?如何排除故障?是否有一些日志文件或 systemctl 日志可供我查看以找出导致问题的原因?
我想自动化如果 Pi 未连接到互联网,则会重新启动。我想通过一些.target
文件或udev
规则以“干净”的方式做到这一点。
答案1
您可能不需要重新启动。当 rpi 检测到中断时重新启动 VPN 连接应该足够了(除非是硬件故障)。
至于检测中断,您是否有某个主机或IP地址知道当 VPN 启动时您应该能够访问,但当 VPN 关闭时则无法访问?如果是这样,请设置一个尝试fping
该主机的 cron 作业。如果有响应,则一切正常。如果没有,请重新启动 VPN。
否则,如果日志中记录了 VPN 中断,请编写一个脚本来监视日志并在 VPN 中断时重新启动 VPN。例如通过以下开头的内容:
tail -F /var/log/syslog |
awk '/your outage message/ { system "/path/to/vpn-restart-script" }'
或者使用以下命令编写 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 初始化上。 (这些名称并不准确,它们只是您真实服务名称的占位符)。
这些部分可以(并且应该)彼此独立地解决。