Windows 10 默认不使用我的 IPv6 地址

Windows 10 默认不使用我的 IPv6 地址

我有来自 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 地址)。

我不知道是否有任何方法可以覆盖这个特定规则(现在我知道为什么它会做出这样的选择,我很乐意保持原样)。

相关内容