我正在开展与网络/压缩有关的项目.其中一台机器是
Windows Vista,它已经配置了IPv6.
当我尝试ipconfig,我看到一个地址格式如下:fe80 :: 9dc8:72fa:aacd:76e2?
但是当我尝试用ping fe80 :: 9dc8:72fa:aacd:76e2?从另一台ping这台机器,我得到以下错误:
Ping请求找不到主机fe80 :: 9dc8:72fa:e327:76e2?
请检查名称,然后重试.
任何想法/评论是非常有帮助的.
的?地址被称为
scope zone.当您使用
link-local IPv6地址时,需要镜像区域,以便系统知道哪个接口发送数据包.
在Windows上,如果发出netsh interface ipv6 show addresses命令,您将看到分配给系统的地址以其区域ID完成.请注意,区域ID与接口索引匹配.例如:
Interface 22: VirtualBox Host-Only Network Addr Type DAD State Valid Life Pref. Life Address --------- ----------- ---------- ---------- ------------------------ Other Preferred infinite infinite fe80::15c3:6bea:aaac:a015%22
这个地址的范围是“,因为它在一个索引为22的接口上.??同样,在Linux上,您可能会看到一个链接本地地址,如fe80 :: 15c3:6bea:aaac:a016%eth0.区域ID的格式运行IPv6的每台机器都是唯一的,所以如果您尝试从其他系统ping,可能会有所不同.
例如,如果你有:
System A (Windows): fe80::15c3:6bea:aaac:a015%22 System B (Linux): fe80::15c3:6bea:aaac:a016%eth0
…并且你想从Windows框中ping Linux框,你不能ping ping fe80 :: 15c3:6bea:aaac:a016%eth0.但是你可以ping ping fe80 :: 15c3:6bea:aaac:a016“这是问题,链接本地地址可能很棘手.
尝试指定正确的区域ID.也就是说,当你做你的ping fe80 :: 9dc8:72fa:aacd:76e2?首先做netsh接口ipv6显示你正在ping的机器上的地址,并更改?到要在源系统上使用的接口的接口索引.
如果您正在ping的机器是Linux,则必须执行ping6 -I eth0 fe80 :: 9dc8:72fa:aacd:76e2(假设另一个系统在eth0上),因为Linux命令行实用程序不支持指定区域的%方式(无论如何,最后一次检查).
理想情况下,您应该在网络上设置支持IPv6的路由器进行路由器通告,以便可以使用stateless address auto-configuration (SLAAC)并获取global unicast地址.那么这不会是一个问题.