Linux
路由nopull的Openvpn問題
這是情況,我有:
- 公網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個就夠了。
希望這會有所幫助。