簡體   English   中英

IPv6 鏈路本地地址格式

[英]IPv6 link-local address format

我正在做一個與網絡/壓縮相關的項目。 其中一台機器是 Windows Vista,它已經配置了 IPv6。

當我嘗試ipconfig ,我看到以下格式的地址: fe80::9dc8:72fa:aacd:76e2%10

但是,當我嘗試使用ping fe80::9dc8:72fa:aacd:76e2%10從另一台機器 ping 這台機器時,出現以下錯誤:

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

任何想法/評論都非常有幫助。

地址后面的%10稱為作用域區域 當您使用鏈路本地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

...並且您想從 Windows 機器 ping Linux 機器,您不能執行ping fe80::15c3:6bea:aaac:a016%eth0 但是你可以執行ping fe80::15c3:6bea:aaac:a016%22 這就是問題。 鏈接本地地址以這種方式可能會很棘手。

嘗試指定正確的區域 ID。 也就是說,當你做你ping fe80::9dc8:72fa:aacd:76e2%10 ,先做netsh interface ipv6 show addresses發出ping命令的機器上,並更改%10到你想為哪個接口的接口索引在源系統上使用。

如果您ping命令的機器是Linux,你將不得不做ping6 -I eth0 fe80::9dc8:72fa:aacd:76e2 (假設其他系統上eth0 ),因為Linux的命令行實用程序不支持%指定區域的方式(無論如何我最后一次檢查)。

理想情況下,您應該在您的網絡上設置一個支持 IPv6 的路由器來執行路由器廣告,以便您可以使用無狀態地址自動配置 (SLAAC)並獲取全局單播地址。 那么這將不是問題。

% 后面的數字是接口名稱。 如果你打開你的網絡接口的狀態->詳細信息,你會看到ipv6鏈接本地地址,地址末尾有%xx,這是接口的索引,以防萬一你想找到索引對於某些應用程序。 系統信息或 ipconfig 可能只是給你不同的索引號,至少在我的 Windows 7 Pro 上,這非常令人困惑。 您從操作系統獲得的描述也可能是錯誤的。

您無法使用經典的 ping 實用程序 ping ipv6 地址,只能 pingv4 地址。 linux 有一個名為ping6的命令行工具來 ping ipv6 地址,windows 可能有類似的東西。 一些研究告訴我,Windows 使用ping -6來 ping ipv6 地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM