Ubuntu

如何通知我有關 VPN 適配器的狀態更改

  • June 23, 2013

在 Ubuntu 12.04 上——實際上是 Kubuntu,但我使用的是 NetworkManager,所以配置應該是一樣的——我已經配置了一些 VPN 連接。

現在,如果我有長時間執行的啟動或下載,如何確保在 VPN 連接中斷時立即無條件地停止所有網路流量?

我正在尋找的是某種獲取更改通知(我不想投票!)的方法。其餘的(例如插入 netfilter 規則)我可以自己處理。我只需要了解如何獲得有關已建立連接更改的通知。

萬一這很重要,我使用的配置是基於tun0. 如果需要其他詳細資訊,請在評論中告訴我,我會將它們添加到問題中。


到目前為止我已經嘗試過:

  • 將主 LAN 連接(這是在 VM 內,因此只有 LAN 連接)配置為手動
  • 將 VPN 配置為自動

然後我想這不是我想要採取的路線,因為我想啟動我的腳本/程序,以便只有在我啟動 VPN 時才會收到通知。我不是一直在 VPN 上執行,而是大部分時間。

因此,基本上我需要在建立特定的 VPN 連接後立即註冊一些通知,然後在發生某些事情時收到通知,以便自動斷開主連接作為響應。

NetworkManager 應該能夠為您執行此操作。從手冊頁:

有關網路的資訊通過 D-Bus 介面導出到任何感興趣的應用程序,提供豐富的 API 用於檢查和控製網路設置和操作。

NetworkManager 將按照字母順序執行 /etc/NetworkManager/dispatcher.d 目錄中的腳本以響應網路事件。

每個腳本接收兩個參數,第一個是剛剛啟動的設備的介面名稱,第二個是動作。

行動:

vpn-up:已啟動 VPN 連接。環境在變數 CONNECTION_UUID 中包含連接 UUID。

vpn-down:VPN 連接已停用。

所以看起來你有兩條路線:綁定到 D-Bus 以偵聽事件並對其採取行動,或者將一些腳本放入/etc/NetworkManager/dispatcher.d/. 後者似乎是阻力最小的路徑。

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