修改前
最开始连接OpenVPN后,通过shell打印路由表后看到,所有的流量都走了192.168.255.97这个网关。
在百度中查看ip,发现也确实是该VPN所在的ip。
如果全部流量走VPN的话,各个软件都会提示异地登陆,有诸多不便。而且我仅仅需要10.101.232.x这些走VPN就可以了。
猜测主要原因是因为从服务器拉取了路由表,自然所有的流量都通过OpenVPN的网关。
解决方法
研究了一下OpenVPN的配置文件,作出如下修改:
# 在remote ip port 这行后面加入
route 10.101.232.0 255.255.255.0
# 文件末尾注释掉,防止所有网络都走VPN服务器, 如果想全部流量通过VPN则添加这一行。
# redirect-gateway def1
# 添加下面一行,不从服务器拉取路由表
route-nopull
完整配置如下(证书和密钥已删除),其他配置可以参考修改:
client
nobind
dev tun
remote-cert-tls server
remote 103.94.20.157 5000 tcp
route 10.101.232.0 255.255.255.0
<key>
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
</key>
<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN Static key V1-----
</tls-auth>
route-nopull
#redirect-gateway def1
上面的配置文件修改完成后,可能会出现连接VPN无法解析域名的问题。
检查发现是本地的宽带连接设置了自动获取ip和dns,没有设置固定的DNS域名解析服务器地址。
手动修改为固定的ip、dns后成功(右键小电脑->打开"网络和Internet"设置->更改适配器设置->右键以太网/无线网->属性->Internet协议版本(TCP/ipv4)-> DNS 设置为114.114.114.114或8.8.8.8)。
修改后
现在的路由表
现在的ip
可以看到已经都变成连接VPN之前的,也就表示着成功了。