2011-04-21 125 views
13

我正在研究与网络/压缩相关的项目。其中一台机器是Windows Vista,它已经配置了IPv6。IPv6链接本地地址格式

当我尝试ipconfig,我看到以下格式的地址:fe80::9dc8:72fa:aacd:76e2%10

但是,当我尝试从另一个ping此机ping fe80::9dc8:72fa:aacd:76e2%10,我得到以下错误:

Ping request could not find host fe80::9dc8:72fa:e327:76e2%10.
Please check the name and try again.

任何想法/意见都非常有帮助。

+0

我从来没有在ipv6地址前看到过'%10' – knittl 2011-04-21 15:15:03

+0

%10是链路本地地址的一部分。 – Joe 2011-04-21 15:16:18

+0

so you think,fe80 :: 9dc8:72fa:aacd:76e2是真正的ipv6地址吗? – pdk 2011-04-21 15:37:59

回答

0

您无法使用经典Ping实用程序ping ipv6地址,只能ping ipv4地址。 linux有一个名为ping6的命令行工具来ping ipv6地址,windows可能有类似的东西。一个小小的研究告诉我,windows使用ping -6来ping ipv6地址。

+0

我试过ping -6 fe80:0000:0000:0000:9dc8:72fa:e327:76e2我得到以下错误:::无法初始化Windows套接字接口,错误代码10047. – pdk 2011-04-21 15:38:39

+0

@pdk:so?它工作?有没有错误?正如我的第一条评论和其他评论中所提到的,尝试不使用'%10'。 (你没有把它放在你最后的评论中,但我想知道) – knittl 2011-04-21 15:40:09

+0

@knittl:我得到了这个错误(没有%)。 “无法初始化Windows套接字接口,错误代码10047.”有关此错误的任何提示? – pdk 2011-04-21 15:41:40

22

%10之后的地址叫做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,因为这是其索引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 

...你要ping从Windows中的Linux机器,你不能这样做ping fe80::15c3:6bea:aaac:a016%eth0。但你可以ping fe80::15c3:6bea:aaac:a016%22。这就是问题。以这种方式,链路本地地址可能会非常棘手。

尝试指定正确的区域ID。也就是说,当您执行ping fe80::9dc8:72fa:aacd:76e2%10时,首先在要ping的机器上执行netsh interface ipv6 show addresses,从开始执行,并将%10更改为您要在源系统上使用的任何接口的接口索引。

如果从查验机器是Linux,你将不得不做ping6 -I eth0 fe80::9dc8:72fa:aacd:76e2(假设其他系统上eth0),因为Linux的命令行实用程序不支持指定区域的%方式(无论如何,我最后一次检查)。

理想情况下,您应该在您的网络上设置支持IPv6的路由器来执行路由器广告,以便您可以使用stateless address auto-configuration (SLAAC)并获得global unicast地址。那么这不会是一个问题。

0

%之后的数字是接口名称。如果打开网络接口的状态 - >详细信息,则会看到ipv6链接本地地址,并在地址末尾显示%xx,这是接口的索引,以防您想要查找索引为某些应用程序。系统信息或ipconfig可能会给你不同的索引号,至少在我的Windows 7 Pro上是非常令人困惑的。您从操作系统获得的描述也可能是错误的。