1、DHCP簡介
1、DHCP (Dynamic Host Configuration Protocol)即動態主機設置協議。
2、前身是BOOTP協議,是一個局域網的網絡協議,使用UDP協議工作,常用的端口:67(DHCPv4 server),68(DHCPv4 client), 547 (DHCPv6 server) , 546 (DHCPv6 client)。DHCP通常被用於局域網環境,主要作用是集中的管理、分配IP地址,使client動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,並能夠提升地址的使用率
3、DHCP協議屬於應用層協議
DHCP SERVER負責接收客戶端的DHCP請求,管理LAN端所有的IP網絡設定資料,相比於BOOTP,DHCP通過“租約”來實現動態分配IP的功能,實現IP的時分複用,從而解決IP資源短缺的問題。其地址分配方式有三種,分別是人工配置(由管理員對每臺具體的計算機指定一個地址),自動配置(服務器爲第一次連接網絡的計算機分配一個永久地址),動態配置(在一定的期限內將地址租給計算機,租期結束後客戶必須續租或者停用該地址),而對於路由器,經常使用的地址分配方式是動態配置。
1.1、DHCP簡介:BOOTP
BOOTP(Bootstrap Protocol,引導程序協議)是一種引導協議,基於IP/UDP協議,也稱自舉協議,是DHCP協議的前身。BOOTP用於無盤工作站的局域網中,可以讓無盤工作站從一箇中心服務器上獲得IP地址。通過BOOTP協議可以爲局域網中的無盤工作站分配動態IP地址,這樣就不需要管理員去爲每個用戶去設置靜態IP地址。
BOOTP可以看成是簡單版的DHCP,是對主機的靜態配置,而DHCP可以依據一些策略對主機進行動態配置。BOOTP用於無盤工作站的啓動和配置,而DHCP更適用於客戶端接入變化的網絡,即客戶端接入時間、接入地點不固定。
2、DHCP協議封裝
OP:操作類型,0-請求,1-應答
HWtype:1 爲以太網
Hwlen: 6
Hops: 中繼次數,每中繼一次加1
Transaction id:事務ID
Second elapsed:從第一次請求開始過去的時間
Flag:0-單播,1只能處理廣播(不能或者不願意處理單播)
ciaddr:客戶端IP地址,如果沒有,填全0
yiaddr:由於服務器填寫,分配給客戶端的IP地址
siaddr: 下一服務器地址(用於bootp引導過程)
giaddr: 中繼網關服務器地址(跨子網進行DHCP地址分配的場景)
chaddr:客戶端MAC地址
sname:dhcp服務器名稱
bootfilename:引導文件名稱
magic cookie: dhcp爲了兼容BOOTP增加的魔數( 63.82.53.63)
option:拓展選項
2.1、DHCP協議封裝:拓展選項
常用tag:
0 :填充 1:子網掩碼 3:路由器地址 6:域名服務器
15:域名 50:請求的IP地址 51:地址租用期
53:DHCP消息類型 54:服務器標識符 55:參數請求列表
56:DHCP錯誤消息 58:租約更新時間 59:租約重新綁定時間
61:客戶機標識符 119:域搜索列表 255: 結束
2.2、DHCP協議封裝:DHCP消息類型(53)
DHCP常用消息類型:
DHCPDISCOVER(1), DHCPOFFER (2), DHCPREQUEST (3), DHCPDECLINE (4), DHCPACK (5),DHCPNAK (6), DHCPRELEASE (7), DHCPINFORM (8), DHCPFORCERENEW(9) , DHCPLEASEQUERY (10), DHCPLEASEUNASSIGNED (11), DHCPLEASEUNKNOWN (12), DHCPLEASEACTIVE (13).
3、DHCP工作原理
3.1、DHCP協議通信過程
DHCPDISCOVER(1):
廣播消息,src 0.0.0.0:68 dst 255.255.255.255:67
DHCPOFFER (2):
攜帶,租期T,更新時間T1(通常爲1/2*T),重新綁定時間T2(通常爲7/8*T)
DHCPREQUEST (3):
包含一個服務器標識符,選定的IP地址
DHCPACK (5):
服務器確認可以綁定該IP地址
DHCPNAK (6)
服務器無法分配該IP地址
DHCPDECLINE (4):
客戶端使用ACD檢測衝突,發現該IP地址被佔用,發送此消息放棄該IP地址
DHCPRELEASE (7):
客戶端在租期內主動放棄一個IP地址
DHCPINFORM (8):
客戶端已經有IP地址的情況下,需要其他配置信息,發送此信息
3.2、DHCP狀態機
4、DHCPv6: 與DHCPv4的區別
1、DHCPv6使用組播地址:ff02::1:2
而DHCPv4使用廣播
2、 DHCPv6中沒有保留BOOTP協議
3、DHCPv6中重要概念:
客服端標識符,服務端標識符
身份關聯(IA),DUID
4.1、DHCPv6 :消息格式
4.2、DHCPv6: 消息類型對比
4.3、DHCPv6: IA(身份關聯)
IAID:32位隨機數
T1:更新時間
T2:重新綁定時間
IA_NA: NA選項
IA_TA: TA選項
4.4、DHCPv6: DUID(DHCP唯一標識符)
三種生成方式:
DUID-LLT:基於鏈路層地址和時間DUID
DUID-EN:基於企業編號和供應商分配的DUID
DUID-LL:僅基於鏈路層地址的DUID
4.5、DHCPv6:有狀態和無狀態
有狀態的地址配置:
類似DHCPv4,通過使用如 DHCP 的配置協議,用來配置非鏈接本地地址,以及其他額外信息(DNS等)
無狀態的地址配置:
使用無狀態地址自動配置,在無狀態下客戶機認爲能夠自己配置IPv6地址,當需要DHCPv6獲取額外信息(DNS服務等),另外一種選擇是使用ICMPv6路由器通告消息來獲得一臺DNS服務器的地址
4.5、DHCPv6:生命週期
4.6、DHCPv6:ICMPv6路由器通告消息
兩個重要字段
M位:可管理地址配置標誌 O位:其他配置標誌
M0 O0:表示不使用DHCPv6,採用無狀態地址自動分配
M1 O1:DHCPv6 有狀態, DHCPv6 將分配有狀態地址,同時分配其他配置
M0 O1:DHCPv6 無狀態:DHCPv6 不爲 IPv6 主機分配有狀態地址,但分配無狀態配置設置
M1 O0:DHCPv6 用於地址配置,但不用於其他配置,這是一種最不可能的組合
4.7、DHCPv6:通信過程
4.8、DHCPv6:消息介紹
ROUTER SOLICIT:路由器發現消息
ROUTER ADVERTISE:路由器通知消息
SOLICIT(1):DHCPv6發現消息
ADVERTISE(2): DHCPv6通知消息
REQUEST(3): DHCPv6請求消息
REPLY(7):DHCPv6應答消息
DECLINE(9): DHCPv6放棄
INFORMATION-REQUEST(11):已有IP的情況下,使用此消息申請其他配置
4、DHCPv6:前綴委託
一臺路由器向另一臺路由器委託一個地址空間範圍,這個地址可以描述爲一個IPv6地址前綴,使得該路由器可以像一個DHCPv6服務器那樣工作
5、DHCP中繼
5.1、DHCP中繼:重要概念
1、中繼服務在第3層,只負責DHCP中的廣播或者組播數據
2、中繼代理選項
DHCPv4 RAIO:元選項,很多子選項用於ISP標識請求來自於哪個用戶,哪個鏈路或網絡,安全認證子選項(SHA-1算法)
3、中繼代理遠程ID子選項
用於標識遠程客戶機(呼叫方ID,用戶名,調制解調器ID,點對點鏈路的遠程IP地址),DHCPv6版本中還包含了DUID
4、服務器標識符覆蓋
5、租約查詢,批量租約查詢
6、2層中繼代理 IPv4 LDRA
6、DHCP與DNS交互
組合DNS /DHCP服務器:
能夠在給客戶機分配IP地址的同時,根據DHCPREQUEST中的客戶機標識符或者域名,進行域名和IP地址綁定,並更新到DNS數據庫中,這樣後續的DNS請求,都能相應最新的IP和域名綁定信息
7、DCHP安全:DHCP認證
1、認證消息:下發一個共享配置令牌,客戶端和服務端配置令牌信息匹配則可以接受該消息,有令牌信息能夠被截獲,所以這種保護方式很弱
2、延期認證:假設客戶端和服務端有一個共享祕鑰,當客戶端發送DHCPDISCOVER和DHCPINFORM時,包含一個認證選項,則DHCPINFORM和DHCPACK中包含一個認證碼(MAC加密後的數據),
客戶端檢測認證碼是否正確。核心算法採用MD5簽名校驗
3、DHCP認證機制沒有被廣泛應用
7.1、DHCP安全:攻擊手段
1、未授權客戶機或者未授權服務器對DHCP通信過程的干擾
2、耗盡配置資源的Dos攻擊
感謝xuj