在不稳定的无线网络上使用 openvpn 的路由表

在不稳定的无线网络上使用 openvpn 的路由表

我通过校园网络连接到互联网:IP 范围是,10.42.0.0/16一切都必须通过代理服务器10.42.0.42

我有时通过无线接入点连接到该网络,在本地 IP 范围内192.168.0.0/24,该无线路由器连接到校园网络。

我还使用基于 OpenVPN 的个人 VPN。我的 VPN IP 范围是10.8.0.0/24

当我连接到这个无线网络时,我的路由表是:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
192.168.1.0     0.0.0.0         255.255.255.0   U     304    0        0 wlan0

当我在此无线网络上启动 VPN 时:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.41       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
10.8.0.0        10.8.0.41       255.255.255.0   UG    0      0        0 tun0
10.8.0.41       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
128.0.0.0       10.8.0.41       128.0.0.0       UG    0      0        0 tun0
10.42.0.0       192.168.1.1     255.255.0.0     UG    0      0        0 wlan0
10.42.0.42      192.168.1.1     255.255.255.255 UGH   0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     304    0        0 wlan0

如您所见,我已经配置了我的 VPN,以便校园网络不会重定向到tun0,以便该私有区域中的服务器仍然可用。

但问题来了:无线网络不稳定(我对此无能为力),我经常断线又重新连接。在这个过程中,路由表中的所有条目都wlan0将被刷新,我的表格之后如下所示:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.41       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
10.8.0.0        10.8.0.41       255.255.255.0   UG    0      0        0 tun0
10.8.0.41       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
128.0.0.0       10.8.0.41       128.0.0.0       UG    0      0        0 tun0

什么都不起作用了:所有流量都重定向到 tun0,它不再存在,并且 openVPN 无法重新连接到我的服务器 ( No route to host.)。我发现的唯一解决方法是手动重启我的 OpenVPN 客户端。

是否有可能稳定这一点?如何稳定?

我在 Gentoo Linux 上运行,并使用 Wicd 管理我的网络。

答案1

您可以尝试以下方法。将这两行添加到您的客户端配置文件中:

 route-delay 2
 route-up "/path/to/shell/script.sh"

文件脚本(必须可执行)由单个命令组成:

 #!/bin/bash
 ip route add 10.42.0.0/24 via 192.168.1.1 dev wlan0

命令 route-delay 强制在设置所有路由后 2 秒内执行以下命令(您可以根据需要更改此时间);以下命令在每次启动路由时执行一个 shell 脚本,该脚本的唯一目的是重新添加特别指定您创建的路线。

答案2

可以使用 Wicd 脚本在重新建立无线连接时重新启动 OpenVPN。

只需创建一个可执行脚本来/etc/wicd/scripts/postconnect/restart-openvpn.sh检查 OpenVPN PID 文件是否存在,如果它已经启动,则重新启动它:

#!/bin/bash
[ -f /var/run/openvpn.pid ] && /etc/init.d/openvpn restart

相关内容