Shell-Script

我將覆盆子與 VPN 連接保持打開狀態,幾個小時後,我連接到它,但沒有網際網路連接。如何進行故障排除/診斷?

  • November 29, 2021

我將我的樹莓派連接到 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::Taillibfile-tail-perlDebian 的軟體包中,所以也應該在 Raspbian 上可用。

如果您在日誌文件中找不到中斷消息,並且您的 VPN 連接是由 systemd 服務啟動的,則您可以使用systemctl status <servicename>它來確定它是否已啟動。

簡而言之,解決這個問題有兩個部分:

  1. 可靠地檢測 VPN 是否啟動。這可能需要 cron 作業或在後台執行的腳本來監視日誌文件。它可能需要多個測試條件來檢測中斷。
  2. 如果不是,請重新啟動 VPN 連接。systemctl restart servicename如果 VPN 使用 systemd 服務啟動,這可能就像執行一樣簡單。或/etc/init.d/vpn-service在 SysV 初始化。(這些名稱並不准確,它們只是您的真實服務名稱的佔位符)。

這些部分可以(並且應該)相互獨立地解決。

引用自:https://unix.stackexchange.com/questions/679387