当 VPN 隧道损坏时,OpenVPN 似乎不会清除路由表

当 VPN 隧道损坏时,OpenVPN 似乎不会清除路由表

我在本地网络上设置了一个 Raspberry Pi(名为blitzen,与 Jessie 一起安装)作为 VPN 网关,供本地网络上的所有计算机用来访问互联网。

我正在使用iptablesNAT OpenVPN 连接 ( tun0) 并将数据包转发到eth0它。我正在使用dnsmasqDHCP 来配置网络上的所有计算机,以使用该服务器作为 Internet 的默认路由。

这效果很好。

但是,如果 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 中,或者可能在通用网络包中)来执行此操作?

相关内容