我正在嘗試熟悉 IPv6。
我發現本指南非常有用,但我仍然不明白某些方面。
連結本地與唯一本地
閱讀上述指南後,我了解到連結本機位址不會跨越主機邊界(即它們不用於在裝置之間進行通訊)。 Unique-local 更接近 IPv4 本地 IP 位址的概念。
它是否正確?
介面ID
如果我理解正確的話,每個主機都是由一個可以從 MAC 位址計算出來的值來識別的。這是強制性的/最佳實踐嗎?
在 IPv4 中,位址與 MAC 位址無關,因此,例如,我可以更改 PC 上的 NIC 卡(從而更改其 MAC 位址),但仍然使用相同的位址。
此外,IP 位址通常使用某些標準進行分配(從 a 到 b 到 PC,從 x 到 y 到印表機、ecc)。這不是強制性的,但在日常維護中很有用。
在 IPv6 中如何做到這一點?
答案1
鏈路本地位址不跨越主機邊界(即它們不用於在設備之間通訊)。
不,他們做跨越主機邊界,但它們永遠不會跨越網路(或子網路)邊界。
鏈路本地位址用於先前必須從空位址發送的封包(例如 DHCP → DHCPv6),或根本不是基於 IP 的封包(例如 ARP → ICMPv6 NDP)。它們也被路由協定(RIPng、OSPFv3、Babel…)使用,這些協定先前使用「正常」IP 位址來表示本質上是連結範圍的訊息。
(從技術上講,IPv4 也有鏈路範圍位址 169.254.0.0/16,但它們是可選的,而且它們的使用受到更多限制——它們通常被認為與「正常」位址是互斥的。在IPv6,除了其他所有介面之外,所有介面通常都有一個鏈路本地位址。
但是,您可能會將連結範圍與「介面本機」或「主機」範圍位址混淆,這些位址實際上不會跨越主機邊界。實際上,您將看到的唯一主機範圍位址是::1
(環回)。
Unique-local 更接近 IPv4 本地 IP 位址的概念。
是的,儘管它們的預期用途與 IPv4 略有不同。也就是說,即使您想在 LAN 中使用唯一的本機位址,您也應該仍然與它們一起使用全域位址(即每個主機將有兩個位址) - 非常不鼓勵使用 NAT,甚至是 1:1 NAT。
請注意,在 IPv4 和 IPv6 中,這些位址都被視為具有全球的範圍。他們只是本地分配,但 IP 並不認為它們與「公共互聯網」位址有根本區別;它們以相同的方式路由。
如果我理解正確的話,每個主機都是由一個可以從 MAC 位址計算出來的值來識別的。這是強制性的/最佳實踐嗎?
不。
如今,您經常會看到主介面 ID 被根據 RFC 7217 的不透明、基於雜湊的介面標識符所取代。 (某些作業系統可能使用不同的演算法,但最終結果相同。)
在此之前很長一段時間,當大多數主機仍在使用 EUI-64 介面識別碼時,其中許多主機已經實作了 RFC 4941 來產生隨機數暫時的介面標識符。
一般來說,MAC 或 EUI-64 不能是強制性的,因為存在大量點對點、僅第 3 層的隧道機制(例如 PPP),根本沒有第 2 層位址。
從 EUI-64 或 MAC 位址產生 IPv6 位址的演算法已經針對 EUI-64「本地/全域」位元進行了仔細的處理,因此,如果您只是手動分配首選介面 ID(例如<whatever>::123:ab
),它會在語法上看起來與基於「本機管理」EUI-64 位址(在本例中02:00:00:00:01:23:00:ab
)相同。
此外,IP 位址通常使用某些標準進行分配(從 a 到 b 到 PC,從 x 到 y 到印表機、ecc)。這不是強制性的,但在日常維護中很有用。
我的第一個建議是「使用 DNS」。在工作中,大多數時候我不再輸入原始位址 - 如果我想連接到特定印表機,我不會開始輸入192.
,而是開始輸入pr-
,瀏覽器會為我提供印表機列表,而不是列表各種 IP 位址。
在較大的網路上,您還需要擁有多個 VLAN 和多個子網路。將子網路ID 1(例如2001:db8:42:1::/64)指派給使用者VLAN,將子網路ID 2(2001:db8:42:2::/64)指派給印表機VLAN,依此類推。
大多數裝置不會阻止您手動指派 IPv6 位址,例如您可以自由使用2001:db8:42::53
DNS 伺服器。如前所述,即使在 EUI-64 分配的假設範圍內,這也完全沒問題 - 它只是映射到「本地管理」EUI-64 位址。
(只有少數支持分配只是手動輸入介面 ID,同時仍自動接收網路前綴,但希望您的 IPv6 前綴不會改變那無論如何,經常。