windows不支持多个默认网关同时生效,仅依据跃点数(metric)最小的0.0.0.0/0路由转发流量;跃点数越小优先级越高,相同则行为不确定;可通过图形界面设接口跃点数、powershell set-netipinterface或route change命令调整。
windows 不支持多个默认网关“同时生效”,它只会从路由表中选一条 0.0.0.0/0 的默认路由转发所有未匹配的流量。跃点数(metric)就是决定这条路由被选中的关键——数值越小,优先级越高;若值相同,系统行为不确定(可能随机或轮询),容易导致访问异常。
要让双网卡各司其职(比如有线走内网、Wi-Fi走外网),核心是让它们生成的默认路由拥有明显差异的跃点数。以下是三种可靠、常用且互为补充的方法:
在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……
图形界面设接口跃点数(推荐新手)
这是最直观、持久、无需命令行基础的方式:
- 按 Win + R 输入
ncpa.cpl,回车打开网络连接 - 右键你要主用的网卡(如“以太网”),选「属性」→ 双击「Internet 协议版本 4 (TCP/IPv4)」→ 点「高级」
- 取消勾选「自动跃点」,在「接口跃点数」里填一个较小值,例如 10
- 对另一网卡(如“WLAN”)做同样操作,但填较大值,例如 30(差值建议 ≥10,避免临界混淆)
- 点确定逐级保存,无需重启,立即生效,且设置永久保留
PowerShell 精准控制 InterfaceMetric(推荐多网卡或批量管理)
命令更底层、更稳定,尤其适合网卡名含空格或中文、或需脚本部署的场景:
- 以管理员身份运行 PowerShell
- 运行:Get-NetIPInterface -AddressFamily IPv4 | ft InterfaceAlias,IfIndex,InterfaceMetric
- 找到目标网卡的 IfIndex(比如以太网是 12,Wi-Fi 是 5)
- 执行:Set-NetIPInterface -InterfaceIndex 12 -AddressFamily IPv4 -InterfaceMetric 5
- 再执行:Set-NetIPInterface -InterfaceIndex 5 -AddressFamily IPv4 -InterfaceMetric 30
- 设置后,系统后续自动生成的默认路由会直接继承该跃点值,比 route 命令干预更彻底
验证与排查要点
改完一定要确认效果是否符合预期:
- 管理员权限下运行:route print -4,重点看「网络目标」为
0.0.0.0的行,检查「跃点数」列是否已按设定区分 - 若发现两条默认路由跃点数仍相同,说明某张网卡没取消「自动跃点」,或 DHCP 重置了配置,需重新检查
- 不要手动删或加默认路由(如
route add 0.0.0.0),除非你明确需要静态策略路由;日常优先级控制只需调跃点数 - 内网明细路由(如
192.168.1.0/24)不用动,也不该动,它们不受跃点数影响
跃点数不是玄学,它是 Windows 路由决策的硬规则。设对了,内外网分流自然清晰;设反了或设模糊了,就容易出现网页打不开、内网服务器连不上、DNS 解析失败等看似不相关的问题。










