机器有两个网络接口:以太网和 WiFi。主要通过以太网连接互联网,这利用了静态 IPv4 设置。当将 wifi(利用 DHCP)连接到具有另一个互联网连接的 wifi 路由器时,系统中有两个具有不同度量的默认路由(如预期的那样)。互联网通过 wifi 连接(因为度量较低),这很好。
执行 wifi 断开连接时,互联网会返回以太网并正常工作,但执行命令时netsh in ip sh ro
在列表中得到两个默认路由。一个来自以太网适配器度量 256,另一个是来自(现已断开连接的)wifi 适配器的剩余默认路由,度量为 0。此路由无法 ping 通(正如预期的那样)。
Publish Type Met Prefix Idx Gateway/Interface Name
------- -------- --- ------------------------ --- ------------------------
No Manual 256 0.0.0.0/0 22 10.12.70.65
No Manual 0 0.0.0.0/0 7 192.168.148.251
当执行时,netstat -rn
只有一个默认路由,其度量为 281
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.12.70.65 10.12.70.66 281
为什么两个列表之间存在差异?这是一个错误还是有一些隐藏的含义?(数字 281 似乎是路由度量和接口度量的减法)
更新:
命令netsh in ip sh config Wifi
看起来也像这样
Configuration for interface "WiFi"
DHCP enabled: Yes
Default Gateway: 192.168.148.251
Gateway Metric: 0
InterfaceMetric: 55
DNS servers configured through DHCP: 192.168.148.251
Register with which suffix: Primary only
WINS servers configured through DHCP: None
命令netsh in ip sh addresses WiFI
Configuration for interface "WiFi"
DHCP enabled: Yes
Default Gateway: 192.168.148.251
Gateway Metric: 0
InterfaceMetric: 55
命令powershell "Get-NetRoute -DestinationPrefix "0.0.0.0/0" | format-list -property *"
Publish : No
Protocol : NetMgmt
Store : ActiveStore
AddressFamily : IPv4
State : Alive
ifIndex : 7
Caption :
Description :
ElementName :
InstanceID : :8:8:8:9:55A55;C<8;@B8;>B8<?;55;
AdminDistance :
DestinationAddress :
IsStatic :
RouteMetric : 0
TypeOfRoute : 3
CompartmentId : 1
DestinationPrefix : 0.0.0.0/0
InterfaceAlias : WiFi
InterfaceIndex : 7
InterfaceMetric : 55
NextHop : 192.168.148.251
PreferredLifetime : 00:59:59
ValidLifetime : 00:59:59
PSComputerName :
CimClass : ROOT/StandardCimv2:MSFT_NetRoute
CimInstanceProperties : {Caption, Description, ElementName, InstanceID...}
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
Publish : No
Protocol : NetMgmt
Store : ActiveStore
AddressFamily : IPv4
State : Alive
ifIndex : 22
Caption :
Description :
ElementName :
InstanceID : :8:8:8:9:55<<55;:8;<8A:8@?55;
AdminDistance :
DestinationAddress :
IsStatic :
RouteMetric : 256
TypeOfRoute : 3
CompartmentId : 1
DestinationPrefix : 0.0.0.0/0
InterfaceAlias : ETH0
InterfaceIndex : 22
InterfaceMetric : 25
NextHop : 10.12.70.65
PreferredLifetime : 10675199.02:48:05.4775807
ValidLifetime : 10675199.02:48:05.4775807
PSComputerName :
CimClass : ROOT/StandardCimv2:MSFT_NetRoute
CimInstanceProperties : {Caption, Description, ElementName, InstanceID...}
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
更新2:
当从 USB 插槽拔下 wifi 适配器然后重新插入时,与此适配器相关的默认路由将从所有列表中消失。
答案1
您在这里看到的是 WiFi 路由器驱动程序的行为。当未连接时,只要设备处于开机状态,它就会将度量设置为零。
我搜索了零度量的含义,它似乎取决于制造商。例如,对于某些 Cisco 设备,它意味着直接电缆连接(因此零开销)。对于其他设备,这仅意味着无效参数。
也许最符合你经历的参考资料,奇怪的是,我发现 Contiki操作系统:
/* These specifiy the sink's routing metric (0) and the maximum
routing metric. If a node has routing metric zero, it is the
sink.
“sink”这个词似乎是指网络的边缘,也就是没有任何东西可以进一步连接。
显然,设备的驱动程序将度量设置为零,以表示设备存在,但除此之外没有其他可能的连接。Windows 似乎以类似的方式理解它。