Openvpn

openvpn 連接一段時間後所有連接都失去

  • November 28, 2015

我有一個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 

您覆蓋了通往真實網關的一種可能路徑:

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了通過tun0這是不可能的,因為 openvpn 想要與物理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 到 Internet,那麼您需要告訴核心它在哪裡可以再次找到真正的網關來傳遞流量。

引用自:https://unix.stackexchange.com/questions/245936