Networking

IPv6 子網如何工作以及它與 IPv4 子網有何不同?

  • June 9, 2020

這是關於 IPv6 子網劃分的規範問題。

有關的:

我對IPv4 Subnetting了解很多,當我準備(部署|工作)一個 IPv6 網路時,我需要知道這些知識中有多少是可以轉移的以及我還需要學習什麼。乍一看,IPv6 似乎比 IPv4 複雜得多。所以我想知道:

  • IPv6 是 128 位,那麼為什麼 /64 是推薦的最小主機子網?與此相關:

    • 為什麼建議在路由器之間的點對點鏈路中使用 /127,為什麼過去不建議使用它?我應該更改現有的路由器連結以使用 /127 嗎?
    • 為什麼要為虛擬機提供少於 /64 的地址?
    • 在其他情況下我會使用小於 /64 的子網嗎?
  • 我可以直接從 IPv4 子網映射到 IPv6 子網嗎?例如,IPv4 /24 是否直接對應於 IPv6 /56 或 /120?

  • 我的介面有幾個 IPv6 地址。它們的子網必須相同嗎?

  • 為什麼我有時會在 IPv6 地址中看到 % 而不是 /,這是什麼意思?

  • 我是否浪費了太多子網?我們不是又要跑完了嗎?

  • IPv6 子網劃分與 IPv4 子網劃分在哪些其他主要方面不同?

關於 IPv6 子網劃分,首先應該提到的是需要一種不同的思維模式。在 IPv4 中,您通常會考慮有多少可用地址以及如何將足夠的地址分配給每個最終使用者。在 IPv6 中,您通常會考慮可用/64子網數量以及如何將它們分配給最終使用者。您幾乎從不擔心在給定子網中將使用多少 IP 地址。除了點對點連結等一些特殊情況外,每個子網只是擁有比它需要的更多的可用地址,因此您只需擔心分配子網,而不是其中的主機。

IPv6 子網通常是/64因為它是SLAAC(無狀態地址自動配置)工作所必需的。即使沒有使用 SLAAC,也可能有其他原因需要使用/64. 例如,可能有一些最終使用者設備只是假設 /64,或者路由子網比/64在某些路由器上可能效率低,因為路由器實現者已經優化了路由的情況/64或更寬的路由以節省路由表記憶體。

為什麼建議使用/127點對點連結

對於點對點鏈路的特定情況,/127建議不要這樣做,/64以避免出現這樣的漏洞:定址到子網上千萬億個未使用地址中的任何一個的數據包會導致不需要的鄰居請求請求和可能淹沒路由器的表條目. 這種地址錯誤的數據包可能是惡意的或意外的。但是,即使您實際上將點對點連結配置為/127,也有人主張/64無論如何都分配一個整體以保持一致。

為什麼要為虛擬機提供比 更窄的子網/64

我不知道具體為什麼虛擬機的子網會比/64. 也許是因為託管服務提供商假設伺服器就像最終使用者並且只需要一個/64子網,而沒有預料到伺服器實際上是需要內部路由拓撲的 VM 集合?也可以簡單地這樣做,以使定址計劃更容易記住:主機獲取PREFIX::/64,然後每個 VM 獲取PREFIX:0:NNNN::/96NNNN 對 VM 唯一的位置,並且 VM 可以隨意分配PREFIX:0:NNNN:XXXX:YYYY

我可以直接從 IPv4 子網映射到 IPv6 子網嗎?例如,IPv4 是/24直接對應於 IPv6/56還是/120

從定址和路由如何工作的低層次的角度來看,前綴長度在 IPv6 和 IPv4 中具有相同的含義。在那個級別上,您可以進行類比,例如“IPv4/16使用一半的位作為網路地址,一半的位用於主機地址,就像/64IPv6 中的一樣”。但這種比較並不恰當。IPv6 中出現了強大的約定,這使得網路規模的劃分看起來更像是 IPv4 中的舊世界的分類網路。可以肯定的是,IPv6 並沒有重新引入分類定址,其中地址的最重要的幾位強制使用特定的網路遮罩,但 IPv6確實有什麼是確定的

$$ defacto/conventionally $$標準網路規模:

  • /64:單個子網的基本大小:LAN、WAN、Web 虛擬主機的地址塊等……“普通”子網永遠不會比/64. 沒有任何子網會比我們想像的更寬(前綴更短),/64因為 a/64的主機地址價值遠遠超出我們的想像。
  • /56256基本子網塊。儘管目前的政策允許 ISP 將塊分配/48給每個最終使用者,並且仍然認為他們的地址使用率是合理的,但一些 ISP 可能(並且已經這樣做)選擇將 a 分配/56給消費者級客戶,作為分配大量子網並解決經濟問題。
  • /4865536每個 ISP 客戶端站點應接收的基本子網塊和建議的塊大小。
  • /32:大多數 ISP 每次從區域地址註冊處請求更多地址時將收到的預設塊大小。

在服務提供商和企業網路內部,可以看到比這 4 個更多的前綴長度。查看這些網路中路由器的路由表時,IPv4 和 IPv6 有很多共同點,包括大多數路由工作方式:較長前綴的路由覆蓋較短前綴的覆蓋路由,因此可以聚合(縮短)和鑽取向下(延長)路線。與 IPv4 一樣,可以將路由聚合或匯總為具有較短前綴的較大塊,以最小化路由表的大小。

IPv4 和 IPv6 之間映射的另一個問題是如何協調雙棧機器上的 IPv4 和 IPv6 分配,以便易於理解定址計劃。到目前為止,肯定有一些常用的約定可以做到這一點:將 IPv4“子網號”嵌入到 IPv6 前綴的一部分中,使用BCD(例如10.0.234.0/24become 2001:db8:abcd:234::/64)或二進制(10.0.234.0/24become 2001:db8:abcd:ea::/64)。

我的介面有幾個 IPv6 地址。它們的子網必須相同嗎?

絕對不!IPv6 主機有望通過同時擁有來自不同子網的多個 IP 地址來實現多宿主,就像 IPv4 一樣。如果它們使用 SLAAC 自動配置,則不同的子網可能來自不同路由器的路由器通告。

為什麼我有時會在 IPv6 地址中看到 % 而不是 /,這是什麼意思?

你不會看到一個而不是另一個。它們有不同的含義。斜杠表示前綴(子網),表示所有以相同n位開頭的地址塊。沒有斜杠的地址是主機地址。您可能會認為這樣的地址在結尾處具有隱含/128意義,這意味著指定了所有 128 位。

百分號伴隨著連結本地地址。在 IPv6 中,除了它可能擁有的任何其他 IP 地址之外,每個介面都有一個本地鏈路地址。但問題是,連結本地地址總是無一例外地在fe80::/10塊中。但是,如果我們嘗試使用連結本地地址與對等點通信,並且本地主機有多個介面,我們如何知道使用哪個介面與對等點通信?通常,路由表會告訴我們要為特定前綴使用哪個介面,但在這裡它會告訴我們fe80::/10通過每個介面都可以到達。

答案是我們必須通過語法告訴它使用哪個介面address%interface。例如,fe80::1234:5678:8765:4321%eth0

我是否浪費了太多子網?我們不是又要跑完了嗎?

沒人知道。誰能告訴未來?

但是考慮一下。在 IPv6 中,可用子網的數量是IPv4中可用單個地址數量的平方。這真的很多。不,我的意思是真的很多!

但仍然:我們會自動/32向任何請求的 ISP 分發一個,我們正在/48向每個 ISP 客戶分發一個。也許我們誇大了,畢竟我們會浪費 IPv6。但是對此有一個規定:到目前為止,只有八分之一的 IPv6 空間可供使用:2000::/3. 我們的想法是,如果我們把前八分之一搞得一團糟,我們必須徹底修改自由分配政策,我們可以再嘗試 7 次,以免遇到麻煩。

最後:IPv6 不必永遠持續下去。也許它的生命週期會比 IPv4 更長(已經令人印象深刻的生命週期,而且還沒有結束),但就像每一種技術一樣,它總有一天會不再重要。我們只需要做到這一點。

引用自:https://serverfault.com/questions/426183