Shell-Script
我將覆盆子與 VPN 連接保持打開狀態,幾個小時後,我連接到它,但沒有網際網路連接。如何進行故障排除/診斷?
我將我的樹莓派連接到 VPN,然後我把它放在那裡幾個小時。當我檢查它通過 SSH 或 VNC 連接時,我意識到它沒有網際網路連接。如果我重新啟動然後再次連接到 VPN,它會再次工作。
我的問題是:如何診斷問題?如何排除故障?是否有一些日誌文件或 systemctl 日誌可供我查看以找出導致問題的原因?
我想自動化,如果 Pi 沒有連接到網際網路,那麼它會重新啟動。我想通過一些
.target
文件或udev
規則以“乾淨”的方式做到這一點。
您可能不需要重新啟動。當 rpi 檢測到中斷時重新啟動 VPN 連接應該足夠好(除非它是硬體故障)。
至於檢測中斷,是否有一些您知道在 VPN 啟動時應該能夠訪問但在 VPN 關閉時不能訪問的主機或 IP 地址?如果是這樣,請設置一個嘗試
fping
該主機的 cron 作業。如果它響應,則一切正常。如果沒有,請重新啟動 VPN。否則,如果在日誌中記錄了 VPN 中斷,請編寫腳本來監控日誌並在 VPN 出現故障時重新啟動 VPN。例如,通過以下內容:
tail -F /var/log/syslog | awk '/your outage message/ { system "/path/to/vpn-restart-script" }'
或使用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 初始化。(這些名稱並不准確,它們只是您的真實服務名稱的佔位符)。這些部分可以(並且應該)相互獨立地解決。