Windows 10/11 设置 IPv4/IPv6 访问优先级
约 932 字大约 3 分钟...
一、查看网络前缀访问优先级
先查看Windows10/11 中访问网站时 IPv4/IPv6 的优先级,可以看到 IPv6(::/0)比 IPv4(::ffff:0:0/96) 的优先级高,所以ipv6会被优先访问。
优先顺序越大优先级越高,会优先访问。
命令:netsh interface ipv6 show prefixpolicies

二、网络前缀含义
依次介绍下这些前缀的含义。
Windows10/11 中默认的访问前缀规则是参照 RFC6724: Default Address Selection for Internet Protocol Version 6 (IPv6) 实现的。
::1/128:这是IPv6本地主机地址,类似于IPv4中的127.0.0.1,表示回环地址。它用于测试和本地通信,不会发送到网络中。::/0:这是默认路由,类似于IPv4中的0.0.0.0/0,表示所有未被更具体路由匹配的IPv6地址。这意味着这个前缀包含整个IPv6地址空间。::ffff:0:0/96:这是IPv4映射的IPv6地址,用于IPv4和IPv6之间的兼容性。这类地址用于在IPv6栈上表示IPv4地址,通常用于过渡技术。2002::/16:这是6to4自动隧道地址。6to4是一种过渡机制,用于在IPv4互联网传输IPv6流量。2002::/16前缀中的地址将IPv4地址编码到IPv6地址中。2001::/32:这是Teredo隧道地址,用于IPv6通过IPv4网络的过渡。Teredo是一种隧道协议,使NAT(网络地址转换)后的主机可以使用IPv6。fc00::/7:这是本地唯一地址(ULA),类似于IPv4中的私有地址(如192.168.x.x)。这些地址仅用于本地网络通信,不应该在全球路由器上发布。fec0::/10:这是弃用的站点本地地址,曾经用于类似私有IPv6网络的环境,但由于设计上的问题,已经被替换为ULA(fc00::/7)。3ffe::/16:这是6bone测试网络地址。6bone是早期的IPv6测试网络,3ffe::/16前缀分配给了6bone网络,但在2006年停止使用。::/96:这是IPv4兼容的IPv6地址。最初用于IPv6向后兼容IPv4的过渡技术,但这种技术已被弃用。
详细内容请看 IANA IPv6 Special-Purpose Address Registry 。
三、调整网络前缀优先级,让 IPv4 访问优先
由前面步骤我们知道 IPv6(::/0) 比 IPv4(::ffff:0:0/96) 的优先级高,如果想让ipv4访问优先,我们通过 netsh interface ipv6 命令调整优先级。
Win + S 进入对话框,输入 cmd,选择 以管理员身份运行,执行调整命令,可以看到 IPv4(::ffff:0:0/96) 优先级最高。

使用ping命令进行验证

如果重启电脑后,发现还是 IPv6 访问优先。需要加回 IPv6 的网络前缀,使IPv4 访问优先。
命令:
netsh interface ipv6 add prefixpolicy ::/0 40 1
四、如何重新让 IPv6 访问优先
因为微软默认ipv6优先,所以恢复ipv6访问优先很简单:重置!
命令:
netsh interface ipv6 reset

输入完命令重启计算机即可。
电脑重启后,ping www.baidu.com 会解析 IPv6 地址,则重置成功。




