DHCP地址分配服務
導讀 | DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個區域網的網路協議,使用UDP協議工作。DHCP有3個埠,其中UDP67和UDP68為正常的DHCP服務埠,分別作為DHCP伺服器和DHCP客戶端的服務埠;546號埠用於DHCPv6 Client,而不用於DHCPv4,是為DHCP failover服務,這是需要特別開啟的服務,DHCP failover是用來做“雙機熱備”的。 |
DHCP功能概述
DHCP通常被應用在區域網絡環境中(有限和無線),主要作用是集中的管理、分配IP地址,使網路環境中的主機動態的獲得IP地址、Gateway地址、DNS伺服器地址等資訊,並能夠提升地址的使用率。
DHCP協議採用客戶端/伺服器模型,主機地址的動態分配任務由網路主機驅動。當DHCP伺服器接收到來自網路主機申請地址的資訊時,才會向網路主機發送相關的地址配置等資訊,以實現網路主機地址資訊的動態配置。DHCP具有以下功能:
1. 保證任何IP地址在同一時刻只能由一臺DHCP客戶機所使用。
2. DHCP應當可以給使用者分配永久固定的IP地址。
3. DHCP應當可以同用其他方法獲得IP地址的主機共存(如手工配置IP地址的主機)。
4. DHCP伺服器應當向現有的BOOTP客戶端提供服務。
DHCP的分配機制
1) 自動分配方式(Automatic Allocation),DHCP伺服器為主機指定一個永久性的IP地址,一旦DHCP客戶端第一次成功從DHCP伺服器端租用到IP地址後,就可以永久性的使用該地址。
2) 動態分配方式(Dynamic Allocation),DHCP伺服器給主機指定一個具有時間限制的IP地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。
3) 手工分配方式(Manual Allocation),客戶端的IP地址是由網路管理員指定的,DHCP伺服器只是將指定的IP地址告訴客戶端主機。
DHCP的工作模式
全部資料報都是以廣播的方式傳送的
1. 首先,客戶端傳送DHCP Discover報文到DHCP伺服器。
2. 然後,伺服器接收到響應後就傳送DHCP Offer報文迴應DHCP客戶端。所有的DHCP Server都能夠接收到DHCP Client傳送的DHCP Discover報文,所有的DHCP Server都會給出響應,向DHCP Client傳送一個DHCP Offer報文。DHCP Offer報文中“Your(Client) IP Address”欄位就是DHCP Server能夠提供給DHCP Client使用的IP地址,且DHCP Server會將自己的IP地址放在“option”欄位中以便DHCP Client區分不同的DHCP Server。DHCP Server在發出此報文後會存在一個已分配IP地址的紀錄。
3. 其次,DHCP客戶端接收到DHCP Offer之後就會發送DHCP request到DHCP伺服器。DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。DHCP Client會發出一個廣播的DHCP Request報文,在選項欄位中會加入選中的DHCP Server的IP地址和需要的IP地址。
4. 最後,DHCP伺服器響應客戶端傳送DHCP ack報文到客戶端。DHCP Server收到DHCP Request報文後,判斷選項欄位中的IP地址是否與自己的地址相同。如果不相同,DHCP Server不做任何處理只清除相應IP地址分配記錄;如果相同,DHCP Server就會向DHCP Client響應一個DHCP ACK報文,並在選項欄位中增加IP地址的使用租期資訊。
5. DHCP Client接收到DHCP ACK報文後,檢查DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址並根據IP地址使用租期自動啟動續延過程;如果DHCP Client發現分配的IP地址已經被使用,則DHCP Client向DHCPServer發出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然後DHCP Client開始新的地址申請過程。
在使用租期超過50%時刻處,DHCP Client會以單播形式向DHCP Server傳送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server傳送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server傳送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。
在使用租期超過87.5%時刻處,DHCP Client會以廣播形式向DHCP Server傳送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server傳送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server傳送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址,直到IP地址使用租期到期時,DHCP Client才會向DHCP Server傳送DHCP Release報文來釋放這個IP地址,並開始新的IP地址申請過程。
DHCP中繼代理
DHCPRelay叫做DHCP中繼代理。DHCP中繼代理,就是在DHCP伺服器和客戶端之間轉發DHCP資料包。當DHCP客戶端與伺服器不在同一個子網上,就必須有DHCP中繼代理來轉發DHCP請求和應答訊息。DHCP中繼代理的資料轉發,與通常路由轉發是不同的,通常的路由轉發相對來說是透明傳輸的,裝置一般不會修改IP包內容。而DHCP中繼代理接收到DHCP訊息後,重新生成一個DHCP訊息,然後轉發出去。
在DHCP客戶端看來,DHCP中繼代理就像DHCP伺服器;在DHCP伺服器看來,DHCP中繼代理就像DHCP客戶端。此外,如果想讓一臺DHCP伺服器建立多個IP域為不同的VLAN或網路都提供DHCP服務,那麼就必須要使用DHCP中繼的功能。DHCP中繼可以使用主機搭建,也可以通過三層交換機來設定,如下圖:
DHCP安裝配置
安裝DHCP
$ yum install dhcp
複製dhcp提供的模板檔案到/etc下名字為dhcpd.conf是dhcp的配置檔案
$ cp -p /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
主配置檔案/etc/dhcpd.conf的配置
ddns-update-style none; //動態更新DNS的
subnet 192.168.10.0 netmask 255.255.255.0 { //宣告一個IP地址段和對應的子網掩碼
option routers 192.168.10.1; //客戶端獲取的閘道器
option subnet-mask 255.255.255.0; //閘道器子網掩碼
option domain-name-servers 192.168.10.1; //客戶端獲取的域名伺服器IP
range 192.168.10.11 192.168.10.100; //客戶端獲取的IP地址池(dynamic-bootp此協議不用了)
default-lease-time 21600;
max-lease-time 43200;
host Server01 { //為客戶機固定分配IP地址
hardware ethernet b0:c0:c3:22:46:81;
fixed-address 192.168.10.88;
next-server //用於PXE當中指定檔案伺服器的獲取引導檔案的
}
host Server02 { //為客戶機固定分配IP地址
hardware ethernet b0:c0:c3:22:46:81;
fixed-address 192.168.10.88;
}
}
在DHCP伺服器上可以檢視租約資訊
$ cat /var/lib/dhcpd/dhcpd.leases
或者
$ cat /var/log/messages
DHCP客戶端命令
# 動態獲取地址
$ dhclient
# 釋放eth0網絡卡的ip地址
$ dhclient -r eth0