找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
z记录 Z记录 网站编辑 查看内容

ping localhost被解析为 ::1的解决方法

2025-8-25 00:59| 发布者: zouyang5| 查看: 28| 评论: 0|来自: Z记录

摘要: 在建站时配置内网外穿时发现127.0.0.1和localhost的指向不一致导致不成功,在cmd ping了一下ping localhost发现本机IP127.0.0.1被解析为了 ::11、在命令行窗口 ping 127.0.0.1正在 Ping 127.0.0.1 具有 32 字节的数据 ...


在建站时配置内网外穿时发现127.0.0.1和localhost的指向不一致导致不成功,
在cmd ping了一下
ping localhost
发现本机IP127.0.0.1被解析为了 ::1

1、在命令行窗口 ping 127.0.0.1

正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

2、在命令行窗口 ping localhost

正在 Ping WIN-4A6P4G34DU3::1 具有 32 字节的数据:
来自 ::1 的回复: 字节=32 时间<1ms 
来自 ::1 的回复: 字节=32 时间<1ms 
来自 ::1 的回复: 字节=32 时间<1ms 
来自 ::1 的回复: 字节=32 时间<1ms


解决方案
一、修改host文件
修改C:\Windows\System32\drivers\hosts文件,在末尾加上下面两行:

127.0.0.1 localhost
localhost 127.0.0.1

bash
配置C:\Windows\System32\drivers\hosts文件之后还是无法解决解析为::1,可以看看下面这种修改修改注册表的方法

二、修改注册表
在cmd中ping localhost解析出来的是IPV6的::1,原因是windows有个优先解析列表,当IPv6的优先级高于IPv4时,就会出现这种情况。我见网上有一种方法是修改注册表来提升IPv4优先级的。

具体方法为:

打开RegEdit,导航到HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ tcpip6 \ Parameters, 创建DisabledComponents DWORD注册表值,将其值设置为20(十六进制),然后重启电脑。

这种方法我试了,还是没能解决。

最后,只能尝试终极大法—使用管理员命令行修改IPv6的优先级

三、修改IPv6的优先级


修改IPv6优先级的方法,即修改IPv4优先级高于IPv6的记录到优先解析表中。具体方法如下:

1、按win徽标+X(或在徽标键上右键),打开管理员命令行窗口(就是用管理员权限打开cmd)

2、输入命令 netsh interface ipv6 show prefixpolicies 查看IPv6优先级

请注意,以上可以看出,IPv6的优先级高于IPv4,即IPv6地址(::/0)优先于IPv4地址(::/96,::ffff:0:0/96),因此,我们可以制定策略,使IPv6不会比任何IPv4地址有利。其中,标签表示优先级,0表示优先级最高,依次类推。


🔉 番外:IPv6特殊用途地址

::/0,默认路由条目,不用于寻址;

::/128,未指定地址, 可作为源IP地址使用;

::1/128,IPv6主机回送地址,不用于发送出本地主机的数据中;

::ffff:0:0/96,IPv4映射地址, 这种地址不会出现在分组头部,只用于内部主机;

::{ipv4-address}/96,IPv4兼容地址,已过时,未使用;

2001::32,Teredo地址;

2001:10::/28,ORCHI(覆盖可路由加密散列标识符),这种地址不会出现在公共的Internet中;

2001:db8::32,用于文档和实例的地址范围,这种地址不会出现在公共的Internet中;

2002::16,6to4隧道中继的6to4地址;

3ffe::/16,用于6bone实验,已过时,未使用;

5f00::/16,用于6bone实验, 已过时,未使用;

fc00::/7,唯一的本地单播地址,不用于全球性的Inrternet;

fe80::/10,链路本地单播地址;

ff00::/8,IPv6组播地址, 仅为目的地址使用。

::/128   ——即0:0:0:0:0:0:0:0,只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口

::1/128  ——即0:0:0:0:0:0:0:1,回环地址,相当于ipv4中的localhost(127.0.0.1),ping locahost可得到此地址 


3、设置优先级

现在需要设置使::/96、::ffff:0:0/96的优先级高于::/0和::1/128,在CMD命令行中依次设置优先级

netsh int ipv6 set prefix ::/96 50 0

netsh int ipv6 set prefix ::ffff:0:0/96 40 1

netsh int ipv6 set prefix 2002::/16 35 2

netsh int ipv6 set prefix 2001::/32 30 3

netsh int ipv6 set prefix ::1/128 10 4

netsh int ipv6 set prefix ::/0 5 5

netsh int ipv6 set prefix fc00::/7 3 13

netsh int ipv6 set prefix fec0::/10 1 11

netsh int ipv6 set prefix 3ffe::/16 1 12

4、查看设置后的优先级

完了后输入命令netsh interface ipv6 show prefixpolicies查看优先级

可以看到,此时::/96::ffff:0:0/96优先级高于::/0了。

5、ping一下localhost

正在 Ping WIN-4A6P4G34DU3 [127.0.0.1] 具有 32 字节的数据:

来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

OK,配置完成!


路过

雷人

握手

鲜花

鸡蛋

QQ|Archiver|手机版|小黑屋|z记录

GMT+8, 2025-9-1 07:27 , Processed in 0.045242 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部