Windows 不区分同一型号的以太网适配器

Windows 不区分同一型号的以太网适配器

我尝试连接到几个物理上分开的网络,这些网络具有不同的网络掩码。由于我经常需要同时连接到多个网络,因此我想设置并在每个网络/以太网电缆上留一个以太网适配器。

Windows 似乎将这些 ThinkPad USB 以太网适配器视为同一设备。

第一个连接的适配器会获得第一个 IP 设置,第二个适配器会获得第二个设置。第二个适配器只会获得一个#2添加到其设备 ID。

两个网络适配器的适配器设置图片

因此现在当连接它们时我必须检查并交换以太网电缆。

有没有办法让它们在 Windows 上具有唯一的可识别性,以便每个适配器都能获得正确的一组 IP 掩码?

编辑:似乎第一个连接的设备总是获得 UID 000001000000。这导致 Windows 没有注意到(或忽略)它是一个具有不同 MAC 地址的适配器。

答案1

看起来 Windows 驱动程序的行为正是如此。

当面对运行相同驱动程序的设备时,它会在总线(USB 或 PCI)上枚举它们并相应地分配它们的设备 ID。

与 PCI 不同,PCI 中的枚举沿着总线的物理连接进行,而 USB 中的枚举则按照插入的顺序进行。

如果您碰巧启动了一台已经插入 USB 设备的机器,它们可能会按总线顺序进行枚举(但有一些注意事项,因为设备并不总是足够快地响应“谁在那里”的呼叫)。

我不知道有什么策略可以让 Windows 表现得有所不同。

这种可能性不大,因为当操作系统枚举设备时,它们的驱动程序尚未启动,操作系统无法知道 MAC 地址等细节。

如果这会让您更高兴,那么 Linux 也会做同样的事情,因为这是在即插即用环境下应该做的事情。

另一方面,大多数 Linux 发行版都具有广泛的基础设施,用于根据一些自定义规则重命名网络设备,其中 MAC 地址是可能且经常使用的标准。

这发生在分配 IP 地址之前,因此在 Linux 中,即使使用默认设置,在像您这样的情况下通常也会获得一致的行为。

如果您确实想在 Windows 中模拟此操作,可以重命名设备,但这样做不行,因为名称与 IP 地址无关。但您仍然可以创建一个脚本(CMD 或 Powershell),使用 netsh.exe 根据网络适配器 MAC 地址分配 IP 地址。

我向你保证,这会很古怪,但可以发挥作用。

答案2

让 Windows 忽略 USB 序列号应该可以解决问题。使用的 USB 端口决定哪个设备是哪个。右键单击 UsbTreeView -> Regedit 中的其中一个设备...第二项应该是包含 \UsbFlags 的项目,选择它,Regedit 打开。在这里创建一个名为 IgnoreHWSerNum 的二进制值,值为 01。

下次连接或 Windows 重新启动时都会创建一个新的设备实例,然后您就完成了。

相关内容