在 Windows 7 64 位上禁用 IPv6 环回

O.O*_*.O. 7 networking windows-7

我有一台Windows 7 64 位机器,我找不到禁用IPv6 Loopback 的方法。我查看了如何在 Windows 中禁用 IP 版本 6 或其特定组件的文章,并展示了如何设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents为各种值——但这些似乎都没有禁用 IPv6 环回。我尝试将此值设置为0xffffffff0x20– 在每次更改后重新启动我的计算机,但我仍然没有禁用它。

我正在使用另一个名为WebdriverSelenium 的软件,如果未禁用 IPv6 环回,则在调试时会出错。它似乎尝试连接[::1]:7055并失败。有没有办法强制它连接到127.0.0.1.

Bri*_*ian 17

我会改为修改前缀策略,以便在可用时通过 IPv6 使用 IP4 地址。

C:\>netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        30      2  2002::/16
        20      3  ::/96
        10      4  ::ffff:0:0/96
         5      5  2001::/32
Run Code Online (Sandbox Code Playgroud)

在上面的列表中,带有标签 3 和 4 的行代表 IP4 兼容性列表。如果您增加它们的优先级,它们将是首选。它们需要高于带有标签 0 的地址,因为这是本地主机地址。

C:\>netsh interface ipv6 set prefix ::/96 60 3
Ok.

C:\>netsh interface ipv6 set prefix ::ffff:0:0/96 55 4
Ok.
Run Code Online (Sandbox Code Playgroud)

现在,如果您ping localhost或主机名都可用时,它将使用 IP4 地址而不是 IPv6 地址。事实上,对于具有 IP4 地址的所有内容,它将通过 IPv6 地址使用该地址。


小智 0

尝试编辑您的主机文件 ( C:\Windows\System32\drivers\etc\hosts)。当我第一次打开它时,我的主机文件看起来像这样:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
Run Code Online (Sandbox Code Playgroud)

取消注释与 localhost 关联的 IPv4 环回地址,并确保以 开头的行::1被注释掉。

# localhost name resolution is handled within DNS itself.
  127.0.0.1       localhost
# ::1             localhost
Run Code Online (Sandbox Code Playgroud)

还有两件事要记住:

  1. 您需要以提升的权限启动文本编辑器(例如记事本),否则编辑完成后将无法保存文件。启动编辑器时,只需右键单击并选择“以管理员身份运行”。

  2. 完成编辑后,将更改保存到主机文件并重新启动计算机。

旁注:在某些系统上,操作员可以通过发送请求 DNS 服务器重新读取其配置文件SIGHUP(示例kill -HUP <pid>:)。我想有一种方法可以在 Windows 7 中执行类似的操作(从而避免重新启动)。

  • 谢谢@Double。我的主机文件实际上是这样做的,即“127.0.0.1”未注释,“::1”注释掉。 “ping localhost”确实连接到“127.0.0.1”。但是,我想知道一种完全禁用 **IPv6 环回** 的方法 - 以便我的计算机上运行的软件不知道 **IPv6 环回** (2认同)