(參考華為官網資料)
IPv6地址配置有兩種:
- 無狀態地址自動配置
- 有狀態地址自動配置協議 -- DHCPv6協議
無狀態地址自動配置的過程
- IPv6主機首先通過路由器發現功能來獲取地址前綴信息
- 通過向接口已有的48bitMAC地址中插入16bit的FFFE生成接口ID
- 在生成了IPv6地址后會通過重復地址檢測來確認地址是否唯一
無狀態地址自動配置
- 主機可通過路由器獲取到IPv6前綴並自動生成接口ID。
- 實現流程:
- 網絡節點向相連的路由器發送RS,請求地址前綴信息。
- 路由器通過發送路由器通告RA,回復地址前綴信息。
![]()
RA報文:
- 每台路由器為了讓二層網絡上的主機和其他路由器知道自己的存在,定期以組播方式發送攜帶網絡配置參數的RA報文。
- RA報文的Type字段值為134.
RS報文:
- 主機接入網絡后可以主動發送RS報文。
- RA報文是由路由器定期發送的,但是如果主機希望能夠盡快收到RA報文,他可以立刻主動發送RS報文給路由器。
- 網絡上的路由器收到該RS報文后會立即向相應的主機單播回應RA報文,告知主機該網段的默認路由器和相關配置參數。
- RS報文的Type字段值為133.
無狀態地址DAD檢查
- DAD:重復地址檢測
- 試驗地址:一個IPv6單播地址在分配給一個接口之后,還未通過DAD的地址
- Solicited-node組播組:由單播或任播地址的后24位加上地址前綴FF02:0:0:0:0:1:FF00::/104組成。
- 例如本示例中配置的試驗地址為2000::1,該地址被加入Solicited-node組播組FF02::1:FF00:1。
- 當為接口配置IPv6地址時,DAD在本地鏈路范圍內檢測將要使用的IPv6地址是否唯一。
![]()
- 節點使用的自己的試驗地址,並向所在的Solicited-node組播組發送一個請求,該請求是以該試驗地址為目標地址的鄰居請求( NS) 報文。
- 如果收到某個其它站點回應的鄰居通告( NA)報文, 就證明該地址已被網絡上使用, 節點將不能使用該試驗地址進行通信。
- 這種情況下, 網絡管理員需要手動為該節點分配另外一個地址。
EUI-64規范
- 獲取有效IPv6地址有三種方式可以用來配置IPv6地址的接口ID
- 網絡管理員手動配置
- 通過系統軟件生成
- 采用擴展唯一標識符(EUI-64)格式生成,也是最常用的方式
- IEEE EUI-64標准采用接口的MAC地址生成IPv6接口ID。
- MAC地址只有48位,而接口ID卻要求64。
- MAC地址的前24位代表廠商ID,后24位代表制造商分配的唯一擴展標識。
- MAC地址的第七高位是一個U/L位
- 值為1時表示MAC地址全局唯一
- 值為0時表示MAC地址本地唯一
- 接口ID和路由分配的網絡前綴一起組成IPv6地址。
- MAC地址向EUI-64格式轉換過程
- MAC地址的前24位和后24位之間插入了16bit的FFFE
- 將U/L位的值從0變成了1
- 這樣就成了一個64bit的接口ID,且接口ID的值全局唯一。
IPv6地址: fe80::1c4b:b8ff:fe16:91c4 mac地址: 1e4b:b816:91c4 --> 1e4b:b8ff:fe16:91c4 (在中間插入fffe) --> 1c4b:b8ff:fe16:91c4 (更改第七位1為0)
有狀態地址自動配置協議 -- DHCPv6協議
- 無狀態地址自動配置
- 路由器並不記錄主機的IPv6地址信息, 可管理性差
- IPv6主機無法獲取DNS服務器地址等網絡配置信息
- 有狀態地址自動配置協議 -- DHCPv6協議
- DHCPv6服務器為主機分配一個完整的IPv6地址
- 並提供DNS服務器地址等其他配置信息
- 對已經分配的IPv6地址和客戶端進行集中管理
![]()
- DHCPv6服務器與客戶端之間使用UDP協議來交互DHCPv6報文
- 客戶端使用的UDP端口號是546
- 服務器使用的UDP端口號是547。
DHCPv6基本協議架構
- DHCPv6客戶端
- 通過與DHCPv6服務器進行交互,獲取IPv6地址前綴和網絡配置信息,完成自身的地址配置功能。
- DHCPv6中繼
- 負責轉發來自客戶端方向或服務器方向的DHCPv6報文
- 協助DHCPv6客戶端和DHCPv6服務器完成地址配置功能。
- 只有當DHCPv6客戶端和DHCPv6服務器不在同一鏈路范圍內,或者DHCPv6客戶端和DHCPv6服務器無法單播交互的情況下,才需要DHCPv6中繼的參與。
- DHCPv6服務器
- 負責處理來自客戶端或中繼的地址分配、地址續租、地址釋放等請求
- 為客戶端分配IPv6地址/前綴和其他網絡配置信息。
![]()
- 客戶端發送DHCPv6請求報文來獲取IPv6地址等網絡配置參數,使用的源地址為客戶端接口的鏈路本地地址,目的地址為ff02::1:2。
- ff02::1:2表示的是所有DHCPv6服務器和中繼, 這個地址是鏈路范圍的。
DUID
- DHCPv6 Unique Identifier
- 標識一台DHCPv6服務器或客戶端
- DUID采用以下兩種方式生成:
- 基於鏈路層地址(LL)--即采用鏈路層地址方式來生成DUID。
- 基於鏈路層地址與時間組合(LLT)--即采用鏈路層地址和時間組合方式來生成DUID。
DHCPv6分配地址
DHCPv6有狀態自動分配
- DHCPv6服務器為客戶端分配IPv6地址及其他網絡配置參數
DHCPv6無狀態自動分配
- 主機的IPv6地址仍然通過路由通告方式自動生成,DHCPv6服務器只分配除IPv6地址以外的配置參數。
DHCPv6客戶端在向DHCPv6服務器發送請求報文之前,會發送RS報文,在同一鏈路范圍的路由器接收到此報文后會回復RA報文。
在RA報文中包含管理地址配置標記M和有狀態配置標記O。
- 當M取值為1時,啟用DHCPv6有狀態地址配置,
- 當M取值為0時,則啟用IPv6無狀態地址自動分配方案。
- 當O取值為1時,用來定義客戶端需要通過有狀態的DHCPv6來獲取其它網絡配置參數,如DNS、NIS、SNTP服務器地址等,
- 當O取值為0時,啟用IPv6無狀態地址自動分配方案。
DHCPv6有狀態自動分配
![]()
DHCPv6四步交互地址分配過程如下:
- DHCPv6客戶端發送Solicit報文,請求DHCPv6服務器為其分配IPv6地址和網絡配置參數。
- DHCPv6服務器回復Advertise報文,該報文中攜帶了為客戶端分配的IPv6地址以及其它網絡配置參數。
- DHCPv6客戶端如果接收到了多個服務器回復的Advertise報文,則會根據Advertise報文中的服務器優先級等參數來選擇優先級最高的一台服務器,並向所有的服務器發送Request組播報文。
- 被選定的DHCPv6服務器回復Reply報文,確認將IPv6地址和網絡配置參數分配給客戶端使用。
DHCPv6無狀態自動分配
DHCPv6無狀態工作過程如下: 1. DHCPv6客戶端以組播方式向 DHCPv6服務器發送 InformationRequest報文。該報文中攜帶 Option Request選項, 用來指定DHCPv6客戶端需要從DHCPv6服務器獲取的配置參數 1. DHCPv6服務器收到Information-Request報文后, 為DHCPv6客戶端分配網絡配置參數,並單播發送Reply報文,將網絡配置參數返回給DHCPv6客戶端。 1. DHCPv6客戶端根據收到的Reply報文中提供的參數,完成DHCPv6客戶端無狀態配置。
IPv6二進制轉換表
十進制 | 二進制 | 十進制 | 二進制 |
---|---|---|---|
0 | 0000 | 8 | 1000 |
1 | 0001 | 9 | 1001 |
2 | 0010 | a | 1010 |
3 | 0011 | b | 1011 |
4 | 0100 | c | 1100 |
5 | 0101 | d | 1101 |
6 | 0110 | e | 1110 |
7 | 0111 | f | 1111 |