Openvpn

建立 openvpn 連接後,在 Debian 中啟動時執行守護程序

  • September 21, 2017

我正在使用樹莓派。(Debian 變體)。

預設情況下,openvpn 以 /etc/rc2.d/S03openvpn 啟動。我為我想在 openvpn 啟動並建立與我的 vpn 提供程序的連接後啟動的守護程序設置了一個/etc/init.d帶有符號連結的腳本。/etc/rc2.d/S04daemonnameopenvpn 啟動和連接工作正常。但是,我想使用 vpn 連接的守護程序似乎在建立連接之前啟動,因為它使用我的標準 IP。如果我殺死守護程序並在終端中重新啟動它,它就會使用所需的 vpn ip。

一旦建立 vpn 連接,我將如何使我的守護程序在啟動時執行?我可以通過等到 tun0 設備創建(如何?)來做到這一點,還是 tun0 創建不是已建立連接的同義詞,這意味著這可能為時過早?我還研究了在 init.d 腳本中使用執行時依賴項 LSB 標記,但找不到如何使某個網路設備 (tun0) 成為要求,我不確定這是否可行。還有一個文件/etc/NetworkManager/VPN/引用了 openvpn 服務,但我不確定如何使用它,或者是否正在使用 NetworkManager 守護程序,因為 /VPN 是它的唯一子目錄。

我想要精確的解決方案,例如。不只是將我的 init.d 腳本以足夠低的執行優先級放在 /etc/rc2.d/ 中,或者等到應該建立 openvpn 連接。

openvpn您可以使案例如該--up scriptname選項執行腳本。

在我看來,這似乎比期望在啟動該openvpn過程後的某個時間建立連接要好。您可能需要對從 執行腳本的可能方式進行一些試驗openvpn,例如不使用--up,而是使用--client-connect等;查看openvpn手冊頁以獲取更多資訊。

考慮設置ip_nonlocal_bind. 這是這個相關問題的答案 - https://serverfault.com/questions/474997/how-can-a-larger-delay-be-placed-between-two-interdependent-upstart-or-etc-init/475013 #475013。Google它 - 這是一個連結 - https://sebest.github.io/post/linux-how-to-bind-ip-that-doesn-t-exist-yet/

我不得不承認我沒有測試過它,因為我沒有那麼有經驗。

在我看來,您正在嘗試將 postgres 綁定到與隧道關聯的 IP。如果是這種情況,這ip_nonlocal_bind是解決您問題的方法。設置 ip_nonlocal_bind 允許您綁定到任何 IP,甚至是與您的電腦無關的 IP,這正是您想要綁定到您還沒有的 IP 時想要的 - 例如,當使用在活動之間浮動的虛擬 IP 時和被動節點。

假設這只是 ipv4;

echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

或者扔進/etc/sysctl.conf

net.ipv4.ip_nonlocal_bind

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