![](/img/trans.png)
[英]How to connect to a IPv6 link local address discovered using IPv4 and set the correct network interface?
[英]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.