Linux

路由nopull的Openvpn問題

  • January 27, 2017

這是情況,我有:

  • 公網IP的vps
  • VPN服務
  • 擁有公網IP的路由器

如果我在沒有 route-nopull 的情況下連接 vpn(介面名稱 tunVPN),vps 會丟棄所有連接(如 ssh),因為它通過 vpn 提供商有新的預設網關。如果我在連接時使用 route-nopull 它連接但只是坐在那裡,我無法使用它(例如,如果我嘗試 ping -I tunVPN xxx.xxx 或將某些服務綁定到它)。

所以我的問題是我應該添加什麼路線來使這個 vpn 工作。

我什至嘗試將 openvpn 2.4 與 pool-filter 一起使用,但效果不佳。

這是使用 route-nopull 的路線:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
10.114.0.0      0.0.0.0         255.255.0.0     U     0      0        0 tunvpn
62.x.x.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0  
62.x.x.254      gateway         255.255.255.255 UGH   100    0        0 eth0

沒有路由nopull也一樣

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.114.0.1      128.0.0.0       UG    0      0        0 tunvpn
default         gateway         0.0.0.0         UG    100    0        0 eth0
10.114.0.0      0.0.0.0         255.255.0.0     U     0      0        0 tunvpn
62.x.x.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
62.x.x.254      gateway         255.255.255.255 UGH   100    0        0 eth0
128.0.0.0       10.114.0.1      128.0.0.1       UG    0      0        0 tunvpn
185.x.x.68      gateway         255.255.255.255 UGH   0      0        0 eth0

有什麼建議嗎?我不想只為某些流量使用 vpn :)

一段時間後,我設法解決了:兩個路由表

添加到 /etc/iproute2/rt_tables

# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep
1 rt2 

然後通過openvpn在連接時呼叫的up.sh腳本配置rt2(路由表2)

/usr/sbin/ip route add 0.0.0.0/0  dev tunvpn src $VPNADDR table rt2
/usr/sbin/ip rule add from $VPNADDR table rt2
/usr/sbin/ip rule add to $VPNADDR table rt2

在哪裡 $ VPNADDR is ip from vpn server usually $ 4個就夠了。

希望這會有所幫助。

引用自:https://serverfault.com/questions/828941