当我 ping 我在家中网络中使用的计算机时,得到的响应看起来很奇怪:
Reply from fe80::8150:b519:d5da:8a00%9: time<1ms
然而,我 ping 家庭网络上的另一台计算机,得到了一个正常的 IP 地址。
ipconfig 的结果如下:
Link-local IPv6 Address . . . . . : fe80::8150:b519:d5da:8a00%9
IPv4 Address. . . . . . . . . . . : 10.10.10.104
有没有办法让 ping 结果显示为 IPv4?IPv6 结果看起来正常吗?
答案1
当您启用 IPv6 时,ping 和其他一些命令可能会默认使用 IPv6。要强制 ping 使用 ipv4,请添加 -4 作为参数:
ping localhost -4
顺便说一句,你也可以使用 -6 强制 IPv6
ping localhost -6
答案2
既然其他人已经提到了这个问题的“让我回到 IPv4”部分,我将解决另一部分。我不能说我在野外见过很多 ipv6 地址,所以“看起来很正常”?呃……我们去谷歌搜索一下,好吗?
这里有一个不错的链接“正常” IPv6 地址:
IPv6 地址由 8 个十六进制组组成。每个十六进制组由冒号 (:) 分隔,包含 16 位十六进制值。以下是 IPv6 格式的示例:
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
..来自IPv6 地址是什么样的?:
冒号分隔 16 位字段。每个字段的前导零都可以省略,如上所示,字段 :0003: 写为 :3:。此外,地址中可以使用一次双冒号 (::) 来替换多个零字段。例如:
fe80:0:0:0:200:f8ff:fe21:67cf
可以写成
fe80::200:f8ff:fe21:67cf
所以你的例子是这样的:
fe80::8150:b519:d5da:8a00%9
根据 A Dwarf 的说法,%9 是一个“区域索引”,“一种有助于跨链路本地地址传输数据包的标识符(当主机有多个接口时)”。因此,它识别的是接收此数据包的接口(NIC),但实际上并不是 IPv6 地址的一部分。
“::” 表示 :0:,或 :0:0:,或者可能是更多零。我们不知道有多少个零。如果我们丢弃 %9,那么我们会看到:
fe80::8150:b519:d5da:8a00
因为我们知道有 8 组 4 个十六进制数字,而我们上面只看到 5 组,所以我们知道有三组“::”需要填充。所以实际地址是:
fe80:0000:0000:0000:8150:b519:d5da:8a00
答案3
禁用网卡上的 IPv6。