在某些时候,服务器下发的配置文件不一定是我们想要的,特别是我们本地网络环境复杂的情况下,我们并不希望 OpenVPN 代理我们的所有流量。我们希望内外网分开。

对于 OpenVPN 来说,默认是全局代理,也就是说,不管什么流量,他都会转发到代理服务器上。如果代理服务器下发的配置没有路由表,我们所有的路由都被转发了,在访问某些网站的时候特别慢,岂不是很难受?

因此,我们需要手动设置路由记录。

在 OpenVPN 的配置文件中有这样几条配置项。

一、route-nopull

当客户端加入这个参数后,openvpn 连接后不会请求远端路由表,就不会添加任何一条路由到本地路由表中。也就是不会有任何网络请求走OpenVPN 。相当于仅获取 IP 地址。

二、vpn_gateway

当客户端加入 route-nopull 后,因为没有路由表信息,所以没有出接口路由。但是我们可通过添加 route 记录和 vpn_gateway 参数使部分 IP 访问走 OpenVPN。

route   IP段          子网掩码        vpn_gateway
route   192.168.1.0   255.255.0.0     vpn_gateway
route   172.121.0.0   255.255.0.0     vpn_gateway

三、net_gateway

这个参数和 vpn_gateway 相反,在默认出去的访问全部走 Openvpn 时,强制部分 IP 访问不通过 OpenVPN 代理。

route   IP段          子网掩码      net_gateway
route   172.121.0.0   255.255.0.0   net_gateway

四、max-routes

该参数表示可以添加路由的条数,OpenVPN 默认只允许添加100条路由,如果需要添加的路由数少于100可不加这个参数。

max-routes 1000

一般来说,默认这些参数设置就足够了。但是有的时候,你架不住对端服务器下发的参数奇葩。虽然加了route-nopull 参数某种程度上来说,的确是拒绝了远端下发路由表。但是 metric 这个参数还是接收的。这一次碰到了一个奇葩的问题。明明设置需要代理的路由表,但是 OpenVPN 启动后仍然是全局代理。检查了系统路由表后发现:

default via 172.19.3.221 dev tun0 proto static metric 50 
default via 192.168.10.1 dev enp3s0 proto dhcp metric 100 
58.154.160.0/19 via 172.19.3.221 dev tun0 metric 50 
58.154.192.0/18 via 172.19.3.221 dev tun0 metric 50 
58.195.85.192/28 via 172.19.3.221 dev tun0 metric 50 
58.200.30.128/25 via 172.19.3.221 dev tun0 metric 50 
118.202.0.0/19 via 172.19.3.221 dev tun0 metric 50 
118.202.32.0/20 via 172.19.3.221 dev tun0 metric 50 
172.19.3.221 dev tun0 proto kernel scope link src 172.19.3.222 
192.168.10.0/24 dev enp3s0 proto kernel scope link src 192.168.10.132 metric 100 
202.118.0.0/19 via 172.19.3.221 dev tun0 metric 50 
202.199.0.0/20 via 172.19.3.221 dev tun0 metric 50 
202.206.16.0/21 via 172.19.3.221 dev tun0 metric 50 
210.30.192.0/20 via 172.19.3.221 dev tun0 metric 50 
210.30.199.12 via 192.168.10.1 dev enp3s0 metric 50 
211.137.22.128/25 via 172.19.3.221 dev tun0 metric 50 
219.216.64.0/18 via 172.19.3.221 dev tun0 metric 50

就因为 OpenVPN 设置的 metric 比系统获取的少,导致路由选择时优先级比较高,系统默认代理出口。

查了半天,在某个不知名的小角落查到了资料,OpenVPN 有个设置是 route-metric。这个参数设置了路由的跳数。修改完,终于可以内外网分开代理了。(小声BB这个有毒的 OpenVPN 服务器是东北大学的回校 VPN

附东北大学OpenVPN配置(学生版)

client
dev tun
proto tcp

route-nopull
route-metric 150
route remote_host 255.255.255.255 net_gateway
route 58.154.160.0 255.255.224.0 vpn_gateway
route 58.154.192.0 255.255.192.0 vpn_gateway
route 58.195.85.192 255.255.255.240 vpn_gateway
route 58.200.30.128 255.255.255.128 vpn_gateway
route 118.202.0.0 255.255.224.0 vpn_gateway
route 118.202.32.0 255.255.240.0 vpn_gateway
route 202.118.0.0 255.255.224.0 vpn_gateway
route 202.199.0.0 255.255.240.0 vpn_gateway
route 202.206.16.0 255.255.248.0 vpn_gateway
route 210.30.192.0 255.255.240.0 vpn_gateway
route 219.216.64.0 255.255.192.0 vpn_gateway
route 211.137.22.128 255.255.255.128 vpn_gateway

remote stu.vpnhost.neu.edu.cn 80
remote stu.vpnhost.neu.edu.cn 443
remote stu.vpnhost.neu.edu.cn 587
remote stu.vpnhost.neu.edu.cn 8080
remote-random
resolv-retry infinite
nobind
persist-key
auth-user-pass
key-direction 1
comp-lzo
verb 4

<ca>
-----BEGIN CERTIFICATE-----
MIID7DCCA1WgAwIBAgIJAJ9/TNMqfanAMA0GCSqGSIb3DQEBBQUAMIGrMQswCQYD
VQQGEwJDTjERMA8GA1UECBMITGlhb05pbmcxETAPBgNVBAcTCFNoZW5ZYW5nMR8w
HQYDVQQKExZOb3J0aGVhc3Rlcm5Vbml2ZXJzaXR5MRYwFAYDVQQLEw1OZXR3b3Jr
Q2VudGVyMRcwFQYDVQQDEw52cG4ubmV1LmVkdS5jbjEkMCIGCSqGSIb3DQEJARYV
bGl1eGZAbWFpbC5uZXUuZWR1LmNuMB4XDTE0MTIxMTE1MDU1MVoXDTI0MTIwODE1
MDU1MVowgasxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhMaWFvTmluZzERMA8GA1UE
BxMIU2hlbllhbmcxHzAdBgNVBAoTFk5vcnRoZWFzdGVyblVuaXZlcnNpdHkxFjAU
BgNVBAsTDU5ldHdvcmtDZW50ZXIxFzAVBgNVBAMTDnZwbi5uZXUuZWR1LmNuMSQw
IgYJKoZIhvcNAQkBFhVsaXV4ZkBtYWlsLm5ldS5lZHUuY24wgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBAMGDguNU1Pc1Nq/k1/5ddKzTRJzzJLiTzJ0PXFkPF8jB
j7aZjFGhYFAQn9mvQJaNlJj0wmRiGo9iOmnDz44fzJFdOXbztSZEfdf7sPXJ/iKE
c85vypSnvc4w/jhaRso/DfjtDbu99t+pV9tszdYDXhRlxrGb1faEk74lr0U4elWN
AgMBAAGjggEUMIIBEDAdBgNVHQ4EFgQUlAYkj+698qB+5o85wRZ24HCCRdMwgeAG
A1UdIwSB2DCB1YAUlAYkj+698qB+5o85wRZ24HCCRdOhgbGkga4wgasxCzAJBgNV
BAYTAkNOMREwDwYDVQQIEwhMaWFvTmluZzERMA8GA1UEBxMIU2hlbllhbmcxHzAd
BgNVBAoTFk5vcnRoZWFzdGVyblVuaXZlcnNpdHkxFjAUBgNVBAsTDU5ldHdvcmtD
ZW50ZXIxFzAVBgNVBAMTDnZwbi5uZXUuZWR1LmNuMSQwIgYJKoZIhvcNAQkBFhVs
aXV4ZkBtYWlsLm5ldS5lZHUuY26CCQCff0zTKn2pwDAMBgNVHRMEBTADAQH/MA0G
CSqGSIb3DQEBBQUAA4GBAEwZtW+W0Ez0LYAXwJ/ZVp3BoMjCTCBzIu7FE/ZlxJD4
vOkEVIArh60kwjRqyrZ2vMIU0DZQBhi9hiSlVMxpq9EinS+iOUEq+Oee8t7EsdDB
NsFCc30dKhu9uJK0PzAgozrz6GZecZWpa+yH1vHyloGDL1teNcguKAwRDN/+R5Ru
-----END CERTIFICATE-----
</ca>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
e1311001c2a3aad3681c57c555303984
d8ab5853e9fd3657db559942ee2a5016
7cb233c733569e4eed468c03d24274b4
67a8254450be008aa6dacf071c648324
bebb38e96b294e4ea02b674916f2e802
8ad98efaf3afb6f75da3854412e87712
1d805309803a1950252705a25c4023c4
8558ce6ecdaedd40ed99d7a441c5c36c
9b604d56757403233c1f04bbe35ffda5
7b79b3ce1fc35f4838def04386e22a38
0ddbd2c88148d43f7f5523919b8ef17a
a198566fe25768a90b8730292d2cee9c
b3dabacc4c47f088bb5110902ec0c57e
0722aff061ad10174a1978cae83bfd47
66ebbe8130e0a4c77080e035ee9c961e
263eacf686c326521131dfd415417134
-----END OpenVPN Static key V1-----
</tls-auth>

参考链接:Openvpn客户端路由配置

说点什么
支持Markdown语法
在"OpenVPN 路由设置"已有6条评论
Loading...