2011-04-21 175 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上是非常令人困惑的。您從操作系統獲得的描述也可能是錯誤的。