某日,在linux下使用vpn client连接对方vpn服务器,连接成功后,通过tracert测试发现路由并没有经过vpn出去。
主要是路由问题,正确的配置如下:
Destination Gateway Genmask Flags Metric Ref Use Iface
221.179.105.22 192.168.1.1 255.255.255.255 UGH 0 0 0 eth1
192.168.0.1 * 255.255.255.255 UH 0 0 0 ppp3
192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
default * 0.0.0.0 U 0 0 0 ppp3
default 192.168.1.1 0.0.0.0 UG 3 0 0 eth1
关键三条:
1 所有数据报文都从ppp3出去
route add default dev ppp3
2 原来的缺省路由需要降低优先级,当vpn宕了,同一样可以走默认路由正常上网
route del default gw 192.168.1.1
route add default gw 192.168.1.1 metric 3
3 经过ppp封装后的协议目的地址是221.179.105.22,此时封装后的报文一样要从eth1发送出去。
route add 221.179.105.22 gw 192.168.1.1 dev eth1
其中 221.179.105.22为VPN服务器地址