藍汛IPv6的基礎、遷移和安全
2017年11月“兩辦”印發了《推進網際網路協議第六版(IPv6)規模部署行動計劃》,使得IPv6開始落地,並強制執行。計劃提出要用5到10年時間,形成下一代網際網路自主技術體系和產業生態,建成全球最大規模的IPv6商業應用網路。
到2018年末,市場驅動的良性發展環境基本形成,IPv6活躍使用者數達到2億,在網際網路使用者中的佔比不低於20%。
到2020年末,市場驅動的良性發展環境日臻完善,IPv6活躍使用者數超過5億,在網際網路使用者中的佔比超過50%,新增網路地址不再使用私有IPv4地址。
到2025年末,我國IPv6網路規模、使用者規模、流量規模位居世界第一位,網路、應用、終端全面支援IPv6,全面完成向下一代網際網路的平滑演進升級。
由此可見,針對2018年底要求完成2億活躍使用者的目標,對於ISP、ICP都是一個很大的挑戰。而且,對於國家機關的網站的IPv6遷移也是硬性指標。這給CDN市場帶來了新機遇,有很大的機會為客戶、潛在客戶快速安全地實現IPv6業務合規上線和遷移。本文將為大家介紹IPv6的關鍵技術知識點。
IPv6地址
IPv4的地址長度為32位,地址空間為2的32次方,約42億個(世界上平均3個人有2個IP地址)。
IPv6的地址長度為128位,地址空間為2的128次方,約3.4×10^38個。
IPv6地址的表示
IPv4地址表示
二進位制:10101100 00010000 00000001 00000001
十進位制:172.16.1.1
IPv6地址表示
十六進位制:2001:0410:0000:0001:0000:0000:0000:45ff
IPv6地址與IPv4地址表示方法有所不同,用十六進位制表示,4位一組,中間用“:”隔開。
IPv6地址的壓縮表示
如圖可見,地址中,以“0”開頭的組,就可以省略0,而多個連續的全0欄位,則通過“::”來壓縮代替。
IPv6 地址 = 字首 + 介面標識
其中,字首相當於IPv4地址中的網路ID,介面標識則相當於IPv4地址中的主機ID。字首長度就是和IPv4地址標識一樣,採用/xx來表示,如:2001:da8:207::8207/64。
IPv6地址分類
單播地址(unicast address)
如同 IPv4 的Unicast模式,適用在單一節點對單一節點的資料傳送。標識一個介面,目的地址為單播地址的報文會被送到被標識的介面。
這種型別的IPv6地址可區分為Global、Site-Local、Link-Local和IPv4-Compatible 4種型態。
下面針對這幾種型別加以介紹:
Global 地址
前3bits為首碼,內容固定是001,最後的64bits為介面標識(Interface ID)。Interface ID的功能如同IPv4的主機地址(Host ID)。
Site-Local 地址
前10bits為首碼,內容固定為1111111011,間隔38bits的0之後,接著16bits 的子網地址(Subnet ID),最後才是 64bits的介面標識。
Link-Local 地址
也是用前10bits為首碼,內容固定為1111111010,接著是連續54bits的0,最後的64bits也是介面標識。
IPv4-Compatible 地址
沒有所謂的首碼與介面標識,只有原本32bits的IPv4地址前面,加上96bits的0。
組播地址 (multicast address)
IPv6的組播整合了IPv4的Multicast及廣播傳送 (Broadcast),適用於單一節點對多節點的傳送。標識多個介面,目的地址為組播地址的報文會被送到被標識的所有介面。
而4-bit的lifetime如果取值0,則為永久屬性,而取值1,則為臨時屬性。
常見的組播地址有:
任播地址 (anycast address)
Anycast的特殊之處在於:一個Anycast地址可以被多個節點使用,但是傳送給此地址的報文,並非真的將它送到這些節點來,而僅僅是送給距離最近或成本最低(根據路由表來判斷)的一個節點。
以RFC4291的規定,目前的Anycast地址只能分配給路由器,不能分配給電腦使用,而且不能作為傳送端的地址。這種IPv6地址的首碼長度不固定,首碼以外的位元都是0。
裝置IPv6地址的設定方式
由前文可知,裝置的後64bit的地址是和裝置相關的。因此如何設定這64bit的地址段則就是裝置相關的。
目前,共有4種設定方式:
通過EUI-64設定的
通過自動生成的偽隨機數設定的
通過DHCPv6設定
手動設定
EUI-64
EUI-64就是通過裝置的MAC地址來生成這64bit地址欄位。而由於MAC地址是48bit,通過將48bit的MAC地址對分為兩段,兩段之間填入0xFFFE來補齊為64bit。
自動生成的偽隨機數
針對EUI-64有可能造成的主機MAC地址和IPv6地址對應關係所引發的安全隱患,採用自動生成的偽隨機數來規避的方法。
ICMPv6 和Neighbor Discovery
ICMPv6 是基於RFC 2463,相對於IPv4的ICMP的演進,基本的信令模式是類似的,但是信令的種類和code進行了變化。
ICMPv6,提供了以下資訊的承載:
錯誤資訊
提示類資訊
MTU的路徑探測
Neighbor Discovery
ICMPv6的錯誤資訊
目標不可達 (ICMP packet type1)
目標不可達會通過解釋碼來告知不可達的原因:
o 0 - No route to destination
o 1 - Access is administratively prohibited
o 3 - Address unreachable
o 4 - Port unreachable
資料包太大 (ICMP packet type2)
說明資料包大於IPv6鏈路的MTU。由於IPv6不會根據MTU而將資料包分包,所以會通過ICMP資訊通知源資料包大於MTU。
超時 (ICMP packet type3)
超出了跳數。
引數錯 (ICMP packet type4)
同樣的,有個解釋碼來告知原因:
o 0 - Erroneous header field
o 1 - Unrecognized next-header type
o 2 - Unrecognized IPv6 option
Neighbor Discovery
Neighbor Discovery Protocol提供了IPv6下裝置使能的能力:
自動配置地址和地址字首的發現
衝突地址的發現
MTU的發現
路由發現
地址解析
IPv6的路由器定期傳送Router Advertisement (RA),來提示路由的存在和提供主機的配置資訊。RA資訊是ICMP type 134 資訊,從傳送路由器的單播地址作為源,目的地址是link-scope all-nodes的組播地址。RA設定255為跳數限制,而且不能傳送到local link之外的網路。
主機通過RA來進行本機的路由配置,而主機也可以通過傳送Router Solicitation( RS) 來請求RA 。
IPv6和DNS
相對於IPv4的DNS中,hostname到IP的解析,IPv6的DNS中,從host那麼到IP的解析是什麼樣的呢?
IPv6中,相對於IPv4的A記錄,是AAAA記錄,比如:
AAAA record:
www.abc.test AAAA 2001:db8:C18:1::2
而IPv6中,相對於IPv4的PTR記錄,其PTR就要長的多了:
PTR record:
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.8.1.c.0.
8.b.d.0.1.0.0.2.ip6.arpa PTR www.abc.test.
IPv6下的移動IP
RFC 3775將移動IPv6協議定義為:不管IPv6節點位於IPv6網路的何處以及與移動IPv6節點通訊的其他節點是否支援移動IPv6,始終可以對IPv6節點進行訪問。
移動IPv6從移動IPv4中借鑑了許多概念和術語,例如:
移動節點(MN)
家鄉代理(HA)
家鄉地址
家鄉鏈路
轉交地址
外地鏈路
移動IP的機制實現
當移動節點在家鄉鏈路時,它與通訊節點採用傳統的路由方式進行通訊。
當移動節點移動到外地鏈路,通過無狀態自動配置或有狀態自動配置轉交地址。然後移動節點註冊它的primary轉交地址到家鄉鏈路的一個路由器上,請求這個路由器充當它的家鄉代理,這個過程稱為“繫結”。移動節點通過傳送“binding update”的訊息,然後家鄉代理迴應“binding acknowledgement”來完成“繫結”過程。
在這樣的場景下,移動節點可以有兩種方式和通訊節點進行通訊:
【1】 雙向隧道模式
通訊節點不要求支援移動IPv6,也不需要移動節點和通訊節點間繫結註冊。通訊節點不知道移動節點的轉交地址,它就像向其他任何固定節點發送資料包那樣向移 動節點發送資料包。通訊節點只是將移動節點的家鄉地址(它知道的唯一地址)放入目的IPv6地址域中,並將它自己的地址放在源IPv6地址域中,然後將數 據包進行轉發。這樣,資料包將被送往移動節點的家鄉鏈路,就像移動IPv4中那樣。在家鄉鏈路上,家鄉代理上使用“代理鄰居協議”(proxy ND),截獲這個資料包,然後把這個包作為淨荷,在其上面再加上一層IPv6報頭,把新的資料包傳送到移動節點的轉交地址,這個過程應用的是“隧道技術”。移動節點將送過來的包拆封,發現內層資料包的目的地是它的家鄉地址,於是將內層資料包交給高層協議處理。從移動節點發往通訊節點的從“反向隧道”發往家鄉代理,然後按照傳統的路由方式傳送到移動節點。
【2】路由優化的通訊模式
需要通訊節點必須支援移動IPv6,而且移動節點註冊了它的繫結連線到通訊節點。當通訊節點發送報文到移動節點時,首先從其繫結快取中查詢包含移動節點的 IP地址的條目,如果找到,則使用type 2 路由頭來發送報文(報文的目的IP地址為移動節點的轉交地址),type 2路由頭裡包含了移動節點的家鄉地址,當報文到達移動節點的轉交地址時,移動節點把路由頭裡的Home address作為報文最後的目的地址,然後移動節點判斷報文的目的地址為自己的家鄉地址,則將內層資料包交給高層協議處理。類似的,移動節點使用home address option來通知通訊節點自己的家鄉地址。路由優化消除了與雙向隧道向關聯的傳輸延遲。
【本文版權歸儲存線上所有,未經許可不得轉載。文章僅代表作者看法,如有不同觀點,歡迎新增儲存線上微信公眾號(微訊號:doitmedia)進行交流。】