为什么Windows 10比IPv6更喜欢IPv4?

罗斯·泰杰瓦(Ross Tajvar)

截至撰写本文时(1903),我正在运行Windows 10的最新版本,并且我有一个有效的双堆栈连接。如果我从命令行ping双堆栈设备的主机名,则Windows将首选IPv4地址。如果我关闭IPv4,它将使用IPv6地址。根据众多消息来源(包括此答案),Windows应该更喜欢IPv6。

罗斯·泰杰瓦(Ross Tajvar)

正如描述的这个答案,我按照这些步骤来获得网络堆栈的跟踪:

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

生成的文本文件包含以下行:

[2]0910.3710::2019-08-10 01:27:15.198580000 [Microsoft-Windows-TCPIP]IP: Address pair (::ffff:10.0.12.67, ::ffff:172.217.7.132) is preferred over (fd85:741f:6df1:212:50df:dc26:f469:4d4c, 2607:f8b0:4004:800::2004) by SortOptions: 0, Reason: Prefer Matching Label  (Rule D 5.0).

关键是

Reason: Prefer Matching Label

RFC 3484第5节“源地址选择”中对此进行了描述前缀基本上可以具有“标签”,并且源/目标地址对中源标签和目标标签匹配的优先于不匹配的对。

我可以通过运行在计算机上查看前缀/标签映射

netsh interface ipv6 show prefixpolicies

我懂了

Precedence  Label  Prefix
----------  -----  --------------------------------
        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     12  3ffe::/16
         1     11  fec0::/10
         1      3  ::/96

由于我的源IPv6地址fd85:741f:6df1:212:50df:dc26:f469:4d4c是ULA地址(我使用NPt允许在两个不同的WAN连接之间进行故障转移),因此它属于fc00 :: / 7并得到13的标签。我的目标地址在:: / 0内,并且得到1的标签。那些不匹配,因此首选IPv4,它们都在:: ffff:0:0/96内并且得到的标签4,

为了解决这个问题,我只需要添加一个前缀策略即可将源地址的标签设置为1。我可以通过在管理命令提示符下运行以下命令来做到这一点:

netsh interface ipv6 add prefixpolicy fd00::/8 3 1

这将为fd00 :: / 8(整个ULA前缀)添加一个策略,该策略的优先级为3,标签为1。这是更新的前缀策略表:

Precedence  Label  Prefix
----------  -----  --------------------------------
        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
         3      1  fd00::/8
         1     12  3ffe::/16
         1     11  fec0::/10
         1      3  ::/96

现在,当我对双栈主机名执行ping操作时,它会首选IPv6地址。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我同时拥有IPv4和IPv6公共地址。为什么?

来自分类Dev

为什么接口同时显示ipv6地址和ipv4

来自分类Dev

为什么lsof指示我的IPv4套接字是IPv6?

来自分类Dev

IPv4“ arp -an”和“ arp who-has”的IPv6模拟是什么?

来自分类Dev

关于ipv4和ipv6,硬编码是什么?

来自分类Dev

IPv4和IPv6之间的主要区别是什么?

来自分类Dev

Windows 7中的IPv4和IPv6优先级

来自分类Dev

在支持 IPv4 和 IPv6 的 Windows 上构建 Subversion

来自分类Dev

为什么我同时拥有一个IPv4和IPv6地址?

来自分类Dev

通过dhcp为带有debian的ipv4和ipv6自动配置接口的正确方法是什么?

来自分类Dev

我们可以在Windows XP / 2003上禁用IPV4并仅使用IPV6吗?

来自分类Dev

如何从任何进程关闭 Windows 上的套接字(ipv4 和 ipv6)连接?

来自分类Dev

为什么IPV4以10为基数表示

来自分类Dev

为什么Ruby的IPAddr#family方法在IPv4地址上调用时返回2,而在IPv6地址上调用时返回10?

来自分类Dev

为什么Ruby的IPAddr#family方法在IPv4地址上调用时返回2,而在IPv6地址上调用时返回10?

来自分类Dev

如何让浏览器更喜欢IPv6而不是IPv4?

来自分类Dev

浏览器显示IPv6,但查询返回IPv4-为什么?

来自分类Dev

什么是 IPV4 类?

来自分类Dev

Windows 10:通过ipv4启动PXE错误

来自分类Dev

Windows 10挂起后没有IPv6 RA

来自分类Dev

我可以使用IPv4地址访问我的网站,但不能使用IPv6地址访问我的网站。为什么?

来自分类Dev

什么是IPv6,我为什么要关心?

来自分类Dev

为什么IPv4 TCP连接显示为tcp6?

来自分类Dev

netstat — 为什么 IPv4 守护进程只监听 -A inet6 中列出的端口?

来自分类Dev

为什么Windows 8 PC保留所有不推荐使用的IPv6前缀的日志?

来自分类Dev

为什么接口具有禁用了IPv6的IPv6地址?

来自分类Dev

MIT为什么会有/ 8 IPv4块?

来自分类Dev

为什么我的IPV6在存储时会被截断?

来自分类Dev

为什么ARP在IPv6中被NDP取代?

Related 相关文章

  1. 1

    我同时拥有IPv4和IPv6公共地址。为什么?

  2. 2

    为什么接口同时显示ipv6地址和ipv4

  3. 3

    为什么lsof指示我的IPv4套接字是IPv6?

  4. 4

    IPv4“ arp -an”和“ arp who-has”的IPv6模拟是什么?

  5. 5

    关于ipv4和ipv6,硬编码是什么?

  6. 6

    IPv4和IPv6之间的主要区别是什么?

  7. 7

    Windows 7中的IPv4和IPv6优先级

  8. 8

    在支持 IPv4 和 IPv6 的 Windows 上构建 Subversion

  9. 9

    为什么我同时拥有一个IPv4和IPv6地址?

  10. 10

    通过dhcp为带有debian的ipv4和ipv6自动配置接口的正确方法是什么?

  11. 11

    我们可以在Windows XP / 2003上禁用IPV4并仅使用IPV6吗?

  12. 12

    如何从任何进程关闭 Windows 上的套接字(ipv4 和 ipv6)连接?

  13. 13

    为什么IPV4以10为基数表示

  14. 14

    为什么Ruby的IPAddr#family方法在IPv4地址上调用时返回2,而在IPv6地址上调用时返回10?

  15. 15

    为什么Ruby的IPAddr#family方法在IPv4地址上调用时返回2,而在IPv6地址上调用时返回10?

  16. 16

    如何让浏览器更喜欢IPv6而不是IPv4?

  17. 17

    浏览器显示IPv6,但查询返回IPv4-为什么?

  18. 18

    什么是 IPV4 类?

  19. 19

    Windows 10:通过ipv4启动PXE错误

  20. 20

    Windows 10挂起后没有IPv6 RA

  21. 21

    我可以使用IPv4地址访问我的网站,但不能使用IPv6地址访问我的网站。为什么?

  22. 22

    什么是IPv6,我为什么要关心?

  23. 23

    为什么IPv4 TCP连接显示为tcp6?

  24. 24

    netstat — 为什么 IPv4 守护进程只监听 -A inet6 中列出的端口?

  25. 25

    为什么Windows 8 PC保留所有不推荐使用的IPv6前缀的日志?

  26. 26

    为什么接口具有禁用了IPv6的IPv6地址?

  27. 27

    MIT为什么会有/ 8 IPv4块?

  28. 28

    为什么我的IPV6在存储时会被截断?

  29. 29

    为什么ARP在IPv6中被NDP取代?

热门标签

归档