我有一个openvpn在windows7中工作完美,但是在我的ubuntu OpenVPN 2.3.7中,它很奇怪。我可以登录 openvpn,并连接到我的 vpn 网络,浏览互联网。但几分钟后,所有连接都停止了,甚至我的路由器本地默认网关(192.168.1.1)也丢失了。
#> ip route show # this is after openvpn connected
default via 10.89.0.153 dev tun0 proto static metric 50
default via 192.168.1.1 dev wlan0 proto static metric 600
10.10.1.0/24 via 10.89.0.153 dev tun0 proto static metric 50
10.16.128.0/24 via 10.89.0.153 dev tun0 proto static metric 50
10.16.129.0/24 via 10.89.0.153 dev tun0 proto static metric 50
10.82.1.0/24 via 10.89.0.153 dev tun0 proto static metric 50
10.89.0.0/24 via 10.89.0.153 dev tun0 proto static metric 50
10.89.0.153 dev tun0 proto kernel scope link src 10.89.0.154
10.89.0.153 dev tun0 proto static scope link metric 950
10.89.0.154 dev tun0 proto kernel scope link src 10.89.0.154 metric 50
172.16.50.0/24 via 10.89.0.153 dev tun0 proto static metric 50
172.16.128.0/24 via 10.89.0.153 dev tun0 proto static metric 50
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1
172.17.0.0/16 via 10.89.0.153 dev tun0 proto static metric 50
192.168.1.0/24 via 10.89.0.153 dev tun0 proto static metric 50
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.110 metric 600
192.168.2.0/24 via 10.89.0.153 dev tun0 proto static metric 50
192.168.3.0/24 via 10.89.0.153 dev tun0 proto static metric 50
192.168.69.0/24 via 10.89.0.153 dev tun0 proto static metric 50
192.168.89.0/24 via 10.89.0.153 dev tun0 proto static metric 50
192.168.99.0/24 via 10.89.0.153 dev tun0 proto static metric 50
192.168.102.0/24 via 10.89.0.153 dev tun0 proto static metric 50
192.168.109.0/24 via 10.89.0.153 dev tun0 proto static metric 50
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
221.123.111.254 via 192.168.1.1 dev wlan0 proto static metric 600
当我 ping 我的默认网关(我的路由器)时,您可以看到,时间突然飙升,它发生在 openvpn 连接几分钟后。
64 bytes from 192.168.1.1: icmp_seq=154 ttl=253 time=28.6 ms
64 bytes from 192.168.1.1: icmp_seq=155 ttl=253 time=27.8 ms
64 bytes from 192.168.1.1: icmp_seq=156 ttl=253 time=30.6 ms
64 bytes from 192.168.1.1: icmp_seq=157 ttl=253 time=29.3 ms
64 bytes from 192.168.1.1: icmp_seq=158 ttl=253 time=28.8 ms
64 bytes from 192.168.1.1: icmp_seq=161 ttl=253 time=30.1 ms
64 bytes from 192.168.1.1: icmp_seq=164 ttl=253 time=71935 ms
64 bytes from 192.168.1.1: icmp_seq=165 ttl=253 time=70965 ms
64 bytes from 192.168.1.1: icmp_seq=166 ttl=253 time=69985 ms
64 bytes from 192.168.1.1: icmp_seq=167 ttl=253 time=68977 ms
64 bytes from 192.168.1.1: icmp_seq=168 ttl=253 time=67969 ms
64 bytes from 192.168.1.1: icmp_seq=169 ttl=253 time=66961 ms
64 bytes from 192.168.1.1: icmp_seq=170 ttl=253 time=65984 ms
我的 openvpn 设置文件:cat client.ovpn
client
remote 221.123.111.254
proto tcp
dev tun
ca ca.crt
comp-lzo
persist-key
persist-tun
verb 3
route-delay 2
route-method exe
我在 openvpn 连接建立后得到了这个:
~$ ip r get 192.168.1.1
192.168.1.1 via 10.89.0.153 dev tun0 src 10.89.0.154
cache
答案1
您覆盖通往真实网关的一条可能路径:
default via 10.89.0.153 dev tun0 proto static metric 50
其优先级高于您的实际默认路由,并且
192.168.1.0/24 via 10.89.0.153 dev tun0 proto static metric 50
这对您的设置毫无用处并且可能有害。
这两条路由都重新定义为不可能192.168.1.1
通过的,因为 openvpn 希望与物理流量交换真实流量,但不与虚拟流量(如果存在)交换。tun0
192.168.1.1
但是,删除192.168.1.0/24 tun0
并不能解决您的问题,您应该添加一条显式路线,该路线将192.168.1.1
再次重新定义以通过您的真实界面:
ip r add 192.168.1.1/32 dev wlan0
请记住,一旦您(或任何 VPN 程序)重新定义默认路由以让您通过 VPN 访问互联网,那么您需要告诉内核在哪里可以再次找到真正的网关来传递流量。