![我怎样才能让 localhost 解析为 127.0.0.1 而不是 ::1?](https://linux22.com/image/1301490/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E8%AE%A9%20localhost%20%E8%A7%A3%E6%9E%90%E4%B8%BA%20127.0.0.1%20%E8%80%8C%E4%B8%8D%E6%98%AF%20%3A%3A1%EF%BC%9F.png)
当我 ping localhost 时,该地址解析为::1
我的 MySQL 和 Apache 安装需要的 ipv4 地址是127.0.0.1
如何配置我的 WindowsXP 以将 localhost 解析为 127.0.0.1?
我的 C:\WINDOWS\system32\drivers\etc\hosts 文件:
127.0.0.1 localhost
127.0.0.1 trunk
127.0.0.1 focus
127.0.0.1 demo
我还在 Windows 注册表中设置了以下内容:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
"DisabledComponents"=dword:00000255
我还可以尝试其他什么吗?
答案1
这取决于您正在使用的应用程序,即您的应用程序是否要求提供 IPv6 地址。
例如,Linux 上的 telnet 在尝试之前会尝试使用 ipv6 地址进行连接,除非你明确指定协议
默认
x@x:~$ telnet localhost
Trying ::1...
Trying 127.0.0.1...
v4 已指定
x@x:~$ telnet -4 localhost
Trying 127.0.0.1...
对于您的问题,因为您没有绑定 v6 地址(用于 apache 和 mysql 服务)。在 mysql 和 apache 配置中,您可以在指定 localhost 的地方明确指定“127.0.0.1”。这应该可以解决您的问题。
答案2
如果您不想使用 IPv6,请在连接上禁用它并确保已启用 IPv4。
假设您有标准有线链路,您可以在“本地连接”的属性窗口中找到它。那里有多个条目。您应该看到“Internet 协议版本 6 (TCP/IPv6)”和“Internet 协议版本 4 (TCP/IPv4)”。取消选中 v6 并选中 v4。
虽然我不完全明白你的问题。
答案3
是否提供 IPv6 或 IPv4 地址取决于软件首先尝试哪个查询。如果软件首先尝试 AAAA 查询,则将提供 IPv6。
但解决这个问题的一种方法是调整“localhost”的定义,它可能由系统的“hosts”或“hosts.txt”文件定义。请参阅维基百科 Hosts 文件位置。
只需删除 IPv6 引用。这可能会导致 IPv6 查询不提供任何结果,因此将尝试 IPv4 查询。
但是,这并不是真正推荐的做法;请理解可能会有副作用(来自可能依赖 IPv6 和标准“localhost”名称的其他程序)。建议在进行更改之前备份此文件(以便您可以轻松地恢复它)。(简单的复制可能就可以了。)并且在宣布您的努力成功之前,请测试任何可能使用“localhost”名称的程序。