← 返回首页

向 OpenVPN 客户端配置添加路由

OpenVPN 在客户端配置中支持按子网的 route 指令。NetRoute Pro 从任何网站的域名生成这些指令 — 添加到 .ovpn 中,几分钟内即可实现分流。

准备工作

步骤 1. 在 NetRoute Pro 中生成 route 指令

  1. 在 Chrome 中打开目标网站
  2. 启动 NetRoute Pro,选择 OpenVPN 平台
  3. 点击 Analyze Website
  4. 复制输出 — 格式:每行一个 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

  1. 用文本编辑器打开您的 .ovpn 文件
  2. 删除 redirect-gateway def1(如果存在)— 该指令将所有流量路由到 VPN,会破坏分流
  3. 删除 push "redirect-gateway def1"(如果有)
  4. 粘贴 route 指令到文件末尾 — 在 <cert> / <key> / <ca> 块之前
  5. 保存文件

配置应类似:

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

验证

连接后检查路由表:

您应该看到子网指向 VPN tun 接口。

常见问题

--route 指令被忽略

检查配置中是否存在 route-nopull--pull-filter — 它们会阻止应用路由。删除它们或仔细调整过滤器。

DNS 泄漏(Windows)

添加以下指令以防止 DNS 查询绕过 VPN:

block-outside-dns

路由已添加但流量未通过 VPN

通常表示 VPN 接口上没有 NAT — 需在服务器端修复。验证服务器配置中存在 push "route ..." 且 iptables/防火墙上启用了相应子网的 masquerade。

官方文档

准备好尝试了吗?

NetRoute Pro — 免费的 Chrome 扩展,可从任何网站生成路由。

安装扩展