Networking

在呼叫二進製文件後執行腳本

  • January 20, 2021

我想在VPN 連接後修改iptables。實現這一目標的最佳方法是什麼?

我已經嘗試使用NetworkManager dispatcher.d目錄中的自定義單元通過systemd ,但它似乎只在啟動時工作,而不是在VPN停止並重新啟動時 - 如果我寫得對:

[Unit]
Description=iptables setup
Requires=nordvpnd.service
After=nordvpn.service

[Service]
Type=simple
ExecStart=/usr/local/bin/setup_iptables.sh

[Install]
WantedBy=multi-user.target

我可以監控tun0,如果已啟動並配置,解析結果:

ip address ls dev tun0

但這意味著更新之間的延遲。前任。每 5 秒測試一次。可能意味著至少 4 秒。當 iptables 未按應有配置時。

我的最後一個想法是每次呼叫**/usr/bin/nordvpn**時都執行 setup_iptables.sh ,但是如何實現呢?

謝謝

/usr/bin/nordvpn是在呼叫後立即返回還是在完成 VPN 連接後返回?

在後一種情況下,只需重命名/usr/bin/nordvpn/usr/bin/nordvpn.original創建一個/usr/bin/nordvpn首先呼叫/usr/bin/nordvpn.original然後呼叫的腳本/usr/local/bin/setup_iptables.sh(這稱為“包裝腳本”)。

如果/usr/bin/nordvpn立即返回,則更難,因為您需要在包裝腳本中以某種方式檢查是否已建立 VPN 連接(可能通過 ping 特定的東西?),如果是,則執行/usr/local/bin/setup_iptables.sh.

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