
Ich habe in meinem lokalen Netzwerk einen Raspberry Pi (genannt , mit Jessie installiert) eingerichtet, blitzen
der als VPN-Gateway für alle Computer im lokalen Netzwerk fungiert, um auf das Internet zuzugreifen.
Ich verwende iptables
NAT für die OpenVPN-Verbindung ( tun0
) und leite Pakete von eth0
dort weiter. Ich verwende dnsmasq
DHCP, um alle Computer im Netzwerk so zu konfigurieren, dass sie diesen Server als Standardroute zum Internet verwenden.
Das funktioniert gut.
Wenn das ADSL-Modell jedoch abstürzt, habe ich ein Problem. OpenVPN bemerkt, dass es tun0
defekt ist und trennt die Verbindung. Anschließend versucht es, die Verbindung wiederherzustellen, scheitert jedoch, weil es den Hostnamen des VPN-Servers nicht auflösen kann:
Nov 3 17:27:20 blitzen ovpn-TunnelBearGermany[3020]: RESOLVE: Cannot resolve host address: de.tunnelbear-ios.com: Temporary failure in name resolution
Bei der Untersuchung stellte sich heraus, dass beim Abriss des Tunnels die alte Routentabelle aktiv bleibt:
$ 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
Wenn ich die Standardroute manuell entferne und sie so neu konfiguriere, dass sie auf das ADSL-Modem verweist, löst der Pi den VPN-Servernamen problemlos auf und stellt die Verbindung sofort wieder her. Alles kehrt in den normalen Zustand zurück.
Meine Frage ist – vorausgesetzt, dieses Verhalten ist normal – wie kann ich das Zurücksetzen der Routentabelle automatisieren, wenn der Tunnel zusammenbricht? Gibt es dafür einen entsprechenden Hook (in OpenVPN oder vielleicht im generischen Netzwerkpaket)?