调整Windows中IPv6的优先级

现在,IPv6正逐渐普及,三大运营商早已为移动设备分配地址块,同时,越来越多的网站通过CDN的方式得到了IPv6接入。但相比于IPv4,IPv6的路由有时并不是最优的。特别对于跨网流量(教育网,海外流量),IPv6交换点较少,也稍微拥堵。在Chrome中,如果某个域名同时具有A解析和AAAA解析,除非对应的IPv6连接超时,其总是优先通过IPv6连接。但对于某些特殊网络环境(渣渣校园网,具有教育网双栈和移动v4出口),学校提供的DNS服务器返回的AAAA记录对应的地址可能来自三大运营商,都得绕道有时候拥堵的北京教育网交换中心。对于B站的CDN资源站,总是在加载中,将IPv6禁用后,能解决一部分问题(开热点更实在)。

另外,在某些 VPS(如 CloudAtCost )的 Windows 系统模板,无法进行和保存IPv6的设置,原因之一是在这个接口禁用了IPv6(0xFF),修改注册表即可。

简单地操作,Win+R 打开运行,输入 regedit 打开注册表编辑器,手动选择或在地址栏中输入目标目录 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ ,在这个目录中新建一个 DWORD(32)位 值,其名称为 DisabledComponents ,值可以为十进制的 32 或十六进制的 20。

你也可以在新建一个 .reg 文件,双击这个文件,将相应的表项导入:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
"DisabledComponents"=dword:00000020

以下,是微软官方文档(Guidance for configuring IPv6 in Windows for advanced users)有关IPv6配置的总结。原文的中文机器机器更让人看得云里雾里。

适用版本:   Windows 10 – all editions, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2

默认情况下,相比于IPv4,Windows 会优先使用IPv6全球单播地址。如果在特殊网络环境中,因为IPv6会带来更不好的网络体验,你可以尝试调整优先级,使Windows优先使用IPv4,而不是关闭IPv6,要不,你就失去了许多有趣的站点的访问资格。

你也可以为 DisabledComponents 不同的值,将原表简要地整理如下。

IPv6 FunctionalityRegistry valueComments
Prefer IPv4 over IPv6
优先使用IPv4
Dec 32
Hex 0x20
Bin
xx1x xxxx
Recommended instead of disabling it.
相比与关闭IPv6,设置为IPv4优先更加符合主流。
Disable IPv6
关闭IPv6
Dec 255
Hex 0xFF
Bin 1111 1111
See startup delay occurs after you disable IPv6 in Windows if you encounter startup delay after you disable IPv6 in Windows 7 SP1 or Windows Server 2008 R2 SP1.

Additionally, system startup will be delayed for 5 seconds if IPv6 is disabled by incorrectly, setting the Disabled Components registry setting to a value of 0xfffffff. The correct value should be 0xff. For more information, see Internet Protocol Version 6 (IPv6) Overview.

The Disabled Components registry value does not affect the state of the check box. Therefore, even if the Disabled Components registry key is set to disable IPv6, the check box in the Networking tab for each interface can still be checked. This is expected behavior.
disable IPv6 on all nontunnel interfaces
关闭非隧道接口的IPv6功能
Dec 16
Hex 0x10
Bin xxx1 xxxx
disable IPv6 on all tunnel interfaces
关闭隧道接口的IPv6功能
Dec 1
Hex 0x01
Bin xxxx xxx1
disable IPv6 on all nontunnel interfaces (except the loopback) and on IPv6 tunnel interface
关闭非隧道接口以及IPv6隧道接口上的IPv6
Dec 17
Hex 0x11
Bin xxx1 xxx1
prefer IPv6 over IPv4
优先使用IPv6
Bin xx0x xxxx
re-enable IPv6 on all nontunnel interfaces
重新启用所有非隧道接口上的IPv6
Bin xxx0 xxxx
re-enable IPv6 on all tunnel interfaces
重新启用所有隧道接口上的IPv6
Bin xxx xxx0
Re-enable IPv6 on nontunnel interfaces and on IPv6 tunnel interfaces
重新启动所有非隧道接口以及IPv6隧道接口上的IPv6
Bin xxx0 xxx0

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Back to Top