当多个 IP 配置到同一个适配器时,Windows 7 使用错误的输出 IP 地址

当多个 IP 配置到同一个适配器时,Windows 7 使用错误的输出 IP 地址

我已将第二个 IPv4 地址添加到网络适配器,Windows 开始使用第二个 IP 作为默认输出地址。即使该地址与默认网关位于完全不同的子网中。

我的默认 IP 地址是169.254.1.38/24。是的,我们使用自动地址分配 IP 范围,但这是一个静态配置的 IP 地址,如果我更改为 DHCP 配置,我们的 DHCP 服务器将为我分配相同的 IP。我的网关是169.254.1.1

我使用适配器属性中的“高级”按钮添加了192.168.38.1/24IP 地址。一旦我关闭对话框,Windows 便开始192.168.38.1在尝试访问 Internet 时使用该地址作为输出地址。由于我们的路由器位于另一个子网中,因此它不会响应请求。

输出route print是(输出是葡萄牙语我已经翻译了标签:

...
IPv4 route table
===========================================================================
Active routes:
Network address            Mask         Gateway addr.      Interface   Cost
          0.0.0.0          0.0.0.0      169.254.1.1     192.168.38.1    266
...

一旦我删除第二个 IP,路由的接口值就会恢复169.254.1.38,一切都恢复正常。

有什么方法可以改变此路由,使其开始使用正确的 IP 地址?该route add命令仅接受接口作为参数,而不是 IP 地址。

我正在使用 Windows 7 64 位。

答案1

IPv4 链路本地子网,定义在RFC 3927,始终应为 169.254/16(注意:/16 而不是 /24),第三个八位字节中的“0”和“255”值是为手动配置 IPv4 链路本地地址时保留的。第三个八位字节的所有其他值均保留用于自动自我分配,而不是手动分配。所以如果我是你,我会将 169.254.1.38/24 更改为 169.254。0.38/16,我将 169.254.1.1/24 更改为 169.254。0.1/16

如果你有 DHCP 服务器,你不应该使用本地链路,而应该使用RFC 1918私有子网(10/8、172.16/12 或 192.168/16)。因此,实际上,您不应该像我上面描述的那样,仅仅切换到链路本地子网中的第三个八位字节“0”或“255”,而应该完全切换到 RFC 1918 私有子网,并完全停止使用 IPv4 链路本地地址空间。我不确定这是否与您的问题有关,但我认为您可能想知道如何更好地遵循您尝试使用的地址空间的标准。现在修复此问题可能会避免以后出现一些更微妙的问题。

请注意,由于您使用的是 RFC 3927 IPv4 链路本地地址空间,您的 IP 堆栈可能正在使用 RFC 3927 中定义的“所有子网都是本地”行为。由于 IPv4 链路本地地址的“所有子网都是本地”行为,使用 RFC 1918 私有 IP 地址(如 192.168.38.1)与同一广播域(例如以太网 LAN)上的 IPv4 链路本地 IP 地址(如 169.254.1.1)通信是完全没问题的。

答案2

首先,我会用两张网卡来完成这个任务...简单多了。

我只是添加这个来证明你没有得到预期的行为(我知道它不适用于 Windows 7,但这种类型的东西不会经常改变):“配置了多个 IP 地址的单个网络接口卡(NIC)在不同逻辑子网上定义将始终使用 TCP/IP 配置中定义的第一个 IP 地址作为其源地址,无论目的地是什么。”

http://support.microsoft.com/kb/149399

我会检查

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\参数\接口\

然后搜索您的接口,并手动更改“IPAddress”键中 IP 地址的顺序。我对此表示怀疑,但您可能需要禁用并重新启用该接口。

相关内容