ipv6 与 ipv4的优先级
当ipv4和ipv6地址同时存在的时候,电脑是默认优先使用ipv6地址去上网。 为什么要默认先使用ipv6地址去上网呢? 在 Windows 系统中,当 IPv4 和 IPv6 同时启用时,默认优先使用 IPv6 地址访问的行为是由操作系统遵循的网络协议优先级规则和RFC 标准共同决定的。 Windows 的网络协议栈实现了RFC 6724(取代了 RFC 3484)定义的地址选择算法,该标准明确规定了 IPv6 的优先级高于 IPv4。
那我们如何查看,系统中的ipv6优先级是高于ipv4的呢?
我们可以使用,netsh interface ipv6 show prefixpolicies
命令查看。
那每行都是什么意思呢?
- ::1/128
前缀:IPv6 本地回环地址(即 localhost)。
优先级:50(最高优先级)。
标签:0。
用途:本地通信优先使用回环地址。
- ::/0
前缀:所有 IPv6 全局单播地址(例如 2001:db8::1)。--这个就是我们电脑使用的ipv6地址。
优先级:40。
标签:1。
用途:默认 IPv6 公网地址的优先级高于 IPv4。
- ::ffff:0:0/96
前缀:IPv4 映射的 IPv6 地址(例如 ::ffff:192.168.1.1 对应 IPv4 的 192.168.1.1)。---这个就是我们电脑使用的ipv4地址。
优先级:35。
标签:4。
用途:代表 IPv4 地址,优先级低于 IPv6 全局地址。
- 2002::/16
前缀:6to4 隧道地址(用于通过 IPv4 网络传输 IPv6 数据包)。
优先级:30。
标签:2。
用途:通过隧道技术实现 IPv6 over IPv4。
- 2001::/32
前缀:Teredo 隧道地址(另一种 IPv6 over IPv4 隧道技术)。
优先级:5。
标签:5。
用途:低优先级隧道地址,通常用于临时连接。
- fc00::/7
前缀:IPv6 唯一本地地址(ULA,类似 IPv4 的私有地址 10.0.0.0/8)。
优先级:3。
标签:13。
用途:内网通信,优先级较低。
- ::/96
前缀:已废弃的 IPv6 兼容 IPv4 地址(如 ::192.168.1.1)。
优先级:1。
标签:3。
用途:历史遗留格式,现代系统基本不再使用。
- fec0::/10
前缀:已废弃的 IPv6 站点本地地址(类似旧版内网地址)。
优先级:1。
标签:11。
用途:被 fc00::/7(ULA)取代。
- 3ffe::/16
前缀:早期 IPv6 测试地址(6bone 网络)。
优先级:1。
标签:12。
用途:历史遗留,无实际用途。
规则总结
优先级排序(从高到低):
::1/128 (50) > ::/0 (40) > ::ffff:0:0/96 (35) > 2002::/16 (30) > 其他低优先级条目。
IPv6 全局地址(::/0)优先级高于 IPv4(::ffff:0:0/96)。
本地回环地址(::1/128)拥有最高优先级。
那我们是否可以强制修改ipv4的优先级来高于ipv6的优先级呢?
如果需要强制让 IPv4 优先级高于 IPv6(不推荐,仅特殊场景使用):
- 修改策略表中的 IPv4 映射地址优先级:
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 41 4
将 ::ffff:0:0/96(IPv4)的优先级设为 大于40,就可以优先于所有ipv6全局单播地址,要高于50才能优先于IPv6 本地回环地址。
- 恢复默认值:
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 35 4
原文:https://mp.weixin.qq.com/s/jh7zPbwRKVf3G7ClaRi-eQ