现在,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 Functionality | Registry value | Comments |
---|---|---|
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 |