我之前一直使用IPv4和IPv6双栈的网络,并且默认IPv6优先访问,不知道哪天突然IPv4优先访问了。可能是IPv6网络不稳定,导致IPv6降级不优先了。
直接ping域名是访问IPv4的地址。
C:\Users\hale>ping iteachs.com
正在 Ping iteachs.com [45.32.92.244] 具有 32 字节的数据:
来自 45.32.92.244 的回复: 字节=32 时间=166ms TTL=48
来自 45.32.92.244 的回复: 字节=32 时间=161ms TTL=48
来自 45.32.92.244 的回复: 字节=32 时间=160ms TTL=48
45.32.92.244 的 Ping 统计信息:
数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 160ms,最长 = 166ms,平均 = 162ms
Control-C
^C
C:\Users\hale>
加上-6参数才能ping IPv6地址。
C:\Users\hale>ping -6 iteachs.com
正在 Ping iteachs.com [2001:19f0:6001:799:5400:ff:fe5b:95f4] 具有 32 字节的数据:
来自 2001:19f0:6001:799:5400:ff:fe5b:95f4 的回复: 时间=156ms
来自 2001:19f0:6001:799:5400:ff:fe5b:95f4 的回复: 时间=155ms
2001:19f0:6001:799:5400:ff:fe5b:95f4 的 Ping 统计信息:
数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 155ms,最长 = 156ms,平均 = 155ms
Control-C
查看IPv6的前缀策略
C:\Users\hale>netsh interface ipv6 show prefixpolicies
查询活动状态...
优先顺序 标签 前缀
---------- ----- --------------------------------
50 0 ::/96
40 1 ::ffff:0:0/96
35 2 2002::/16
30 3 2001::/32
10 4 ::1/128
5 5 ::/0
3 13 fc00::/7
1 12 3ffe::/16
1 11 fec0::/10
C:\Users\hale>
发现::ffff:0:0/96的优先级比::/0的优先级还高,该地址为IPv4的映射地址。
使用命令将优先级调整:
netsh interface ipv6 set prefixpolicy ::/0 45 5 persistent
C:\WINDOWS\system32>netsh interface ipv6 set prefixpolicy ::/0 45 5 persistent
确定。
C:\WINDOWS\system32>
然后再使用ping测试
C:\WINDOWS\system32>ping iteachs.com
正在 Ping iteachs.com [2001:19f0:6001:799:5400:ff:fe5b:95f4] 具有 32 字节的数据:
来自 2001:19f0:6001:799:5400:ff:fe5b:95f4 的回复: 时间=157ms
来自 2001:19f0:6001:799:5400:ff:fe5b:95f4 的回复: 时间=155ms
来自 2001:19f0:6001:799:5400:ff:fe5b:95f4 的回复: 时间=159ms
2001:19f0:6001:799:5400:ff:fe5b:95f4 的 Ping 统计信息:
数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 155ms,最长 = 159ms,平均 = 157ms
Control-C
^C
C:\WINDOWS\system32>
这会就正常了,然后查看IPv6的前缀策略
C:\Users\hale>netsh interface ipv6 show prefixpolicies
查询活动状态...
优先顺序 标签 前缀
---------- ----- --------------------------------
50 0 ::/96
45 5 ::/0
40 1 ::ffff:0:0/96
35 2 2002::/16
30 3 2001::/32
10 4 ::1/128
3 13 fc00::/7
1 12 3ffe::/16
1 11 fec0::/10
C:\Users\hale>
这回问题解决了,另外还可以使用netsh interface ipv6 reset将IPv6进行重置也可以解决。
另外,根据调整::ffff:0:0/96的优先级可以切换IPv4和IPv6的优先访问顺序。
参考文章,只不过他们都是调整IPv4更优:
https://kb.firedaemon.com/support/solutions/articles/4000160803-prioritising-ipv4-over-ipv6-on-windows-10-and-11
https://blog.csdn.net/weixin_39851008/article/details/116686079
https://blog.csdn.net/xufulin2/article/details/122467045