ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

双网卡同时上内外网?Windows路由表配置与排障全攻略

双网卡同时上内外网?Windows路由表配置与排障全攻略 双网卡同时上内外网这个问题几乎每个在公司干过运维、或者家里有NAS又不想断网的同事都遇到过。最常见的画面是台式机插了一根办公网的网线能访问公司OA和内部系统但连不上互联网再插一张无线网卡连WiFi结果要么内网访问时断时续要么干脆默认所有流量都走了无线办公网反而连不上。我接手处理过的这类问题少说也有几十次绝大多数都不是硬件故障而是Windows路由表的“默认路由”在互抢。这篇文章就把双网卡配内外网的原理讲清楚再给一套可直接照抄的配置方案和排障流程覆盖固定IP和DHCP两种常见办公场景。核心思路其实只有一句话让发往内网网段的数据包走办公网卡其余流量全部走互联网网卡并保证两条路由不打架。后面所有操作都是在为这句话服务。1. 为什么双网卡默认会“打架”路由表与网关的选择逻辑要理解双网卡为什么默认不行先得弄清楚Windows在发一个数据包时是怎么决定要走哪张网卡的。很多人以为是“哪张网卡先插就优先哪张”这个理解不完整真正起决定作用的是路由表。1.1 一个典型场景拆解先说个最典型的环境。我处理过一家制造企业的办公网络公司机房里有ERP服务器、文件服务器和视频监控网段是192.168.10.0/24网关是192.168.10.1只允许接入办公网线的设备访问员工还要用钉钉、查资料、连互联网通过无线网卡连到访客WiFi网段是172.16.20.0/24网关是172.16.20.1。插上网线后Windows会自动给有线网卡加一条默认路由目的网络0.0.0.0/0网关192.168.10.1接口是有线网卡。连上WiFi后Windows又会给无线网卡加一条默认路由目的网络0.0.0.0/0网关172.16.20.1接口是无线网卡。问题就在这儿两条默认路由的目标网段完全相同都是“所有目标”Windows只能选一条生效另一条虽然显示在路由表里优先级却很低基本等于摆设。1.2 路由优先级是怎么排的Windows路由选择的核心规则是最长前缀匹配优先前缀长度相同的情况下跃点Metric越小越优先。默认路由的前缀长度都是0所以两条默认路由的“长度匹配”完全相同。这时候系统比较跃点跃点值小的获胜。这个跃点值是Windows根据网卡速度自动计算出来的还叠加了管理员手动设置的接口跃点。实测中千兆有线网卡的自动跃点通常比无线网卡小因为无线延迟高、速率不稳定系统会认为有线更“可靠”于是默认路由获胜的是有线网卡。结果就是你插了网线后所有流量都走办公网互联网自然上不去。如果你手动把无线网卡的跃点调小比如从自动改成1那我告诉你所有流量又跑去走WiFi了内网又连不上了。很多人的第一反应就是调跃点但只调跃点解决不了双网卡双网关的根本问题因为它本质上是“二选一”永远有一边的网络是残废的。1.3 route print 一眼看出问题在管理员命令行里敲route print -4如果出现下面这样的输出就说明路由冲突了Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.10.1 192.168.10.88 35 0.0.0.0 0.0.0.0 172.16.20.1 172.16.20.66 55两条0.0.0.0的目标网络一模一样这就是默认路由冲突。结论很明确不是你的网卡坏了也不是运营商断网了而是第二张网卡虽然拿到了IP但它的默认路由压根没被优先使用。这里顺便讲一个容易误解的点有人用“禁用/启用网卡”的方式临时修复重启网卡后第一张网卡的默认路由会被重新广播看起来好像好了但过一会儿或者重启机器后又复发。那是因为问题出在路由持久化上不是网卡驱动上。2. 动手前的环境盘点先搞清三件事再配置很多人拿到教程就直接敲命令结果发现内网网段和自己环境不一样配完反而全断网。双网卡配置和系统版本关系不大Windows 10、Windows 11、Windows Server 2016到2022都适用但部署前必须先盘清楚三件事。2.1 内网的网段和网关必须明确配置静态路由的前提是知道内网有哪些网段。有的公司内网很规矩就一个网段比如192.168.10.0/24有的公司内网跨多个网段比如生产网是10.1.0.0/16办公网是172.16.0.0/16还有视频监控网192.168.0.0/24这些网段的流量都要走办公网卡。如果内网只有一个网段静态路由就一条搞定。如果内网有多个网段可以分两条思路要么每条路由单独精确添加适合网段数量少的情况要么用汇总路由把相邻网段合并成一条适合网段多且连续的情况。判断方法很简单把内网机器上所有可能访问的目标网段列出来合并成CIDR形式。2.2 办公网是固定IP还是DHCP这里有个关键差异直接决定你用哪种方案。固定IP内网网段、网关、DNS都写在网卡属性里稳定不变。这种情况最适合用永久静态路由一次性配置重启不掉。DHCP动态获取网卡每次开机都可能拿到不同IP虽然大多数公司DHCP会把同一个MAC固定在某个IP段内网关也可能变。如果网关变了静态路由里写死的网关就会失效。这种情况需要用脚本在开机后动态添加路由。我实际工作中发现很多公司所谓的“固定IP”其实也是DHCP保留地址只是IP长期不变但网关、掩码这些跟DHCP租约走。所以这一步一定要在命令行里查实际配置别只看设置界面。2.3 三种主流方案对比方案操作方式优点缺点适用场景接口跃点优先网卡属性里设置跃点数字简单直观不用记命令本质上还是二选一只能保证某一类流量优先临时切换、临时判断问题永久静态路由route add -p 命令一劳永逸内网网段固定后非常稳定内网网段或网关变化时需要手动改固定IP、网段清晰的企业内网DHCP脚本自动路由批处理计划任务网关变化也能自动适配需要写脚本稍微麻烦需要理解命令DHCP动态分配、多网段办公网我的建议是优先做永久静态路由DHCP环境下配合脚本。至于改跃点很多人试过实际上在双默认路由场景下改跃点并不能做到“内网走内网、公网走公网”它只能让某一边赢过另一边所以这里不推荐作为长期方案。3. 核心配置实操永久静态路由的完整过程这一节给你一套可以直接照抄的步骤我把详细命令和验证方法都写清楚。环境就以我上面提到的制造业办公网为例有线网卡接办公网网段192.168.10.0/24网关192.168.10.1无线网卡连访客WiFi接互联网网段172.16.20.0/24网关172.16.20.1。我的目标是内网所有流量走有线网卡其余全走WiFi。3.1 第一步确认当前网卡和IP管理员身份打开命令行cmd或PowerShell都行输入ipconfig /all重点看三样东西“以太网适配器”对应的IPv4地址、子网掩码、默认网关“无线局域网适配器 WLAN”对应的IPv4地址、子网掩码、默认网关两张网卡的描述名称后面某些命令可能需要用到以我的环境为例有线网卡IP是192.168.10.88网关192.168.10.1无线网卡IP是172.16.20.66网关172.16.20.1。如果你查到的接口名叫“以太网”或“Ethernet”那就是它。3.2 第二步清掉多余的默认路由默认情况下两条网卡各自有一条0.0.0.0/0的默认路由。我们现在要保留互联网那张网卡无线的默认路由把办公网那张有线的默认路由删掉。route delete 0.0.0.0 mask 0.0.0.0 192.168.10.1注意如果两张网卡的默认路由都删了也会导致暂时全断网所以删之前先确认哪条是你不要的。实际操作时我会先删办公网那一条因为它的网关是192.168.10.1。如果你不确定哪条对应的哪个网关用route print -4看一眼再做。这一步做完理论上现在所有流量都走WiFi了。你试试ping互联网和ping内网ERP服务器比如192.168.10.50“内网应该不通互联网是通的”。别慌这正是预期状态因为内网流量还没指到办公网卡上。3.3 第三步添加永久静态路由核心命令来了route add 192.168.10.0 mask 255.255.255.0 192.168.10.1 -p逐项拆解参数含义192.168.10.0目标网络地址表示我要让发往这个网段的数据包走指定路由mask 255.255.255.0子网掩码和内网网卡配置保持一致192.168.10.1网关也就是办公网卡那个网关地址-ppersistent持久化表示写入永久路由重启后依然存在。不加-p的话机器一重启路由就丢了效果等于白配如果你内网还有别的网段比如还有一段172.16.0.0/16也要走办公网卡那就再加一条route add 172.16.0.0 mask 255.255.0.0 192.168.10.1 -p多网段环境下我建议先用tracert或者访问测试确认这些网段确实需要通过办公网出去别一股脑全加进去。有些公司内网段之间本来就是三层互通可能不需要逐条添加。3.4 第四步验证配置是否生效三个命令依次验证route print -4这时能看到路由表里有两条关键记录一条是默认路由0.0.0.0/0接口是无线网卡的IP网关是172.16.20.1另一条就是刚才添加的192.168.10.0/24网关是192.168.10.1。两条路由目标网段不同互不冲突。然后再验证连通性ping 192.168.10.50 ping 223.5.5.5前者通说明内网走了办公网卡后者通说明互联网走了无线网卡。如果你还想确认流量到底从哪个网卡出的用这个命令看路径tracert -d 192.168.10.50 tracert -d 223.5.5.5第一条的路径第一跳是192.168.10.1第二条的路径第一跳是172.16.20.1这样就完全确认了流量分流正确。3.5 重启验证持久化永久静态路由标记了-p之后理论上重启不需要重新配置。但我在多个版本的Windows上遇到过路由虽然显示“persistent”实际重启后被安全软件或系统优化工具清掉的情况。所以建议重启一次然后马上执行route print -4确认静态路由还在。如果丢了就要么换脚本方案要么排查是不是装了“网络优化”类软件。4. DHCP动态环境下的自动化脚本计划任务让路由不丢失固定IP场景用上面的静态路由很稳但很多员工电脑其实使用的是DHCP动态分配网关可能因为网络规划调整而变化。一旦网关变了静态路由里写死的旧网关就废了。这节分享一个自动化脚本方案解决DHCP场景下的路由持久化问题。4.1 为什么DHCP下静态路由会失效假设你在路由表里写了一条永久静态路由目标网段192.168.10.0/24网关192.168.10.1。如果你的无线网卡或办公网卡是DHCP获取IP某天公司调整了办公网网关从192.168.10.1变成了192.168.10.254那么你路由表里的静态路由依然指向192.168.10.1但这个网关已经不存在了数据包发出去没人响应。更麻烦的是DHCP续租后Windows可能会把持久路由保留但对应的接口和网关关系已经变了这种情况下表现就是“内网彻底访问不了”。解决思路不是不写静态路由而是在每次网络变化后重新执行一次路由配置脚本。Windows在网卡重启、DHCP续租、网络重连时都会触发网络状态变化我们可以借助计划任务和脚本实现自动修复。4.2 写一个批处理脚本新建一个文本文件命名为 fix_route.bat内容如下echo off rem 删除可能冲突的旧路由 route delete 0.0.0.0 mask 0.0.0.0 192.168.10.1 rem 重新添加内网静态路由把网关改成你自己环境的实际网关 route add 192.168.10.0 mask 255.255.255.0 192.168.10.1 -p exit如果你想让脚本更智能一点比如办公网网关可能会变可以在脚本里先通过ipconfig找出办公网网卡对应的网关IP再动态添加。用PowerShell写的话更灵活# Get-NetIPConfiguration 获取所有网卡配置 $adapter Get-NetAdapter | Where-Object {$_.InterfaceDescription -like *Ethernet* -and $_.Status -eq Up} $ipConfig Get-NetIPConfiguration -InterfaceAlias $adapter.Name $gateway $ipConfig.IPv4DefaultGateway.NextHop # 添加静态路由 route delete 192.168.10.0 mask 255.255.255.0 route add 192.168.10.0 mask 255.255.255.0 $gateway -pPowerShell版本会自动抓取有线网卡的当前网关就算网关变了也不会写死。缺点是需要用管理员权限运行PowerShell才能执行route命令所以计划任务里要勾选“使用最高权限运行”。4.3 注册计划任务实现开机和网络变化自动执行批处理脚本写好后用任务计划程序注册一个任务。最简单的触发条件是“计算机启动时”运行一次但考虑到用户可能不重启电脑只拔插网线我建议再加一个触发条件“在工作站锁定/解锁时”或者“在特定事件发生时”。不过计划任务界面配置事件触发不太好用更省事的方式是注册两个触发开机和每隔30分钟重复执行。步骤简述打开“任务计划程序”右侧点“创建任务”“常规”页名称填“FixRoute”勾选“使用最高权限运行”“触发器”页新建两个触发器一个是“启动时”一个是“按计划”--每隔30分钟重复一次“操作”页新建操作程序填“cmd.exe”参数框填“/c C:\scripts\fix_route.bat”“条件”页取消勾选“只有在计算机使用交流电源时才启动此任务”确定保存这样设置后即使路由因为某种原因丢失最长30分钟内也会自动修复。实际上一般用户在重新插拔网线后就会触发一次网络变更再配合脚本每隔30分钟的兜底重复基本不会再出现“内网突然连不上”的报修。4.4 关于自动跃点的补充有些DHCP环境下你不想写脚本也不想用静态路由还有一个折中方案在“网络适配器”属性里关闭“自动跃点”给办公网卡手动设置一个较小的跃点比如10互联网网卡设置较大的跃点比如100。这样做的作用是当Windows比较默认路由优先级时办公网卡的默认路由跃点更小会占优。但这种方案有一个副作用——所有流量都会优先走办公网卡包括互联网流量。所以它只适用于“办公网本身也能上互联网但你希望优先使用办公网”的场景不适合“办公网和互联网物理隔离”的场景。一旦办公网不能出公网这个方案就会导致互联网也断掉。5. 双网卡日常使用中的坑与排查链路静态路由配好了不代表以后就高枕无忧。我在后续维护中遇到过很多奇奇怪怪的问题有些是Windows自己的“小脾气”有些是应用软件插手路由表整理出来给你排雷。5.1 内网域名解析失效这是仅次于路由冲突的高频问题。表现是ping内网IP地址能通但访问内网服务器的主机名或域名比如http://erp.company.local打不开。原因很好理解DNS解析请求走了互联网网卡的DNS服务器而互联网DNS服务器根本不认识内网域名。解决办法有两个在“网络连接”中把办公网卡的DNS填写为内网DNS服务器把WiFi网卡的DNS保持自动或填公共DNS再在“高级TCP/IP设置”里调整DNS优先级在hosts文件C:\Windows\System32\drivers\etc\hosts里手动添加内网域名和IP的映射办公网卡最好设置内网DNS为首选DNS公共DNS作为备用。如果公司内网安装了AD域环境域内电脑的DNS必须指向域控这时不要手动改hosts否则加入域会出各种诡异问题。5.2 休眠唤醒后路由表漂移Windows笔记本休眠再唤醒后无线网卡重新连接WiFi可能会触发DHCP重新获取IP导致默认路由重新生成这时候有可能把持久静态路由“挤”到一边。典型表现早上合盖到下午开盖发现内网不通了。排查命令还是route print -4。看到静态路由还在但网关不对或者默认路由变成了两条就用管理员权限重新执行一次route delete和route add。如果这种问题反复出现直接把第4节的脚本挂上计划任务虽然不能一劳永逸但能保证自动修复。5.3 安全软件和系统优化工具悄悄清路由有些国产安全软件、系统清理工具会把“无效路由”当成垃圾数据清理掉。我遇到过一台电脑每次装完系统配好双网卡过几天内网就断查来查去发现是安全软件的“网络重置”功能把-p标志的永久路由删了。这类问题定位思路是这样的先重新执行route add -p然后看几天后是否失效。如果失效检查安全软件的日志或关闭网络优化功能。这里有个悖论——有些安全软件清理网络时不是基于路由命令而是调用Windows的WFPWindows Filtering Platform过滤驱动表面上路由表一切正常但特定流量就是不通。遇到这种情况建议直接把电脑从安全软件的白名单或排除名单里放行或者让对应软件厂商确认是否有网络重置策略。5.4 远程桌面连过来后回包路由不对还有一种情况容易被忽略你用办公网卡通过远程桌面连接了这台双网卡机器结果远程操作期间一切正常但断开后再次远程连接发现连不上了。原因可能是这台双网卡机器在回复远程桌面请求时系统选择的源IP和路由表不匹配。比如远程桌面的客户端走的是无线网卡公网IP但服务器端回包时路由表判断目标网段走办公网卡出去导致往返路径不一致。遇到这类问题最简单粗暴的验证方法是在远程桌面连接设置里把“高级”选项的“连接自”改成指定使用哪张网卡的IP地址。如果这个办法不行再检查防火墙入站规则是否绑定了特定的网卡配置文件域/专用/公用。5.5 完整排查链路参考如果你遇到双网卡问题时按下面的顺序排查效率最高ipconfig /all 确认两张网卡的IP、掩码、网关、DNS各自是否正常route print -4 看是否存在两条默认路由目标冲突是否有永久静态路由ping 内网网关 验证办公网物理链路ping 互联网网关验证WiFi物理链路ping 内网服务器IP 验证静态路由是否生效tracert -d 目标IP 确认实际出口路径nslookup 内网域名 验证DNS解析走向这套链路我基本上每次都能定位到问题环节。前两步确认配置层第三步确认链路层第四五步确认路由层第六步确认应用层。哪一步不通就往哪一步聚焦。5.6 我自己的经验总结双网卡配置本身不复杂命令就那么几条真正难的是环境差异。同样是“办公网WiFi”有的公司内网是单网段、固定IP有的公司是域环境、DHCP、多网段配置方式差别很大。所以拿到一台新电脑时我第一步永远是先问清楚两个问题内网网段和网关是多少内网是DHCP还是固定IP所有配置都以这两个答案为依据而不是拿着网络上任何一个现成命令就往里套。如果让我给一个最省心的组合那就是固定IP环境用route add -pDHCP环境用脚本加计划任务。这两套方案我维护了几十台电脑一年下来难得有返工。只要理解了路由表的本质任何双网卡场景都逃不出这个框架。最后分享一个小技巧永久静态路由配好后如果哪天你发现内网访问速度异常慢可以先用route print -4看一眼该路由的Metric值如果配好之后系统又自动把静态路由的Metric改成很大可以在route add时不带-p先删掉再带-p重加一遍Windows会按默认逻辑给静态路由一个很小的Metric通常不会影响正常使用。这个细节一般文档里不写但实测中对某些猎豹WiFi、360WiFi之类的共享软件环境特别管用。
返回列表