You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免OpenVPN Client充当默认网关并仅访问指定子网

解决OpenVPN仅路由特定子网且不覆盖本地DNS的配置方案

嘿,我之前也碰到过一模一样的问题——OpenVPN连上去就把所有流量和DNS都切去客户网络,结果连不上网关、没法正常上网,只能访问指定的白名单服务器。下面是针对Windows最新版OpenVPN GUI的具体解决步骤,直接修改你的.ovpn配置文件就行:

一、禁用全局路由,只让特定子网走VPN

很多默认的OpenVPN配置会加redirect-gateway def1这类参数,把所有流量都导向VPN,我们得把这个改掉:

  • 先打开你的.ovpn文件,找有没有redirect-gateway开头的行,有的话在行前面加个#注释掉,或者直接删掉
  • 然后手动添加你需要访问的目标子网路由,格式是:
    route [目标子网IP] [子网掩码]
    
    举个例子,如果你只需要访问192.168.10.0/24和10.0.5.0/24这两个子网,就加两行:
    route 192.168.10.0 255.255.255.0
    route 10.0.5.0 255.255.255.0
    
    这样设置后,只有这两个子网的流量会走VPN,其他所有流量还是用你本地的网络。

二、阻止OpenVPN替换你的本地DNS

默认配置会推送客户网络的DNS服务器,导致你没法解析非白名单的域名,我们可以强制保留自己的DNS设置:

  • 在.ovpn文件里加这两行:
    pull-filter ignore "dhcp-option DNS"
    dhcp-option DNS [你的本地DNS服务器IP]
    
    • 第一行pull-filter ignore "dhcp-option DNS"是告诉OpenVPN别管服务器推送的DNS配置
    • 第二行填你自己想用的DNS,比如本地路由器的IP(一般是192.168.1.1或者192.168.0.1),或者公共DNS比如8.8.8.8都行
  • 要是担心DNS设置残留,还可以再加一行:
    register-dns
    
    这会让Windows重新注册本地DNS,确保不会用VPN的DNS。

三、验证配置是否生效

改完保存后,重启OpenVPN GUI并连接VPN,然后做两个检查:

  • 打开命令提示符(按Win+R输cmd),输入route print,看路由表里是不是只有你指定的子网路由指向VPN的网关
  • 输入nslookup google.com,看返回的DNS服务器是不是你刚才设置的那个,而不是客户网络的DNS

额外小技巧

如果有些服务器会强制推送路由或DNS,上面的设置可能不够,那就在配置文件最顶部加一行:

route-nopull

这个参数会完全忽略服务器推送的所有路由和DNS,然后你再手动加需要的子网路由和DNS,这种方式更彻底。

内容的提问来源于stack exchange,提问作者Steve B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:05:29