
ラズベリーパイを使っています。 (Debian 変形).
デフォルトでは、openvpn は /etc/rc2.d/S03openvpn から起動されます。 openvpnが起動し、VPNプロバイダへの接続が確立された後、起動したいデーモンへのシンボリックリンク/etc/init.d
に設定されたスクリプトがあります。/etc/rc2.d/S04daemonname
openvpn が起動し、正常に接続されます。ところで、VPNを使って接続しようとするデーモンは私の標準IPを使用するので、接続が行われる前に始まるようです。デーモンを終了してターミナルから再起動すると、目的のVPN IPが使用されます。
VPN接続を確立した後に起動時にデーモンが実行されるようにするにはどうすればよいですか? tun0デバイスが作成されるのを待ってこれを行うことはできますか(それとも?)、それともtun0生成が確立された接続と同義ではないため、早すぎるということですか?また、init.dスクリプトでランタイム依存性LSBフラグを使用する方法を調べましたが、特定のネットワークデバイス(tun0)を要件にする方法が見つからず、これが可能かどうかはわかりません。 openvpnサービスを参照するファイルもありますが、/etc/NetworkManager/VPN/
/ VPNが唯一のサブディレクトリであるため、それをどのように使用するのか、NetworkManagerデーモンを使用するのかわかりません。
たとえば、正確な解決策が必要です。実行優先順位が十分に低い /etc/rc2.d/ に init.d スクリプトを入れるか、openvpn 接続が確立されるのを待つわけではありません。
答え1
openvpn
たとえば、optionsを使用してスクリプトを実行できます--up scriptname
。
私の考えでは、プロセスを開始した後、いつか接続が確立されると期待するよりもこれが優れていますopenvpn
。を使用する代わりに、openvpn
スクリプトを実行する可能性のある方法を試すことができます。詳しくはマンページをご覧ください。--up
--client-connect
openvpn
答え2
設定を検討してくださいip_nonlocal_bind
。この関連質問に対する回答は次のとおりです。https://serverfault.com/questions/474997/how-can-a-larger-delay-be-placed-Between-two-interdependent-upstart-or-etc-init/475013#475013。グーグルしてみてください - リンクがあります -https://sebest.github.io/post/linux-how-to-bind-ip-that-doesn-t-exist-yet/
私は経験がないのでまだテストしていないことを認めなければなりません。
トンネルに関連付けられたIPにpostgresをバインドしようとしているようです。もしそうなら、これは
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