向 OpenVPN 客户端配置添加路由
OpenVPN 在客户端配置中支持按子网的 route 指令。NetRoute Pro 从任何网站的域名生成这些指令 — 添加到 .ovpn 中,几分钟内即可实现分流。
准备工作
- OpenVPN 2.4 或更高版本(客户端和服务器)
- 对
.ovpn配置文件的编辑权限 - 任何 OpenVPN 客户端:官方 OpenVPN Connect、Tunnelblick、Viscosity、openvpn CLI 等
- 已安装 NetRoute Pro Chrome 扩展
步骤 1. 在 NetRoute Pro 中生成 route 指令
- 在 Chrome 中打开目标网站
- 启动 NetRoute Pro,选择 OpenVPN 平台
- 点击 Analyze Website
- 复制输出 — 格式:每行一个 route 指令
route 104.21.32.0 255.255.255.0
route 172.67.0.0 255.255.0.0
route 198.41.128.0 255.255.128.0
提示:启用 RIPE BGP 优化 获得稳定的 BGP 公告前缀 — CDN IP 轮换时路由不会失效。
步骤 2. 编辑 .ovpn
- 用文本编辑器打开您的
.ovpn文件 - 删除
redirect-gateway def1(如果存在)— 该指令将所有流量路由到 VPN,会破坏分流 - 删除
push "redirect-gateway def1"(如果有) - 粘贴 route 指令到文件末尾 — 在
<cert>/<key>/<ca>块之前 - 保存文件
配置应类似:
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
# 选择性路由(由 NetRoute Pro 生成)
route 104.21.32.0 255.255.255.0
route 172.67.0.0 255.255.0.0
<ca>
...
</ca>
步骤 3. 重新连接 VPN
断开并重新连接客户端以应用新路由。OpenVPN 仅在连接时读取 route 指令 — 运行时更改不会生效。
替代方案:服务器端路由(用于管理员)
如果您控制 OpenVPN 服务器,可以将路由推送到所有客户端。在服务器配置中:
push "route 104.21.32.0 255.255.255.0"
push "route 172.67.0.0 255.255.0.0"
客户端连接时自动接收路由 — 无需编辑每个 .ovpn。
验证
连接后检查路由表:
- Windows:
route print - Linux / macOS:
ip route或netstat -rn
您应该看到子网指向 VPN tun 接口。
常见问题
--route 指令被忽略
检查配置中是否存在 route-nopull 或 --pull-filter — 它们会阻止应用路由。删除它们或仔细调整过滤器。
DNS 泄漏(Windows)
添加以下指令以防止 DNS 查询绕过 VPN:
block-outside-dns
路由已添加但流量未通过 VPN
通常表示 VPN 接口上没有 NAT — 需在服务器端修复。验证服务器配置中存在 push "route ..." 且 iptables/防火墙上启用了相应子网的 masquerade。