在 Windows 中为高级用户配置 IPv6 的指南

Windows Vista、Windows Server 2008 和更高版本的 Windows 实施 RFC 3484,并使用前缀表确定当多个地址可用于域名系统 (DNS) 名称时要使用的地址。

默认情况下,相比 IPv4 地址,Windows 更倾向于使用 IPv6 全球单播地址。

原始 KB 编号:929852

总结

IT 管理员通常禁用 IPv6 来排查与网络相关的问题,例如名称解析问题。

重要

Internet 协议版本 6 (IPv6) 是 Windows Vista 和 Windows Server 2008 及更高版本的必要组成部分。

不建议禁用 IPv6 或 IPv6 组件或从接口取消绑定 IPv6。 如果这样做,某些 Windows 组件可能无法正常工作。

我们建议你在前缀策略中使用“优先 IPv4 而非 IPv6”,而不是禁用 IPV6。

使用注册表项配置 IPv6

重要

请认真遵循本部分所述的步骤。 如果注册表修改不正确,可能会发生严重问题。 在修改注册表之前,请备份注册表,以便在出现问题时可以还原。

备注

  • 必须重启计算机,这些更改才能生效。
  • 在此更改生效之后,0 或 32 以外的值会导致“路由和远程访问”服务失败。

可以通过修改以下注册表项来配置 IPv6 功能:

位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
名称:DisabledComponents
类型:REG_DWORD
最小值:0x00(默认值)
最大值:0xFF(禁用 IPv6)

IPv6 功能 注册表值和注释
优先 IPv4 而非 IPv6 十进制 32
十六进制 0x20
二进制 xx1x xxxx

推荐,而非禁用 IPv6。

若要确认 IPv4 优先于 IPv6,请执行以下步骤:

- 打开命令提示符或 PowerShell。
- 使用“ping”命令检查首选 IP 版本。 例如,“ping bing.com”。
- 如果首选 IPv4,则应在响应中看到返回的 IPv4 地址。

网络连接:

- 打开命令提示符或 PowerShell。
- 使用'netsh 接口 ipv6 显示 prefixpolicies
- 检查“前缀”策略是否已修改为确定 IPv4 的优先级。
-“:ffff:0:0/96”前缀的优先级应高于“::/0”前缀。

例如,如果有两个条目,一个条目优先级为 35,另一个条目优先级为 40,则优先使用优先级为 40 的条目。
禁用 IPv6 十进制 255
十六进制 0xFF
二进制 1111 1111

如果在 Windows 7 SP1 或 Windows Server 2008 R2 SP1 中禁用 IPv6 后遇到启动延迟问题,请参阅在 Windows 中禁用 IPv6 后出现启动延迟

此外,如果错误地将“DisabledComponents”注册表设置的值设为 0xffffffff,导致禁用 IPv6,则系统启动将会延迟 5 秒。 正确的值应为 0xff。 有关详细信息,请参阅 Internet 协议版本 6 (IPv6) 概述

“DisabledComponents”注册表值不会影响复选框的状态。 因此,即使 DisabledComponents 注册表项设置为禁用 IPv6,也仍可勾选每个接口的“网络”选项卡中的复选框。 这是正常现象。

不能完全禁用 IPv6,因为在系统内部许多 TCPIP 任务都会用到 IPv6。 例如,配置此设置后仍可运行 ping ::1
在所有非隧道接口上禁用 IPv6 十进制 16
十六进制 0x10
二进制 xxx1 xxxx
在所有隧道接口上禁用 IPv6 十进制 1
十六进制 0x01
二进制 xxxx xxx1
在所有非隧道接口(环回接口除外)和 IPv6 隧道接口上禁用 IPv6 十进制 17
十六进制 0x11
二进制 xxx1 xxx1
优先 IPv6 而非 IPv4 二进制 xx0x xxxx
在所有非隧道接口上重新启用 IPv6 二进制 xxx0 xxxx
在所有隧道接口上重新启用 IPv6 二进制 xxx xxx0
在非隧道接口和 IPv6 隧道接口上重新启用 IPv6 二进制 xxx0 xxx0

可以按照以下步骤修改注册表项:

  1. 打开管理员“命令提示符”窗口。

  2. 运行以下命令:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" /v DisabledComponents /t REG_DWORD /d <value> /f
    

    注意

    将 <值> 替换为对应的值。

如何计算注册表值

Windows 使用位掩码检查 DisabledComponents 值并确定是否应禁用组件。

若要了解每个位(从低到高)控制哪个组件,请参阅下表。

名称 Setting
Tunnel 禁用隧道接口
Tunnel6to4 禁用 6to4 接口
TunnelIsatap 禁用 Isatap 接口
Tunnel Teredo 禁用 Teredo 接口
本机 禁用本机接口(也称为 PPP)
PreferIpv4 在默认前缀策略中优先使用 IPv4
TunnelCp 禁用 CP 接口
TunnelIpTls 禁用 IP-TLS 接口

对于每一位,“0”表示 false,“1”表示 true。 有关示例,请参阅下表。

Setting 在前缀策略中优先使用 IPv4 over IPv6 在所有非隧道接口上禁用 IPv6 在所有隧道接口上禁用 IPv6 在非隧道接口(环回接口除外)和 IPv6 隧道接口上禁用 IPv6
禁用隧道接口 0 0 1 1
禁用 6to4 接口 0 0 0 0
禁用 Isatap 接口 0 0 0 0
禁用 Teredo 接口 0 0 0 0
禁用本机接口(也称为 PPP) 0 1 0 1
在默认前缀策略中优先使用 IPv4。 1 0 0 0
禁用 CP 接口 0 0 0 0
禁用 IP-TLS 接口 0 0 0 0
Binary 0010 0000 0001 0000 0000 0001 0001 0001
十六进制 0x20 0x10 0x01 0x11

此注册表值不会影响以下复选框的状态。 即使此注册表项设置为禁用 IPv6,也仍可以选中每个接口的“网络”选项卡中的复选框。 这是正常现象。

“网络”属性中的 Internet 协议版本 6 (TCP/IPv6) 选项。

从接口取消绑定 IPv6

注意

不建议从以太网或 WiFi 网络适配器取消绑定 IPv6,而无需合理。 Windows 已经过测试,并且某些产品和功能需要 IPv6 绑定且功能正常。

从网络适配器取消绑定 IPv6 可能会导致 Windows 配置不受支持。

从网络适配器取消绑定协议时,强烈建议使用基于 WMI 的方法,例如 Disable-NetAdapterBinding

可以使用以下方法之一从网络接口取消绑定 IPv6:

  • 在网络属性 GUI 中取消选择 Internet 协议版本 6 (TCP/IPv6 )。 请参阅上面的屏幕截图。
  • 运行 PowerShell 命令 Disable-NetAdapterBinding -Name "<MyAdapter>" -ComponentID ms_tcpip[6]

IPv6 隧道接口

默认情况下,当为接口分配公共 IPv4 地址时,Windows 系统会启用 6to4 隧道协议(公共 IPv4 地址是指除 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16 范围外的任何 IPv4 地址)。 6to4 为每个地址的 6to4 隧道接口分配一个 IPv6 地址,并且 6to4 将在分配的 DNS 服务器上动态注册这些 IPv6 地址。

如果这不是预期行为,我们建议你在受影响的主机上禁用 IPv6 隧道接口。

可以使用下列方法之一禁用 6to4 隧道协议和其他 IPv6 转换技术:

  • DisabledComponents 注册表项设置为0x01。

  • 设置以下组策略:
    计算机配置\管理模板\网络\TCPIP 设置\IPv6 转换技术

    • 6to4 状态 设置为 “已禁用”
    • ISATAP Sate 设置为 “已禁用”
    • Teredo 状态 设置为 “已禁用”

备注

默认情况下,在 Windows 中禁用 ISATAP 和 Teredo。

参考

有关 RFC 3484 的详细信息,请参阅 Internet 协议版本 6 (IPv6) 的默认地址选择

有关如何设置 IPv4 优先于 IPv6 的更多信息,请参阅使用 SIO_ADDRESS_LIST_SORT

有关 RFC 4291 的信息,请参阅 IP 版本 6 寻址体系结构

有关相关问题的详细信息,请参阅以下文章:

用于帮助处理网络跟踪的工具: Microsoft 网络监视器 3.4(存档)

警告

启用 LBFO NIC 分组时,Netmon 3.4 与 Windows Server 2012 或更新版本的操作系统不兼容。