OpenVPN的路由策略可以在客户端配置,也可以在服务端配置。不过个人不推荐在服务端配置,这样会比较限制用户使用的灵活性。所以本文只讲客户端配置路由策略的方式

先贴一下默认的demo.ovpn部分配置:

client
dev tun
proto udp
remote 1.1.1.1 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3

# 证书略

下面是几个比较重要的点

  • 🚀 当我们需要自定义路由策略的时候需要添加route-nopull拒绝服务端push的策略。
  • 🚨block-outside-dns配置项会阻止tap/tun以外的所有网络接口的DNS请求,会影响规则外的网站访问,所以需要删除此配置项。
  • ⚠️默认可写入100条路由规则,如果不够用则使用max-routes 1000定义为最大1000条甚至更多,看个人需求。
  • 🚩vpn_gatewaynet_gateway是相反的策略,前者表示:默认走本地网络,指定的规则会走openvpn;后者表示:默认走openvpn,指定规则走本地网络。
  • 🌈配置示例:route 10.0.0.0 255.255.240.0 vpn_gateway或者route 10.0.0.0 255.255.240.0 net_gateway

修改之后的配置文件大概是下面这样:

client
dev tun
proto udp
route-nopull
route 10.0.0.0 255.255.240.0 vpn_gateway # 按照自己实际需求添加子网
route 60.12.0.0 255.255.0.0 vpn_gateway # 我这里只有两条自定义规则所以无需配置max-routes
remote 1.1.1.1 1194 # 按照自己的服务端IP和端口进行配置【可为域名或IP】
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
# block-outside-dns # 此项需要被注释掉或者直接删除即可
verb 3

# 证书略

⛄在Windows上如果使用OpenVPN GUI客户端可以直接右键进行修改连接的配置文件。也推荐在Windows上面使用 OpenVPN GUI 体验上更好。

⛄在Mac OS上使用 Tunnelblick 或者 OpenVPN官方客户端 体验上个人感觉都差不多。