DHCP 協議(二)

DHCP的全名叫什麼?

(Dynamic Host configuration Protocol,動態主機配置協議 )是一個局域網的網絡協議,使用UDP協議工作;主要有兩個用途:

(1)用於內部網或網絡服務供應商自動分配IP地址;

(2)給用戶用於內部網管理員作爲對所有計算機作中央管理的手段。

功能簡述:它主要是通過客戶端發送廣播數據包給整個物理網段內的所有主機,若局域網內有DHCP服務器時,纔會響應客戶端的IP參數要求。

1.成爲一個DHCP的服務器的條件

(1)擁有真實物理網卡,或者連接廣播域的真實物理網卡

(2).該接口或者該物理網卡必須有一個合理的ip地址 此IP地址最好手動配置;

2.DHCP 協議中分爲兩個角色:

DHCP server服務端 和DHCP client客戶端。


服務端:負責在所創建的地址池中向申請地址的客戶端分發地址;服務端口號67

客戶端:接收地址 服務端口號68

DHCP 基於UDP 發送所有的數據包,

在工作過程中依靠廣播的形式發送報文信息,

與客戶端實現交互,達到成功準確的分發地址。

DHCP工作過程中 重要的相關報文:

在這裏插入圖片描述
在這裏插入圖片描述
DHCP discover報文
在這裏插入圖片描述
在這裏插入圖片描述
DHCP offer 報文

在這裏插入圖片描述
可以發現 offer報文中
源MAC地址爲 服務器的MAC地址;目標MAC地址爲全F;
源ip地址爲 服務器的iP地址;目標ip地址爲255.255.255.255 255.255.255.255
源端口 爲 67; 目標端口爲68。
則可知 offer報文依舊是通過廣播的形式發送,但是如果同時有多個客戶端申請IP ,爲何不出現錯誤?
因爲在offer報文中 實際包含了客戶端的MAC地址,則不會出現錯誤。
但由於 如果多個server存在,先接受到的地址 先生效,會出現DHCP欺騙攻擊。
在這裏插入圖片描述

在這裏插入圖片描述
:在一個區域內 可能會有多個server服務器,有因爲是DHCP基於UDP傳輸協議;缺少TCP的四種可靠機制;所以纔會產生DHCP的request報文和DHCP ACK 報文。

DHCP request 報文
在這裏插入圖片描述
可以看出request 報文中:
源MAC爲 客戶端本地MAC地址;目標MAC地址爲全F;
源ip地址爲 0.0.0.0 0.0.0.0 ;目標ip地址爲 255.255.255.255.255 255.255.255.255;
源端口爲68 ;目標端口爲67。
該報文依舊是以廣播的形式發送,
最終接受的是所有的server。
確保使用的是那個服務器下發的地址,
未使用的地址服務器進行回收,繼續下發給其他客戶端。
(Firstinput firstoutput 先進先出的問題,所以有兩臺dhcp服務器時使用的是最先用最先配置的dhcp服務器)在這裏插入圖片描述
DHCP ACK 報文
在這裏插入圖片描述
在這裏插入圖片描述
交換安全中的
DHCP 欺騙 攻擊
在這裏插入圖片描述
3.DHCP 的三種分配機制

自動分配方式(Automatic Allocation) DHCP服務器爲主機指定一個永久性的IP地址,一旦DHCP客戶端第一次成功從DHCP服務器端租用到IP地址後,就可以永久性的使用該地址。
動態分配方式(Dynamic Allocation) DHCP服務器給主機指定一個具有時間限制的IP地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。
手工分配方式(Manual Allocation) 客戶端的IP地址是由網絡管理員指定的,DHCP服務器只是將指定的IP地址告訴客戶端主機。

4.詳細的DHCP 工作過程
如下圖:
在這裏插入圖片描述
(1)客戶端:利用廣播數據包發送搜索DHCP服務器
若客戶端網絡設置使用DHCP協議取得IP,則當客戶端開機或者是重新啓動網卡時,客戶端主機會發送出查找DHCP服務器的UDP數據包(discover)給所有物理網段內的計算機。因爲客戶端還不知道自己屬於哪一個網絡,所以該數據包的來源地址會爲0.0.0.0,而目的地址則爲255.255.255.255。一般主機接收到這個數據包之後會直接丟棄,若局域網內有DHCP服務器,則會開始後續行爲。
(2)服務器端:提供客戶端網絡相關的租約以供選擇。(dhcp offer)
DHCP服務器在監聽到客戶端發出的dhcp discover廣播後,會針對這個客戶端的硬件地址( MAC)與本身的設置數據進行下列工作:

(1)到服務器的日誌文件中查找該用戶之前是否曾經租用過某個IP,若有且該IP目前無人使用,則提供此IP給客戶端。
(2)若配置文件針對該MAC地址提供特定的固定IP時,則提供該固定的IP給客戶端。
(3)若不符合上述兩個條件,則隨機選取當前沒有被使用的IP參數給客戶端,並記錄下來。

(3)客戶端:決定選擇DHCP服務器提供的網絡參數租約並向服務器確認。
由於局域網內可能並非僅有一臺DHCP服務器,但客戶端僅能接收一組網絡參數租約,因此客戶端只會挑選其中一個DHCP offer(通常是最先抵達的那個)。當決定好使用此服務器的網絡參數租約後,客戶端便開始使用這組網絡參數來配置自己的網絡環境。此外,客戶端會發送一個dhcp request廣播數據包給所有物理網段內的主機,告知已經接受該服務器的租約(此時若有兩臺以上的DHCP服務器,則這些沒有被接受的服務器會收回該IP租約。)。同時,客戶端還會向網絡發送一個ARP封包,查詢網絡上面有沒有其他機器使用該IP地址;如果發現該IP地址已經被佔用,客戶端則會送出一個DHCPDECLIENT包給DHCP服務器,拒絕接受其DHCP offer,並重新發送DHCP discover信息。
(4)服務器端:記錄該次租約行爲後並向客戶端發送響應數據包信息以確認客戶端的使用。
當服務器端收到客戶端的確認選擇後,服務器會回送確認的dhcp ack響應數據包,並且告知客戶端這個網絡參數租約的期限,並且開始租約計時。那麼該次租約何時會到期而被解約,有以下幾種情況:
客戶端脫機:關閉網絡接口、重新啓動、關機等行爲,都算是脫機狀態,這個時候server端就會將該IP地址收回,並放到server的備用區中,以便日後使用。
客戶端租約到期:dhcp server端發放的IP有使用的期限,客戶端使用這個IP到達期限規定的時間,而且沒有重新提出DHCP的申請時,server端就會將該IP收回,這個時候就會斷線。但用戶也可以向DHCP服務器再次要求分配IP。
由於目前的DHCP客戶端程序大多數會主動依據租約時間去重新申請IP,所以即使有租約期限,也不需要在某個時間點手動去重新申請IP。一般情況下,假設租約時間是T小時,那麼客戶端程序在0.5T時會主動向DHCP服務器發出重新要求網絡參數的數據包。如果這次數據包請求沒有成功,那麼在0.85T後還會再次發送數據包一次。正因如此,所以服務器端會啓動port67監聽客戶端請求,而客戶端會啓動port68主動向服務器請求。

5.DHCP 在linux中的相關配置
以下實驗運行環境:redhat 7.2 linux虛擬機
DHCP 需要配置的相關項
地址池
網段
網關
Dns

1.第一步首先需要安裝軟件
[root@web ~]# yum install dhcp -y
2.DHCP 服務器的主要配置文件 /etc/dhcp/dhcpd.conf
dhcp服務器與客戶端租約建立的起始與到期日記錄文件:/var/lib/dhcpd/dhcpd.leases
[root@localhost 桌面]# vim /etc/dhcp/dhcpd.conf
示例文件/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

注意:
  • 1

編寫DHCP配置文件的規範:
除了括號後面之外,其他的每一行配置最後都要以“;”結尾。
配置項目的語法形式主要是“參數代號 配置內容”。
某些配置項目必須以option來定義,基本形式爲“option 參數代碼、
配置內容”

dhcp.conf中的配置主要分爲兩大項目;
一個是服務器運行的全局設置,一個是IP分配設置。
(1) 全局設置:當IP分配設置沒有定義到某些設置時,則以全局設置爲準。
default-lease-time默認的租約時間(用戶的計算機也能夠要求一段特定長度的租約時間。但若用戶沒有特別要求租約時間,默認以此爲準。時間單位默認爲秒)
max-lease-time最大租約時間(如果用戶要求的租約時間超過該值,則以此值爲準)
option domain-name 域名(如果在/etc/resolv.conf裏面設置了一個search xxx.com的話,這表示當你要查找主機名時,DNS系統會主動幫你在所要查找的主機名後加上這個域名後綴)
option domain-name-servers IP1、IP2(這個設置參數可以修改客戶端的/etc/resolv.conf文件)
ddns-update-style 類型(因爲dhcp客戶端所取得的IP通常是一直變動的,所以此時DHCP可以通過ddns來更新主機名與IP的對應關係)
ignore client-updates(與上一個設置值有關,客戶端可通過dhcp服務器來更新DNS相關的信息。設置成ignore爲忽略)
option routers 路由器地址(設定路由器的IP地址)
#配置DHCP和dns服務的更新模式,一般不用,但是必須有該項,否則服務無法啓動
ddns-update-style interim; DNS互動更新模式
ignore client-updates; 忽略客戶端更新
(2) 由於dhcp主要是針對局域網來分配IP參數,因此在設置IP之前,我們需要指定一個局域網(dhcp待分配地址的區域)。指定局域網的方式使用如下參數:
subnet 網絡地址 netmask 子網掩碼地址 {……}
括號內可有如下的內容:
range IP1 IP2指定IP1到IP2的地址範圍給客戶端
host 主機名 {……}這個host就是指定固定IP對應到固定MAC的設置值,主機名可以自己給與。在大括號內指定MAC與固定的IP。
hardware ethernet 硬件地址
fixed-address IP地址

#配置DHCP和dns服務的更新模式,一般不用,但是必須有該項,否則服務無法啓動

ddns-update-style { interim | ad-hoe | none };
#作用:定義所支持的DNS動態更新類型。
# none:表示不支持動態更新
# interim:表示DNS互動更新模式
# ad-hoc:表示特殊DNS更新模式
ddns-update-style interim; # dns動態更新模式
ignore client-updates; #這個選項是不允許客戶機更新 DNS 記錄。當然,也可能允許,但會有一點問題。

重點配置:
#子網配置段
#聲明網段和掩碼
subnet 192.168.40.0 netmask 255.255.255.0 {
#指定地址池範圍
range dynamic-bootp 192.168.40.130 192.168.40.254;
#指定網關
option routers 192.168.40.1;
#指定掩碼
option subnet-mask 255.255.255.0;
#指定DNS
option domain-name-servers 114.114.114.114;
#默認租約
default-lease-time 21600;
#最大租約
max-lease-time 43200;
}
練習DHCP的配置:
練習題一: 單網段配置
在VMware 界面點擊編輯————》點擊虛擬網絡編輯器————》
在這裏插入圖片描述
將本地DHCP服務關閉
準備工作:
關閉防火牆:[root@localhost ~]# systemctl stop firewalld
關閉selinux: [root@localhost ~]# setenforce 0
檢查yum源:vim/etc/yum.repos.d/base.repo
檢查掛載:[root@localhost ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
1.安裝DHCP包:
在這裏插入圖片描述
2.進入配置文件 進行地址的編輯配置
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
在這裏插入圖片描述
保存退出 並重啓服務
然後在客戶端上進行 獲取ip地址的請求
查看IP 爲所配置地址池內的地址
在這裏插入圖片描述
練習題二 固定ip配置
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
在這裏插入圖片描述
重啓服務
在指定的主機上獲取IP地址
在這裏插入圖片描述
相關介紹
DHCP客戶端
在支持DHCP功能的網絡設備上將指定的端口作爲DHCP Client,通過DHCP協議從DHCP Server動態獲取IP地址等信息,來實現設備的集中管理。一般應用於網絡設備的網絡管理接口上。
DHCP客戶端可以帶來如下好處:
降低了配置和部署設備時間。
降低了發生配置錯誤的可能性。
可以集中化管理設備的IP地址分配。
DHCP服務器
DHCP服務器指的是由服務器控制一段IP地址範圍,客戶端登錄服務器時就可以自動獲得服務器分配的IP地址和子網掩碼。
DHCP中繼代理
DHCPRelay(DHCPR)DHCP中繼 也叫做DHCP中繼代理。DHCP中繼代理,就是在DHCP服務器和客戶端
在這裏插入圖片描述
之間轉發DHCP數據包。當DHCP客戶端與服務器不在同一個子網上,就必須有DHCP中繼代理來轉發DHCP請求和應答消息。DHCP中繼代理的數據轉發,與通常路由轉發是不同的,通常的路由轉發相對來說是透明傳輸的,設備一般不會修改IP包內容。而DHCP中繼代理接收到DHCP消息後,重新生成一個DHCP消息,然後轉發出去。
在DHCP客戶端看來,DHCP中繼代理就像DHCP服務器;在DHCP服務器看來,DHCP中繼代理就像DHCP客戶端。

DHCP的使用情況
什麼時候最好使用 DHCP ?
公司內部很多 Laptop計算機使用的場合!因爲 Laptop在使用上,當設定爲DHCP client 的時候,那麼只要它連接上的網域裏面有一部可以上網的 DHCP服務器 ,那部Laptop也就可以連接上 Internet 了!
網域內計算機數量相當的多時:另外一個情況就是網域內計算機數量相當龐大時,大到您沒有辦法一個一個的進行說明來設定他們自己的網絡參數,這個時候爲了省麻煩,還是架設DHCP 來的方便。
什麼情況下不建議使用 DHCP 主機?
Client 在開機的時候會主動的發送訊息給網域上的所有機器,這個時候,如果網域上就是沒有DHCP主機呢?那麼這部 Client 端計算機會發送四次請求信息,第一次等待時間爲 1 秒,其餘三次的等待時間分別是 9、13、16 秒。如果還是沒有DHCP服務器的響應,那麼在5分鐘之後,Client端計算機會重複這一動作。
在網域內的計算機,有很多機器其實是做爲主機的用途,很少Client 需求,那麼似乎就沒有必要架設 DHCP。

DHCP的報文格式

在這裏插入圖片描述

  • OP:若是client送給server的封包,設爲1,反向爲2;
  • Htype:硬件類別,ethernet爲1;
  • Hlen:硬件長度,ethernet爲6;
  • Hops:若數據包需經過router傳送,每站加1,若在同一網內,爲0;
  • Transaction ID:事務ID,是個隨機數,用於客戶和服務器之間匹配請求和相應消息;
  • Seconds:由用戶指定的時間,指開始地址獲取和更新進行後的時間;
  • Flags:從0-15bits,最左一bit爲1時表示server將以廣播方式傳送封包給 client,其餘尚未使用;
  • Ciaddr:用戶IP地址;
  • Yiaddr:客戶IP地址;
  • Siaddr:用於bootstrap過程中的IP地址;
  • Giaddr:轉發代理(網關)IP地址;
  • Chaddr:client的硬件地址;
  • Sname:可選server的名稱,以0x00結尾;
  • File:啓動文件名;
  • Options:,廠商標識,可選的參數字段
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章