Windows 7 中的 IPv4 与 IPv6 优先级

Windows 7 中的 IPv4 与 IPv6 优先级

我通过 Hurricane Electric 隧道实现了 IPv6 连接。自今年 IPv6 发布以来,许多服务(google.com、facebook.com 等)在其主域上启用了 IPv6。在我的 Windows 计算机上,IPv6 优于 IPv4。这意味着每当我访问 Google 时,所有流量都会通过我的隧道到达 Hurricane Electric,这会使延迟增加 100% 以上:

C:\> ping www.google.com

Pinging www.l.google.com [2001:4860:8005::68] with 32 bytes of data:
Reply from 2001:4860:8005::68: time=85ms
Reply from 2001:4860:8005::68: time=84ms
Reply from 2001:4860:8005::68: time=112ms
Reply from 2001:4860:8005::68: time=86ms

Ping statistics for 2001:4860:8005::68:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 84ms, Maximum = 112ms, Average = 91ms


C:\> ping -4 www.google.com

Pinging www.l.google.com [173.194.79.103] with 32 bytes of data:
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=55ms TTL=46
Reply from 173.194.79.103: bytes=32 time=29ms TTL=46

Ping statistics for 173.194.79.103:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 28ms, Maximum = 55ms, Average = 35ms

问题:当特定域名同时提供 IPv4 和 IPv6 记录时,如何让 Windows 7 始终首选 IPv4?

答案1

解决方案 1:添加前缀策略以优先选择 IPv4 地址而不是 IPv6 地址

前缀策略表与路由表类似,它决定建立连接时优先使用哪些 IP 地址。请注意,前缀策略中的优先级越高,表示“优先级”值越高,与路由表“成本”值正好相反。

默认的Windows前缀策略表:

C:\> netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        30      2  2002::/16
        20      3  ::/96
        10      4  ::ffff:0:0/96
         5      5  2001::/32

请注意,IPv6 地址(::/0)优于 IPv4 地址(::/96, ::ffff:0:0/96)。

我们可以制定一项政策将使 Hurricane Electric IPv6 隧道比任何 IPv4 地址都更不受欢迎

netsh interface ipv6 add prefixpolicy 2001:470::/32 3 6

2001:470::/32是 Hurricane Electric 的前缀,3是 Precedence(非常低),6是 Label。

我本可以使用更通用的前缀,但我想确保如果我从 ISP 获得直接 IPv6 连接,它将优先于 IPv4。

如果您采用此解决方案,则需要用适当的 IPv6 前缀替换我的 Hurricane Electric 前缀。

解决方案 #2:调整注册表以使 Windows 始终优先使用 IPv4 而不是 IPv6

这个方案比较通用,但是侵入性比较强,而且不太符合标准。最后,Windows 还是会帮你修改前缀策略表。

  • 打开 RegEdit,导航至HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • 创建DisabledComponentsDWORD 注册表值,将其值设置为 20(十六进制)。请参阅Microsoft 知识库 929852有关此注册表项的更多信息,特别是如果DisabledComponents您的系统上已经存在此注册表项。
  • 重启。

答案2

如果您害怕等宽文本和带有奇怪数字和符号的表格,您可以使用 Microsoft Fix-its 来实现,这是 Microsoft 提供的简单安装程序,可以为您更改配置。

这些修复它的来自知识库 2533454,这说明如果您的 IPv6 连接中断,您将需要执行此操作。您需要以管理员身份运行修复程序;下载后,右键单击并选择以管理员身份运行。

答案3

最简单的方法,这些方法总是如此简单以至于我们忽略了它们......

  1. 打开网络与共享中心。

  2. 点击更改适配器设置

  3. 在“菜单栏”上单击“高级”。**注意:如果您只看到“组织”,请单击它,然后从下拉菜单中选择“布局 - 菜单栏”

  4. 在上一步中单击“高级”后,在此步骤中单击“高级设置”(屏幕上将打开一个框)

  5. 显示的是适配器和设置,您当前使用的适配器已在上半部分突出显示,其代表性细分在下方(您应该会看到该适配器的绑定)。突出显示列表中的任何一个绑定,您应该注意到右侧的箭头亮起,使用这些箭头将绑定顺序更改为您的偏好,然后从底部选择确定。

  6. 请注意,这就像您在适配器属性中安装协议、服务或客户端一样。这里也适用。即您更改一个适配器,其余适配器也会随之更改。因此,例如,如果您在无线适配器上选择 IPV6 优先于 4,您的 LAN 适配器也会更改。

这是我能想到的完成这项特定任务的最简单的方法,无需考虑太多,也不需要对网络上的数据包路由有太多了解。

答案4

有一种更简单的方法对我有用。我只是更改了接口度量值 # 来确定其优先级。我过去曾使用此方法来更改网络适配器的优先级(无线 NIC 优先级第一,LAN NIC 优先级第二),但我发现它对 TCP/IPv4 和 TCP/IPv6 也有效。在这种情况下,我将 TCP/IPv4 的接口度量值从自动更改为 5,将 TCP/IPv6 接口度量值从自动更改为 10。度量值越低,优先级越高。然后重新启动您的 PC。所以现在每当我使用主机名 ping 时,它都会从 IPv4 而不是 IPv6 回复。

以下是更详细的说明

https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10

相关内容