HOWTO: 为单网卡 Windows 10/11 配置多路由网关
网络环境还是比较简单的,常见的组网方式,要求无线路由(192.168.2.1)下的网络增加一个网络设备(192.168.2.254),且所有客户端都需要经由该网络设备。
实际安装调试时发现,由于是定制版无线路由,DHCP 不支持高级配置功能,无法指定网关。如果通过关闭路由自带的 DHCP 服务,则 PPPOE 将自动切换为桥接模式,导致无法正常上网,后续配置也就无法再继续下去,考虑多方因素,决定改为客户端手动添加路由的方式。
因为是 Windows 10/11 系统,手动添加路由比较简单,通过网卡的“高级 TCP/IP 设置”即可。注意:这里有两个跃点数:手动添加的网关跃点数和自动跃点。
使用命令对于 IT 人员来说是最为便利的,这里推荐使用 PowerShell,可以先 Get-NetAdapter 获取当前系统的网卡基本信息,确认网卡索引号便于后续操作。
然后使用 New-NetRoute 来手动添加路由,将 192.168.2.254 添加到额外的网关中,参考如下命令行:
New-NetRoute -DestinationPrefix 0.0.0.0/0 -NextHop 192.168.2.254 -InterfaceIndex 19
但在添加后使用 Route Print 或 Get-NetRoute 查看会发现两个网关的跃点要么相同,要么额外添加的网关跃点无法优先于默认网关。此时如果我们去修改前面“高级 TCP/IP”设置中的跃点数和自动跃点数会发现也无济于事。
而且当修改额外网关跃点数为0时还是报错,只能设置为1-9999间的跃点数;如果修改了自动跃点还会发现网关的实际跃点数会被累加。
那该如何解决的?其实可以用 Set-NetRoute 对现有路由表进行修改,参考如下命令:
Set-NetRoute -DestinationPrefix 0.0.0.0/0 -InterfaceIndex 19 -NextHop 192.168.2.254 -RouteMetric 0
执行后结果如下所示。
接下来,再调整默认网关的跃点数,将其优先级调后即可。那么什么时候需要修改自动跃点呢?当 Windows 系统有多块网卡,需要对网卡优先级进行调整时才需要使用自动跃点。经 gOxiA 学习梳理,在“高级 TCP/IP 设置”中的网关跃点数其实对应的就是 routemetric,而自动跃点数则对应的 interfacemetric。两者数值会进行累加,形成最终的跃点总数,进行优先级的排列,在 Route Print 中会得以体现。两个跃点的说明参考如下。
两者都是用于网络路由和网络接口的度量值,用于确定数据包的传输优先级和路径选择。虽然它们都是用于网络通信的度量标准,但他们的应用对象和作用范围有所不同。
- RouteMetric,应用于路由的度量值,用于确定通过特定路由传输数据包的优先级。当存在多个路由可供选择时,操作系统将使用具有最低路由度量值的路由来传输数据包。如果路由度量值相同,操作系统会使用其他策略(如最长前缀匹配 - PrefixLength / DestinationPrefix)进行决策。
- InterfaceMetric,应用于网络接口的度量值,用于确定通过特点接口传输数据包的优先级。如果有多个网络接口可供选择,操作系统将使用具有最低接口度量值的接口来传输数据包。如果接口度量值相同,操作系统会使用其他策略(如接口绑定顺序)进行决策。