
He configurado una Raspberry Pi (llamada blitzen
, instalada con Jessie) en mi red local para que actúe como puerta de enlace VPN para que todas las computadoras de la red local accedan a Internet.
Estoy usando iptables
NAT para la conexión OpenVPN ( tun0
) y reenviar paquetes desde eth0
ella. Estoy usando dnsmasq
DHCP para configurar todas las computadoras en la red para usar este servidor como ruta predeterminada a Internet.
Esto funciona bien.
Sin embargo, si el modelo ADSL falla, tengo un problema. OpenVPN nota que tun0
está defectuoso y se desconecta. Luego intenta volver a conectarse pero falla porque no puede resolver el nombre de host del servidor VPN:
Nov 3 17:27:20 blitzen ovpn-TunnelBearGermany[3020]: RESOLVE: Cannot resolve host address: de.tunnelbear-ios.com: Temporary failure in name resolution
Investigando, parece que, cuando se derriba el túnel, la antigua tabla de rutas queda activa:
$ 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
Si elimino manualmente la ruta predeterminada y la vuelvo a configurar para que apunte al módem ADSL, entonces el Pi resuelve felizmente el nombre del servidor VPN y se vuelve a conectar inmediatamente. Todo vuelve al estado feliz.
Mi pregunta es, suponiendo que este comportamiento sea normal, ¿cómo puedo automatizar la reversión de la tabla de rutas cuando el túnel colapsa? ¿Existe un enlace apropiado (en OpenVPN, o quizás en el paquete de red genérico) para hacer esto?