Windows 路由表入门:从看懂到会用
你有没有遇到过这种情况 —— 电脑同时连着网线和 Wi-Fi,明明网络都正常,但上网就是卡,甚至有些网站打不开?
这背后很可能就是「路由表」在作怪。别被这个名字吓到,这篇文章会用最简单的语言,带你搞懂 Windows 路由表。
一、什么是路由表?
简单说,路由表就是电脑里的「导航地图」。
你开车出门,导航会告诉你走哪条路最快。电脑发数据包也一样,它要查路由表来决定:这个数据包该从哪个网卡出去,走哪条路到目的地。
一台电脑可能同时连着多条网络:
- 有线网卡(以太网)
- Wi-Fi 无线网卡
- VPN 虚拟网卡
- USB 共享网络
数据到底走哪条路?路由表说了算。
二、路由表长什么样?
以管理员身份打开 PowerShell 或 CMD,输入:
route print你会看到类似这样的输出:
IPv4 路由表 =========================================================================== 活动路由: 网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 192.168.99.1 192.168.99.178 35 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.43 45 0.0.0.0 0.0.0.0 192.168.87.1 192.168.87.178 35这张表每一行就是一条「路」。我们重点看几个关键列:
| 列名 | 含义 | 说明 |
|---|---|---|
| 网络目标 | 目的地 | 0.0.0.0代表「所有目的地」,即默认路由 |
| 网络掩码 | 匹配范围 | 和网络目标配合使用,0.0.0.0表示匹配所有 |
| 网关 | 下一跳 | 数据要交给谁转发,通常是路由器的 IP |
| 接口 | 出口 | 数据从本机哪个 IP(哪张网卡)发出 |
| 跃点数 | 优先级 | 数字越小,优先级越高 |
核心原则
当多条路由都能到达目的地时,跃点数(Metric)最小的那条路会被优先使用。
三、跃点数是怎么算出来的?
这是一个很多人不知道的细节。Windows 的跃点数其实由两部分组成:
总跃点数 = 接口跃点数 + 路由跃点数- 接口跃点数(InterfaceMetric):每张网卡自带的「基础分」,由系统自动分配
- 路由跃点数(RouteMetric):每条路由规则额外加的「手动分」
想看看每张网卡的接口跃点数是多少?执行这条命令:
Get-NetIPInterface-AddressFamily IPv4|Format-TableInterfaceAlias,InterfaceIndex,InterfaceMetric,ConnectionState输出示例:
InterfaceAlias ifIndex InterfaceMetric ConnectionState -------------- ------- --------------- --------------- 以太网 4 30 35 Connected 以太网 2 7 35 Connected 以太网 8 25 Connected可以看到:
- 「以太网」这张卡的接口跃点数是25
- 「以太网 2」和「以太网 4」的接口跃点数是35
四、实战:让指定网卡优先走流量
场景
假设你的电脑有三张网卡,路由表显示:
网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 192.168.99.1 192.168.99.178 35 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.43 45 0.0.0.0 0.0.0.0 192.168.87.1 192.168.87.178 35当前默认走的是跃点数 35 的两条之一。你想让流量优先走192.168.1.1这条线路(接口编号 8)。
有两种方法可以实现,各有适用场景。
方法一:添加低跃点数的路由(推荐,颗粒度最细)
用route add命令添加一条跃点数更低的新路由:
route add-p 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 20IF8参数解释:
-p:永久生效,重启后不会丢失0.0.0.0 mask 0.0.0.0:匹配所有目标地址(默认路由)192.168.1.1:网关地址metric 20:设置跃点数为 20,比原来的 35 和 45 都小IF 8:指定从编号为 8 的接口(网卡)发出
执行后,再route print看看:
网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 192.168.99.1 192.168.99.178 35 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.43 25 ← 新加的新路由跃点数25,比其他的 35 都小,流量优先走这条路。
适用场景:只想让特定网关优先,其他路由规则不受影响。颗粒度最细,只影响这一条路由。
常见问题:路由已存在
route delete0.0.0.0 mask0.0.0.0192.168.1.1 routeadd-p0.0.0.0 mask0.0.0.0192.168.1.1 metric20IF20方法二:直接降低接口跃点数(简单粗暴,一劳永逸)
如果你想让某张网卡上所有路由都天然拥有更高的优先级,可以直接降低这张网卡的接口跃点数:
Set-NetIPInterface-InterfaceIndex 8-InterfaceMetric 5这条命令把接口 8(以太网)的基础分从原来的25降到了5。
执行后route print:
=========================================================================== 接口列表 8...6c 4b 90 42 88 20 ......Intel(R) Ethernet Connection (2) I219-V 7...34 4b 50 00 00 00 ......Remote NDIS based Internet Sharing Device 30...34 4b 50 00 00 00 ......Remote NDIS based Internet Sharing Device #3 1...........................Software Loopback Interface 1 =========================================================================== IPv4 路由表 =========================================================================== 活动路由: 网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 192.168.99.1 192.168.99.178 35 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.43 25 0.0.0.0 0.0.0.0 192.168.87.1 192.168.87.178 35注意看:尽管接口基础分已经降到 5,但通过route add metric 20手动添加的路由显示的跃点数仍是 25。这说明手动指定的 metric 值不会被接口基础分覆盖。
适用场景:想整体提升某张网卡的优先级,比如有线网卡永远比 Wi-Fi 优先。
两种方法怎么选?
| 方法一:route add | 方法二:Set-NetIPInterface | |
|---|---|---|
| 影响范围 | 单条路由规则 | 该网卡上的所有路由 |
| 精细度 | 高,可以给不同网关设不同优先级 | 低,整张网卡统一调整 |
| 操作难度 | 略复杂,需要知道网关和接口编号 | 简单,只需接口编号 |
| 典型场景 | 「只有访问某个网络时才走这条线」 | 「有线网卡永远优先于无线网卡」 |
五、常用命令速查
| 操作 | 命令 |
|---|---|
| 查看路由表 | route print |
| 查看接口跃点数 | Get-NetIPInterface -AddressFamily IPv4 | Format-Table InterfaceAlias, InterfaceIndex, InterfaceMetric, ConnectionState |
| 修改接口跃点数 | Set-NetIPInterface -InterfaceIndex 接口编号 -InterfaceMetric 跃点数值 |
| 添加临时路由(重启消失) | route add 目标地址 mask 子网掩码 网关 metric 跃点数 IF 接口编号 |
| 添加永久路由 | route add -p 目标地址 mask 子网掩码 网关 metric 跃点数 IF 接口编号 |
| 删除路由 | route delete 目标地址 |
六、总结
- 路由表= 电脑的网络导航地图
- 跃点数越小,优先级越高—— 这是最核心的规则
- 总跃点数 = 接口跃点数 + 路由跃点数
- 两种方法控制优先级:
- 精细化:
route add -p加一条低跃点数的路由,只影响特定网关 - 全局化:
Set-NetIPInterface降低整张网卡的基础分,所有路由受益
- 精细化:
搞懂这些,下次再遇到多网卡网络不通的问题,你就知道该怎么排查了。