我有来自 sixxs.net 的 IPv6 地址,但如果我 ping 具有 IPv4 和 IPv6 地址的主机(即 www.google.com 或 www.facebook.com),我会在 Windows 10 上获得 IPv4 地址,但在同一网络中的所有 Windows 7 和 Windows 8.1 计算机上都会获得 IPv6 地址。我必须使用 -6 强制它 ping IPv6。
我已经尝试过这里提到的快捷方式https://support.microsoft.com/en-us/kb/929852选择 IPv6 而不是 IPv4,但这并不能解决问题。当我访问 IPv4 和 IPv6 网站时,我总是看到 IPv4 页面。
test-ipv6.com 告诉我我的浏览器有一个真实有效的 IPv6 地址但我避免使用它。http://test-ipv6.com/faq_avoids_ipv6.html
h:\>ping www.facebook.com 正在 Ping star.c10r.facebook.com [31.13.66.1],数据为 32 字节: 来自 31.13.66.1 的回复:字节=32 时间=8ms TTL=87 h:\>ping -6 www.facebook.com 正在 Ping star.c10r.facebook.com [2a03:2880:f013:1:face:b00c:0:1],包含 32 个字节 数据: 来自 2a03:2880:f013:1:face:b00c:0:1 的回复:时间=145ms
netsh 接口 ipv6 显示前缀策略 正在查询活动状态... 优先标签前缀 ---------- ----- -------------------------------- 50 0 ::1/128 40 1 ::/0 35 4 ::ffff:0:0/96 30 2 2002::/16 5 5 2001::/32 3 13 fc00::/7 1 11 fec0::/10 1 12 3ffe::/16 1 3 ::/96
更新
我以为是我的路由器出了问题。当我从 Shibby Tomato v131 升级到 v132 时,问题似乎解决了,但现在又出现了。它仍然适用于 Windows 7 和 8.1,但不适用于 Windows 10。我使用固定无线,所以我的互联网连接已经存在一些延迟。当我使用 IPv6 隧道时,有时会增加显著的延迟(59-100 毫秒)。我认为 Windows 10 有一个功能,如果 IPv6 明显较慢,它会支持 IPv4,但我不知道限制是什么。
第二次更新
如果我禁用 IPv4,则 IPv6 可以正常工作。如果我 ping 具有 IPv4 和 IPv6 的主机名,它将 ping IPv6 地址。
>ping facebook.com 正在 Ping facebook.com [2a03:2880:2130:7f20:face:b00c:0:25de],包含 32 字节的 da A: 来自 2a03:2880:2130:7f20:face:b00c:0:25de 的回复:时间=161ms 来自 2a03:2880:2130:7f20:face:b00c:0:25de 的回复:时间=317ms 来自 2a03:2880:2130:7f20:face:b00c:0:25de 的回复:时间=215ms 来自 2a03:2880:2130:7f20:face:b00c:0:25de 的回复:时间=154ms 2a03:2880:2130:7f20:face:b00c:0:25de 的 Ping 统计信息: 数据包:已发送 = 4,已接收 = 4,丢失 = 0(0% 丢失), 近似往返时间(以毫秒为单位): 最小值 = 154 毫秒,最大值 = 317 毫秒,平均值 = 211 毫秒
答案1
我遇到了同样的问题——ipv4 和 ipv6 都可以工作,但如果我尝试 ping(或浏览等)任何带有 IPv4 A 记录的名称,Windows 总是会优先选择该名称而不是 v6(AAAA)地址。网络堆栈内部有逻辑对来自 DNS 查询的地址进行排序,以选择优先选择哪个地址。就我而言,它优先选择 v4 地址,因为我的 Wifi 接口支持 LAN 唤醒,又称始终在线始终连接 (AOAC),但显然仅适用于 IPv4。
您可以启用一个 ETW 跟踪点来准确查明排序地址时发生的情况;下面是使用内置 netsh 工具执行此操作的示例。我使用 www.google.com 作为示例,但任何具有 A 和 AAAA 记录的主机都应该可以工作。
netsh trace start provider=Microsoft-Windows-TCPIP level=5 keywords=ut:TcpipRoute
ping -n 1 www.google.com
netsh trace stop
netsh trace convert %TEMP%\NetTraces\NetTrace.etl
现在,查看nettrace.txt
它写入的文件,希望你能找到线索。 就我而言,它是:
[Microsoft-Windows-TCPIP]IP: Address pair (::ffff:192.168.1.100, ::ffff:74.125.28.99) is preferred over (2601:XXX:XXX:XXX:XXX:XXX:XXX:XXX, 2607:f8b0:400e:c04::67) by SortOptions: 0, Reason: Prefer Aoac Interface (Rule D 1.1).
(其中 XXX 是我已编辑的公共 IPv6 地址)。
我不知道是否有任何方法可以覆盖这个特定规则(现在我知道为什么它会做出这样的选择,我很乐意保持原样)。