Windows内外网双网卡路由设置:一文看懂静态路由与默认路由分流 如果你在工位上同时插着网线、又连着WiFi十有八九遇到过一个非常诡异的场景有线网口能访问公司内网系统但网页就是打不开拔掉网线只连WiFi外网秒开可内网那台服务器又怎么都ping不通。很多人第一反应是网卡坏了、网线坏了或者是公司网络限制折腾半天才发现问题出在Windows的路由表上。这个问题的本质是电脑同时拥有两条“默认出口”但系统只会挑一条来用。你想要的其实是“内网流量走有线、外网流量走WiFi”也就是把内网和外网按需求分流。这篇文章就专门讲这件事把原理、命令、常见坑一次说清楚适合企业办公、开发调试、运维排障以及学校宿舍里既要访问校园内网资源、又要正常上公网的同学。1. 插着网线就断外网问题出在默认路由1.1 一条默认路由是怎么“抢走”所有流量的电脑发任何一个网络请求靠的是路由表。路由表就像一个路牌目标IP是某个具体网段就往对应方向走目标IP没匹配到任何具体条目就往“默认路由”走。当电脑只有WiFi时路由表很干净一条默认路由指向WiFi网关所有流量全部走无线。一旦你插上网线有线网卡通常会拿到自己的IP和网关Windows会自动给有线网卡也生成一条默认路由。这时候路由表里出现了两条“默认路由”电脑必须选一条作为默认出口。Win10、Win11选哪一条不是看心情而是看接口的“跃点数”Metric。跃点数越小优先级越高而Windows默认情况下更偏爱有线连接所以插上网线后默认流量基本都被拉到了有线网卡。如果你的内网网关是隔离的、出不了公网那结果就是内网能访问外网全断。反过来如果你把WiFi设为默认出口内网那条路由又没了因为有线网卡的默认路由被系统压住流量都往WiFi网关走而WiFi网关又到不了内网网段于是内网又打不开了。1.2 跃点数Windows无声的“裁判”我刚接触这个问题时想的是“手动改跃点数”。在网卡的高级TCP/IP设置里取消“自动跃点”填一个固定值你就可以干预系统选择默认路由的方向。简单说跃点数越小越优先。如果你希望默认流量走WiFi就把WiFi网卡的跃点数设小一点比如10把有线网卡的跃点数设大一点比如20。这样系统会优先把默认路由挂在WiFi上有线网卡就算插着也不会抢默认出口。但只改跃点数还不够还需要让“去往某个内网网段”的流量明确走有线网卡。否则默认流量走WiFi没问题可内网流量也会因为匹配不到精确路由、被扔给WiFi网关还是到不了内网。1.3 哪些场景最需要内外网同时在线先对号入座一下再往下操作。最典型的三类场景企业办公网工位网口接的是公司内网只能访问OA、代码仓库、内部数据库日常查资料、看文档需要走WiFi外网。研发和运维开发环境在内网npm、pip、GitHub、搜索引擎都在外网频繁来回切网络非常影响效率。校园网络宿舍有线口登录校园网后访问知网、校内BBS、实验平台WiFi用于日常上网两个网都不想断。这类需求有个通用解法给“需要走内网”的网段添加静态路由让精确网段优先匹配同时把默认路由留给外网网卡。后面所有步骤都围绕这个核心思路展开。2. 动手之前先把网络信息盘清楚2.1 记录内网IP、掩码和网关在改配置之前先按几下键盘记录网络信息这步千万别跳。用WinR打开运行窗口输入cmd然后执行ipconfig /all重点看有线网卡以太网这一段记录四样东西IPv4地址、子网掩码、默认网关、DNS服务器。举个例子有线网卡拿到的是192.168.10.50掩码255.255.255.0网关192.168.10.1说明你所在的内网网段大概率就是192.168.10.0/24。只要访问目标在这个网段内就应该走有线。这里容易犯一个错误默认网关的来源。如果内网是DHCP自动分配的网卡上一般会自动填好网关这条网关会生成一条默认路由和WiFi产生冲突。所以我后面建议手动把有线网卡的“默认网关”留空只填IP和掩码。2.2 记录外网网关和DNS同样用ipconfig /all看无线网卡WLAN这一段。通常WiFi是自动获取IPIPv4地址可能是192.168.50.100默认网关192.168.50.1。DNS建议也记下来因为某些内网环境下系统自动分配的DNS可能指向内网DNS服务器解析公网域名反而很慢或失败。如果发现外网能通但域名打不开可以把DNS改成公共DNS或者在内网网卡和外网网卡上分别设置对应环境的DNS。2.3 判断你该按网段分流还是按IP分流这是很多教程没有讲清楚的分叉点。静态路由不是只能加一条你可以根据内网规模选择内网是一整个网段比如192.168.10.0/24、10.0.0.0/8那就加“网段路由”一条能覆盖一片。内网只有一两个固定IP比如10.0.3.5是服务器、10.0.3.6是打印机那就加“单机路由”掩码用255.255.255.255精确到单个IP。内网跨多个网段那就一条一条加但要注意别把内网的默认路由加得太大比如直接加一条0.0.0.0/0那就等于把默认出口又抢回有线网卡了前功尽弃。判断技巧其实很简单先ping一下目标内网地址再看它属于哪个网段或者直接问内网管理员要网段表。最怕的就是想当然把内网范围写太大结果所有流量都跑去内网网关外网又断了。3. Windows内外网双网并用实操步骤3.1 网卡设置固定IP、网关留空先操作有线网卡让它只负责内网通信不掺和默认路由。打开“控制面板 - 网络和共享中心 - 更改适配器设置”找到“以太网”右键属性双击“Internet协议版本4TCP/IPv4”。这里有两种情况。如果内网要求静态IP那就手动填IP、子网掩码默认网关留空DNS按需填。如果内网是DHCP可以先让网卡自动获取确认能正常访问内网后再把这几个值手动填进去同样网关留空。重点说一句默认网关留空是为了不在路由表里生成第二条0.0.0.0/0默认路由。静态路由的下一跳网关和网卡上是否填写默认网关没有必然关系后面用route add命令时只要内网网卡能和网关通信即可。对于WiFi网卡不用做太多改动保持自动获取IP和网关让它作为默认流量的出口。3.2 管理员命令添加静态路由找到“命令提示符”右键选择“以管理员身份运行”。不管理员运行会提示“请求的操作需要提升”命令不会生效。先查看当前路由表确认一下两条默认路由和网卡接口编号route print -4输出里你会看到Interace List记下有线网卡对应的接口编号比如18。然后在路由表部分注意有没有两条0.0.0.0 mask 0.0.0.0开头的路由。如果只有一条说明有线网卡没有生成默认路由这是最理想状态。接着添加静态路由让内网网段走有线网关。例如内网网段是192.168.10.0/24有线网关是192.168.10.1route add 192.168.10.0 mask 255.255.255.0 192.168.10.1 -p参数含义192.168.10.0是目标网段mask后面是该网段的子网掩码192.168.10.1是下一跳网关-p表示持久化保存重启不会丢。如果内网有多个网段比如还有10.0.0.0/8那就继续加route add 10.0.0.0 mask 255.0.0.0 192.168.10.1 -p这里网关通常指向同一个有线网关如果你的内网跨了VLAN可能需要让网关变成对应网段的三层接口地址这个找内网管理员确认即可。3.3 验证和设置开机持久化添加完成后先验证路由是否生效route print -4找到Network Destination为192.168.10.0的那条确认Gateway是192.168.10.1Metri的值会显示一个数字因为是用-p添加的持久路由它也能正常显示。然后直接ping内网地址和外网地址ping 192.168.10.50 ping baidu.com两条都通说明静态路由和默认路由各司其职内外网同时在线已经搞定了。如果外网ping不通先看看是不是默认路由跑到了有线网卡上用route print -4确认。如果确实有线网卡的默认路由还在用下面的命令删掉它但要把“接口编号”换成有线网卡实际的编号route delete 0.0.0.0 mask 0.0.0.0 if 18这个命令会把有线网卡上那条默认路由删掉之后再ping外网通常就恢复了。3.4 内网只有一两个IP时的精简写法有些场景内网没有大网段只有几台固定IP设备比如NAS、打印机、测试服务器。这时候加整段路由反而会有风险可用单机路由精确指定。假设内网服务器IP是10.0.3.5网关是10.0.3.1route add 10.0.3.5 mask 255.255.255.255 10.0.3.1 -p再看内网打印机是10.0.3.6继续加一条route add 10.0.3.6 mask 255.255.255.255 10.0.3.1 -p这种写法的好处是除了这两个目标IP其他流量一律走外网WiFi完全不影响日常上网。缺点是如果你要频繁新增设备需要不停维护路由条目所以还是建议优先按网段规划。4. Linux与银河麒麟双网卡分流4.1 临时生效的ip route命令如果你使用的是Ubuntu、Deepin、银河麒麟这类Linux系统思路完全一样但命令换成了ip route。先用命令查看当前路由ip route你会看到default via后面跟着一个网关可能是有线网卡也可能是无线网卡。添加静态路由的写法sudo ip route add 192.168.10.0/24 via 192.168.10.1 dev eth0其中eth0是有线网卡的接口名根据你的机器可能是eno1、ens33等用ip link查看确认。如果内网是单机IPsudo ip route add 10.0.3.5/32 via 10.0.3.1 dev eth0这类命令重启后会丢只是临时生效。建议在调试阶段先用这种方式试确认可行再写持久化配置。4.2 用netplan做持久化配置Ubuntu 22.04、24.04等新版本默认用netplan配置文件在/etc/netplan/下面通常是01-network-manager-all.yaml或类似名字。编辑时要用sudo权限。一个典型的双网卡配置可以这样写network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: false addresses: - 192.168.10.50/24 routes: - to: 192.168.10.0/24 via: 192.168.10.1 wifis: wlan0: dhcp4: true注意这里eth0没有设置gateway4因为不希望对整个系统生成默认路由只通过routes字段精确指定内网段。保存后执行sudo netplan apply再用ip route查看确认默认路由在wlan0上内网路由在eth0上然后ping验证。4.3 双网关带来的坑Linux系统里有一个比Windows更容易踩的坑如果你在图形界面里给有线网卡也填了网关NetworkManager会自动生成default路由。两个默认网关同时存在系统按metric选择一个但经常不是你想要的那个。我实际排障时见过一种情况系统route表里有两个default一个metric 100走有线一个metric 600走无线看起来有线优先级更高但内网网关根本出不了公网于是外网全断。处理办法有两个。一是直接删除有线网卡的默认路由sudo ip route del default via 192.168.10.1 dev eth0二是把默认路由的策略设清楚在netplan的wlan0配置里显式加gateway4并在eth0配置里只写静态路由不写gateway最大程度避免系统自动生成两条默认路由。如果遇到WiFi图标都找不到的情况比如Ubuntu 22.04下无线网卡被识别为unclaimed或者银河麒麟V10装不上AX211的WiFi驱动那就先解决驱动问题再配置路由。驱动没起来WiFi网卡都不存在分流也就无从谈起。5. 常见问题与排查技巧实录5.1 加了静态路由内网还是不通这种情况我踩过很多次排查顺序很重要。第一件事ping网关确认本机到内网网关是通的ping 192.168.10.1如果不通说明有线网卡的IP、掩码或者网线物理链路有问题静态路由写得再好也没用。第二件事确认路由的掩码没写错。比如内网实际是10.0.0.0/8你却写成10.0.0.0/24那么目标10.0.8.8就不会匹配到这条路由。第三件事确认内网设备开启了防火墙允许规则。很多内网服务器默认拒绝来自非内网网段的ping这个和本机路由无关。5.2 一插网线WiFi就被挤掉线有同事问我为什么插上网线后WiFi图标直接变成“已禁用”。这不一定是你路由配置的问题更可能是Windows的网络管理机制认为有线连接更稳定主动把无线网卡切掉了。解决方法是到“设备管理器 - 网络适配器 - 无线网卡 - 右键属性 - 电源管理”取消勾选“允许计算机关闭此设备以节约电源”。然后到“高级”选项卡找到类似“Preferred Band”或“Concurrent Connection”的设置项不同网卡命名不同把“同时支持有线无线”的功能打开。另外某些电脑管家类软件也会自动禁用无线需要到对应软件的网络优化设置里关掉。5.3 浏览器访问内网IP被代理拦截静态路由配置好了命令行里ping内网正常但浏览器输入内网地址还是打不开。这种情况十有八九是“系统代理”在捣乱。打开“设置 - 网络和Internet - 代理”如果“使用代理服务器”开着把“请勿对以下列条目使用代理服务器”里的“例外”加上内网IP或网段比如192.168.10.*也可以把内网域名写进去。有些浏览器自带代理插件也要在插件里设置绕过列表。这个问题的表现很典型curl在命令行能访问浏览器不行基本都是代理规则拦截而不是路由问题。5.4 重启后路由丢失如果你用了-p参数添加静态路由正常情况下重启不会丢。但如果用的是不带-p的route add命令那只要重启或者网卡被重新插拔新增路由就会消失。排查时先确认一下route print -4看看那条内网路由还在不在。如果不在说明之前添加时没加-p。重新添加一次并记住加-p即可。如果加了-p仍然丢失很可能是某安全软件或网络管理软件在启动时重置了路由表。解决办法是把添加路由的命令写成一个批处理脚本放到开机启动目录里或者通过任务计划程序设置开机执行。脚本很简单route add 192.168.10.0 mask 255.255.255.0 192.168.10.1 -p5.5 一键切换脚本省下反复敲命令实际办公中你可能会在不同网络环境之间切换今天在办公室要内外网分流明天出差只需要WiFi后天在客户现场又要另一套内网段。手动一条一条改路由太累建议写一个切换脚本。Windows下可以写一个批处理脚本内容大致这样echo off :: 删除旧的静态路由按需改成你的网段 route delete 192.168.10.0 mask 255.255.255.0 192.168.10.1 :: 添加内网静态路由 route add 192.168.10.0 mask 255.255.255.0 192.168.10.1 -p :: 查看结果 route print -4 pause再用管理员身份运行或者建一个快捷方式并勾选“以管理员身份运行”。以后只需要双击脚本就完成一轮路由修正。Linux下可以写一个shell脚本#!/bin/bash sudo ip route add 192.168.10.0/24 via 192.168.10.1 dev eth0 ip route我在实际项目里还会把各个环境的网段表以注释形式写进脚本防止换一台电脑就忘了当时怎么配的。比如:: 办公室内网: 192.168.10.0/24, 网关192.168.10.1 :: 客户内网: 10.12.0.0/16, 网关10.12.0.1几个月后回头看脚本里这些注释能帮你省下大量回忆时间。最后再分享一个小技巧如果你要在内网服务器之间频繁复制文件或者用RaiDrive这类工具挂载内网NAS建议把它们都规划进同一段网段路由不要用单个IP方式零散添加。网段口径一致路由表才干净后续问题也好排查。毕竟双网同时用的核心从来不是一条命令而是把网络规划想清楚。