インターネットへのアクセスに使用するローカルネットワーク上のすべてのコンピュータのVPNゲートウェイとして、ローカルネットワークにRaspberry Pi(blitzen
Jessieと共にインストールされている)を設定しました。
NATを使用してOpenVPN()iptables
に接続し、ここにパケットを転送しています。私はDHCPを使用して、ネットワーク上のすべてのコンピュータがこのサーバーをインターネットのデフォルトパスとして使用するように構成しています。tun0
eth0
dnsmasq
これは素晴らしい作品です。
ただし、ADSLモードが中断されると問題が発生します。 OpenVPNが障害を検出し、tun0
接続が切断されます。その後、再接続を試みますが、VPNサーバーのホスト名を解決できないため失敗します。
Nov 3 17:27:20 blitzen ovpn-TunnelBearGermany[3020]: RESOLVE: Cannot resolve host address: de.tunnelbear-ios.com: Temporary failure in name resolution
調査の結果、トンネルが解体されたときに古いルーティングテーブルがまだアクティブになっているようです。
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.18.13.37 0.0.0.0 UG 0 0 0 tun0
46.101.162.205 192.168.2.1 255.255.255.255 UGH 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 202 0 0 eth0
172.18.13.1 172.18.13.37 255.255.255.255 UGH 0 0 0 tun0
172.18.13.37 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
デフォルトパスを手動で削除し、ADSL モデムを指すように再構成すると、Pi は VPN サーバー名を確認し、すぐに再接続します。すべてが幸せな状態に戻りました。
私の質問は - この動作が正常であると仮定するとき - トンネルがクラッシュしたときにルーティングテーブルを自動的に復元する方法は?これを行うための適切なフック(OpenVPNまたは一般的なネットワーキングパッケージ)がありますか?