艾銻知識—網絡運維|IPv6地址
2020-04-20 09:39 作者:艾銻無限 瀏覽量:
網絡運維|IPv6地址
大家好,我是一枚從事IT外包的
網絡運維工程師,在日常
網絡運維中你用到IPv6了嗎!IPv6地址你會寫嗎?
IPv6地址的表示方法
IPv6地址總長度為128比特,通常分為8組,每組為4個十六進制數的形式,每組十六進制數間用冒號分隔。例如:FC00:0000:130F:0000:0000:09C0:876A:130B,這是IPv6地址的首選格式。
為了書寫方便,IPv6還提供了壓縮格式,以上述IPv6地址為例,具體壓縮規則為:
-
每組中的前導“0”都可以省略,所以上述地址可寫為:FC00:0:130F:0:0:9C0:876A:130B。
-
地址中包含的連續兩個或多個均為0的組,可以用雙冒號“::”來代替,所以上述地址又可以進一步簡寫為:FC00:0:130F::9C0:876A:130B。
需要注意的是,在一個IPv6地址中只能使用一次雙冒號“::”,否則當計算機將壓縮后的地址恢復成128位時,無法確定每個“::”代表0的個數。
IPv6地址的結構
一個IPv6地址可以分為如下兩部分:
-
網絡前綴:n比特,相當于IPv4地址中的網絡ID
-
接口標識:128-n比特,相當于IPv4地址中的主機ID
注意, 對于IPv6單播地址來說,如果地址的前三bit不是000,則接口標識必須為64位;如果地址的前三位是000,則沒有此限制。
接口標識可通過三種方法生成:手工配置、系統通過軟件自動生成或IEEE EUI-64規范生成。其中,EUI-64規范自動生成最為常用。
IEEE EUI-64規范是將接口的MAC地址轉換為IPv6接口標識的過程。如圖8所示,MAC地址的前24位(用c表示的部分)為公司標識,后24位(用m表示的部分)為擴展標識符。從高位數,第7位是0表示了MAC地址本地唯一。轉換的第一步將FFFE插入MAC地址的公司標識和擴展標識符之間,第二步將從高位數,第7位的0改為1表示此接口標識全球唯一。
圖8 EUI-64規范示意圖

例如:MAC地址:000E-0C82-C4D4;轉換后:020E:0CFF:FE82:C4D4。
這種由MAC地址產生IPv6地址接口標識的方法可以減少配置的工作量,尤其是當采用無狀態地址自動配置時,只需要獲取一個IPv6前綴就可以與接口標識形成IPv6地址。但是使用這種方式最大的缺點是任何人都可以通過二層MAC地址推算出三層IPv6地址。
IPv6的地址分類
IPv6地址分為單播地址、任播地址(Anycast Address)、組播地址三種類型。和IPv4相比,取消了廣播地址類型,以更豐富的組播地址代替,同時增加了任播地址類型。
IPv6單播地址
IPv6單播地址標識了一個接口,由于每個接口屬于一個節點,因此每個節點的任何接口上的單播地址都可以標識這個節點。發往單播地址的報文,由此地址標識的接口接收。
IPv6定義了多種單播地址,目前常用的單播地址有:未指定地址、環回地址、全球單播地址、鏈路本地地址、唯一本地地址ULA(Unique Local Address)。
IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。該地址可以表示某個接口或者節點還沒有IP地址,可以作為某些報文的源IP地址(例如在NS報文的重復地址檢測中會出現)。源IP地址是::的報文不會被路由設備轉發。
IPv6中的環回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。環回與IPv4中的127.0.0.1作用相同,主要用于設備給自己發送報文。該地址通常用來作為一個虛接口的地址(如Loopback接口)。實際發送的數據包中不能使用環回地址作為源IP地址或者目的IP地址。
全球單播地址是帶有全球單播前綴的IPv6地址,其作用類似于IPv4中的公網地址。這種類型的地址允許路由前綴的聚合,從而限制了全球路由表項的數量。
全球單播地址由全球路由前綴(Global routing prefix)、子網ID(Subnet ID)和接口標識(Interface ID)組成,其格式如圖9所示:
圖9 全球單播地址格式

Global routing prefix:全球路由前綴。由提供商(Provider)指定給一個組織機構,通常全球路由前綴至少為48位。目前已經分配的全球路由前綴的前3bit均為001。
Subnet ID:子網ID。組織機構可以用子網ID來構建本地網絡(Site)。子網ID通常最多分配到第64位。子網ID和IPv4中的子網號作用相似。
Interface ID:接口標識。用來標識一個設備(Host)。
鏈路本地地址是IPv6中的應用范圍受限制的地址類型,只能在連接到同一本地鏈路的節點之間使用。它使用了特定的本地鏈路前綴FE80::/10(最高10位值為1111111010),同時將接口標識添加在后面作為地址的低64比特。
當一個節點啟動IPv6協議棧時,啟動時節點的每個接口會自動配置一個鏈路本地地址(其固定的前綴+EUI-64規則形成的接口標識)。這種機制使得兩個連接到同一鏈路的IPv6節點不需要做任何配置就可以通信。所以鏈路本地地址廣泛應用于鄰居發現,無狀態地址配置等應用。
以鏈路本地地址為源地址或目的地址的IPv6報文不會被路由設備轉發到其他鏈路。鏈路本地地址的格式如圖9所示:
圖9 鏈路本地地址格式

唯一本地地址是另一種應用范圍受限的地址,它僅能在一個站點內使用。由于本地站點地址的廢除(RFC3879),唯一本地地址被用來代替本地站點地址。
唯一本地地址的作用類似于IPv4中的私網地址,任何沒有申請到提供商分配的全球單播地址的組織機構都可以使用唯一本地地址。唯一本地地址只能在本地網絡內部被路由轉發而不會在全球網絡中被路由轉發。唯一本地地址格式如圖10所示:
圖10 唯一本地地址格式

Prefix:前綴;固定為FC00::/7。
L:L標志位;值為1代表該地址為在本地網絡范圍內使用的地址;值為0被保留,用于以后擴展。
Global ID:全球唯一前綴;通過偽隨機方式產生。
Subnet ID:子網ID;劃分子網使用。
Interface ID:接口標識。
唯一本地地址具有如下特點:
-
具有全球唯一的前綴(雖然隨機方式產生,但是沖突概率很低)。
-
可以進行網絡之間的私有連接,而不必擔心地址沖突等問題。
-
具有知名前綴(FC00::/7),方便邊緣設備進行路由過濾。
-
如果出現路由泄漏,該地址不會和其他地址沖突,不會造成Internet路由沖突。
-
應用中,上層應用程序將這些地址看作全球單播地址對待。
-
獨立于互聯網服務提供商ISP(Internet Service Provider)。
IPv6組播地址
IPv6的組播與IPv4相同,用來標識一組接口,一般這些接口屬于不同的節點。一個節點可能屬于0到多個組播組。發往組播地址的報文被組播地址標識的所有接口接收。例如組播地址FF02::1表示鏈路本地范圍的所有節點,組播地址FF02::2表示鏈路本地范圍的所有路由器。
一個IPv6組播地址由前綴,標志(Flag)字段、范圍(Scope)字段以及組播組ID(Global ID)4個部分組成:
-
前綴:IPv6組播地址的前綴是FF00::/8。
-
-
標志字段(Flag):長度4bit,目前只使用了最后一個比特(前三位必須置0),當該位值為0時,表示當前的組播地址是由IANA所分配的一個永久分配地址;當該值為1時,表示當前的組播地址是一個臨時組播地址(非永久分配地址)。
-
-
范圍字段(Scope):長度4bit,用來限制組播數據流在網絡中發送的范圍,該字段取值和含義的對應關系如圖11所示。
-
-
組播組ID(Group ID):長度112bit,用以標識組播組。目前,RFC2373并沒有將所有的112位都定義成組標識,而是建議僅使用該112位的最低32位作為組播組ID,將剩余的80位都置0。這樣每個組播組ID都映射到一個唯一的以太網組播MAC地址(RFC2464)。
IPv6組播地址格式如圖11所示:
圖11 IPv6組播地址格式

被請求節點組播地址通過節點的單播或任播地址生成。當一個節點具有了單播或任播地址,就會對應生成一個被請求節點組播地址,并且加入這個組播組。一個單播地址或任播地址對應一個被請求節點組播地址。該地址主要用于鄰居發現機制和地址重復檢測功能。
IPv6中沒有廣播地址,也不使用ARP。但是仍然需要從IP地址解析到MAC地址的功能。在IPv6中,這個功能通過鄰居請求NS(Neighbor Solicitation)報文完成。當一個節點需要解析某個IPv6地址對應的MAC地址時,會發送NS報文,該報文的目的IP就是需要解析的IPv6地址對應的被請求節點組播地址;只有具有該組播地址的節點會檢查處理。
被請求節點組播地址由前綴FF02::1:FF00:0/104和單播地址的最后24位組成。
IPv6任播地址
任播地址標識一組網絡接口(通常屬于不同的節點)。目標地址是任播地址的數據包將發送給其中路由意義上最近的一個網絡接口。
任播地址設計用來在給多個主機或者節點提供相同服務時提供冗余功能和負載分擔功能。目前,任播地址的使用通過共享單播地址方式來完成。將一個單播地址分配給多個節點或者主機,這樣在網絡中如果存在多條該地址路由,當發送者發送以任播地址為目的IP的數據報文時,發送者無法控制哪臺設備能夠收到,這取決于整個網絡中路由協議計算的結果。這種方式可以適用于一些無狀態的應用,例如DNS等。
IPv6中沒有為任播規定單獨的地址空間,任播地址和單播地址使用相同的地址空間。目前IPv6中任播主要應用于移動IPv6。
注意:IPv6任播地址僅可以被分配給路由設備,不能應用于主機。任播地址不能作為IPv6報文的源地址。
子網路由器任播地址
子網路由器任播地址是已經定義好的一種任播地址(RFC3513)。發送到子網路由器任播地址的報文會被發送到該地址標識的子網中路由意義上最近的一個設備。所有設備都必須支持子網任播地址。子網路由器任播地址用于節點需要和遠端子網上所有設備中的一個(不關心具體是哪一個)通信時使用。例如,一個移動節點需要和它的“家鄉”子網上的所有移動代理中的一個進行通信。
子網路由器任播地址由n bit子網前綴標識子網,其余用0填充。格式如圖12所示:
圖12 子網路由器任播地址格式

以上文章由北京艾銻無限科技發展有限公司整理