在多网卡的Windows系统中,可以通过配置路由表(永久路由和跃点数)来选择上网方式。

在Windows路由表中,跃点数(Metric)是一个整数值,用于确定路由的优先级。跃点数越小,优先级越高。它主要用于在多个路由中选择最优的路径。

活动路由和永久路由

在网络中,活动路由和永久路由是两种不同的路由方式:

活动路由:活动路由是当前有效的路由,系统在运行时动态生成和使用。添加活动路由:route add <目标网络> mask <子网掩码> <网关> metric <跃点数> if <接口号>

永久路由是手动配置并保存在系统中的路由,即使系统重启后也会保留。添加永久路由:route add <目标网络> mask <子网掩码> <网关> metric <跃点数> if <接口号> -p

跃点数

在Windows路由表中,跃点数(Metric)是一个整数值,用于确定路由的优先级。跃点数越小,优先级越高。它主要用于在多个路由中选择最优的路径。

查看当前路由表: 打开命令提示符,输入以下命令查看当前的IPv4路由表:route print -4

修改跃点数: 假设你想修改默认网关的跃点数,可以使用以下命令:

route change 0.0.0.0 mask 0.0.0.0 <网关IP> metric <新的跃点数> if <接口号>

例如:route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 10 if 9,其中192.168.1.1是网关IP,10是新的跃点数,9是接口号。

永久修改: 如果需要永久修改,可以在命令中增加-p参数:route change -p 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 10 if 9

案例

问题

如下所示,当前设备上存在两个物理网卡,分别是13和17,其中13用于连接外网,17是调试用的内部局域网。

当两个网卡都接入之后,会生成两条默认路由,此时会导致设备无法上网,因为当前设备默认会走17网卡对应的默认路由。

针对这个问题,即使增加对网卡13增加永久路由也不行。

> route print
===========================================================================
接口列表
 13...xx xx xx 08 76 c3 ......Realtek PCIe GbE Family Controller
 17...xx xx xx bc 40 84 ......Realtek PCIe GbE Family Controller #2
 16...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
  4...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0      10.160.83.1    10.160.83.124    281
          0.0.0.0          0.0.0.0      192.168.0.1      192.168.0.2     25
      10.160.83.0    255.255.255.0            在链路上     10.160.83.124    281
    10.160.83.124  255.255.255.255            在链路上     10.160.83.124    281
    10.160.83.255  255.255.255.255            在链路上     10.160.83.124    281
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
      169.254.0.0      255.255.0.0            在链路上   169.254.225.197    291
  169.254.225.197  255.255.255.255            在链路上   169.254.225.197    291
  169.254.255.255  255.255.255.255            在链路上   169.254.225.197    291
      192.168.0.2  255.255.255.255            在链路上       192.168.0.2    281
    192.168.100.0    255.255.255.0            在链路上     192.168.100.1    291
    192.168.100.1  255.255.255.255            在链路上     192.168.100.1    291
  192.168.100.255  255.255.255.255            在链路上     192.168.100.1    291
        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331
        224.0.0.0        240.0.0.0            在链路上   169.254.225.197    291
        224.0.0.0        240.0.0.0            在链路上     192.168.100.1    291
        224.0.0.0        240.0.0.0            在链路上     10.160.83.124    281
        224.0.0.0        240.0.0.0            在链路上       192.168.0.2    281
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  255.255.255.255  255.255.255.255            在链路上   169.254.225.197    291
  255.255.255.255  255.255.255.255            在链路上     192.168.100.1    291
  255.255.255.255  255.255.255.255            在链路上     10.160.83.124    281
  255.255.255.255  255.255.255.255            在链路上       192.168.0.2    281
===========================================================================
永久路由:
  网络地址          网络掩码  网关地址  跃点数
          0.0.0.0          0.0.0.0      10.160.83.1     默认
===========================================================================
...

解决方案

通过修改跃点数,使接口13的默认路由优先级更高,在使用默认路由转发时就会优先使用接口13。

> route change -p 0.0.0.0 mask 0.0.0.0 10.160.83.1 metric 10 if 13
> route print
===========================================================================
接口列表
 13...cc 28 aa 08 76 c3 ......Realtek PCIe GbE Family Controller
 17...f0 09 0d bc 40 84 ......Realtek PCIe GbE Family Controller #2
 16...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
  4...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0      10.160.83.1    10.160.83.124     35
          0.0.0.0          0.0.0.0      192.168.0.1      192.168.0.2     25
      10.160.83.0    255.255.255.0            在链路上     10.160.83.124    281
    10.160.83.124  255.255.255.255            在链路上     10.160.83.124    281
    10.160.83.255  255.255.255.255            在链路上     10.160.83.124    281
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
      169.254.0.0      255.255.0.0            在链路上   169.254.225.197    291
  169.254.225.197  255.255.255.255            在链路上   169.254.225.197    291
  169.254.255.255  255.255.255.255            在链路上   169.254.225.197    291
      192.168.0.0    255.255.255.0            在链路上       192.168.0.2    281
      192.168.0.2  255.255.255.255            在链路上       192.168.0.2    281
    192.168.0.255  255.255.255.255            在链路上       192.168.0.2    281
    192.168.100.0    255.255.255.0            在链路上     192.168.100.1    291
    192.168.100.1  255.255.255.255            在链路上     192.168.100.1    291
        224.0.0.0        240.0.0.0            在链路上   169.254.225.197    291
        224.0.0.0        240.0.0.0            在链路上     10.160.83.124    281
        224.0.0.0        240.0.0.0            在链路上       192.168.0.2    281
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  255.255.255.255  255.255.255.255            在链路上   169.254.225.197    291
  255.255.255.255  255.255.255.255            在链路上     192.168.100.1    291
  255.255.255.255  255.255.255.255            在链路上     10.160.83.124    281
  255.255.255.255  255.255.255.255            在链路上       192.168.0.2    281
===========================================================================
永久路由:
  网络地址          网络掩码  网关地址  跃点数
          0.0.0.0          0.0.0.0      10.160.83.1      10
===========================================================================
...

可以看到手动修改了永久路由的跃点数,但是即使这样,活动路由中接口13的默认路由的跃点数仍然大于接口17。但是在路由选择中,会将永久路由和活动路由进行整体比较,在子网粒度相同情况下优先选择跃点数较小的路由条目。

因此,默认情况下会优先选择永久路由中的接口13对应的默认路由条目。