DHCP服務

enough_time發表於2020-10-19

DHCP基礎知識

DHCP是什麼

DHCP是動態主機配置協議,用於網路中分配ip地址。只要網路中安裝了DHCP伺服器,使用者無需輸入任何資料,就可以將一臺計算機接入網路中,所有入網的必要引數都由DHCP伺服器負責(如IP地址、閘道器地址、子網掩碼、DNS地址等)

DHCP採用的模式

DHCP採用客戶端/伺服器的模式,當DHCP客戶端啟動時,會自動與DHCP伺服器進行通訊,由DHCP伺服器為DHCP客戶端自動分配IP地址。
凡是安裝了DHCP服務的都稱為DHCP伺服器,啟動了DHCP功能的都稱為DHCP客戶端

DHCP分配IP地址的方式

DHCP分配IP地址有以下兩種方式

1.限定租期:這是一種動態分配的方式,能夠很好地解決IP地址不夠用的問題

2.永久租用:採用該方法的前提是IP地址夠用,能夠避免DHCP客戶端頻繁地向DHCP伺服器提出續約請求

DHCP報文型別

DHCP客戶端的報文型別

1.DHCP Discover:該報文用於DHCP客戶端發現網段中的DHCP伺服器,DHCP客戶端請求IP地址時,並不知道伺服器的位置,因此會在本網路中以廣播的方式傳送DHCP發現報文,所有收到Discover報文的DHCP伺服器都會傳送回應報文

2.DHCP Request:該報文用於DHCP客戶端收到DHCP伺服器端的Offer報文,DHCP客戶端會從所有回覆Offer報文中的DHCP伺服器中選擇一個伺服器進行回應,一般是選擇最快回復Offer報文的伺服器進行回應,以廣播的方式進行回應(通告選擇的伺服器)。獲得IP地址後,會在地址使用租期過去1/2時,向DHCP伺服器傳送單播Request報文續延租期,如果沒有收到DHCP ACK報文,在租期過去3/4時,會傳送廣播Request報文續延租期

3.DHCP Release:該報文用於DHCP客戶端不再需要使用分配IP地址,則會向DHCP伺服器傳送該報文,DHCP伺服器釋放被繫結的租約

4.DHCP Inform:該報文用於DHCP客戶端需要從伺服器端獲取更為詳細的配置資訊

5.DHCP Decline:該報文用於DHCP客戶端收到伺服器端的ACK報文後,通過地址衝突檢測發現伺服器分配的地址衝突或者由於其他原因導致不能使用,則傳送Decline報文,通知伺服器所分配的ip地址不可用

DHCP伺服器端的報文型別

1.DHCP Offer:該報文用於DHCP伺服器端收到DHCP客戶端的Discover報文後,進行響應回覆使用

2.DHCP ACK:該報文用於DHCP伺服器端收到request報文後,能正常為其分配IP地址,根據dhcpd.conf檔案中與之匹配的子網中取出一個可用的IP地址以及必要的網路引數返回給DHCP客戶端

DHCP伺服器從地址池中選擇IP地址時,根據以下優先順序進行選擇:
1.當前已經存在的IP MAC地址的對應關係
2.客戶端以前的IP地址
3.讀取Discover報文中的Requested Ip Address Option的值,如果IP地址存在且可用,則為其分配該IP地址
4.從配置的子網中選擇IP地址(選擇IP地址時,會傳送icmp測試報文,如果收到該IP地址的ICMP報文,則證明該IP地址已經在使用了,因此放棄分配該地址,一直用此方法找到可用的IP地址)

3.DHCP NCK:該報文用於DHCP伺服器收到Request報文後,無法正常為其分配ip地址,則傳送NCK報文作為回應,通知使用者無法分配合適的ip地址

DHCP服務工作原理

在這裡插入圖片描述

如圖,DHCP分配IP地址可簡單分為以上4個階段,還有其餘情況如下:

在這裡插入圖片描述

配置DHCP服務

安裝DHCP伺服器

掛載光碟機
#1.掛載光碟,telnet的安裝包在centos系統中有
mount /dev/cdrom /mnt
#進入軟體包目錄,這裡是以centos8為例
cd /mnt/BaseOS/Packages
#rpm安裝dhcp,建議自動補齊rpm包的名字
rpm -ivh dhcp-server-4.3.6-40.el8.x86_64.rpm 

修改配置檔案,提供dhcp功能

檢視dhcpd.conf配置檔案中的示例檔案地址(第二行,有see /usr/...),並將例項檔案複製並覆蓋原來的dhcpd.conf檔案
cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
編輯dhcpd.conf檔案
vim /etc/dhcp/dhcpd.conf 

因為DHCP伺服器從地址池中選擇IP地址時,會根據優先順序進行選擇,而已有的ip mac地址對映關係的優先順序是最高的,因此可以修改檔案內容如下:

subnet 192.168.16.0 netmask 255.255.255.240 {   #表示分配的網段是192.168.16.0/28
  range 192.168.16.1 192.168.16.14;#指定分配的地址範圍
  option domain-name-servers 8.8.8.8,114.114.114.114;#指定DNS伺服器的IP地址
  option domain-name "internal.example.org";#指定分配的域名資訊
  option routers 192.168.16.1;#指定分配的閘道器
  option broadcast-address 192.168.16.15;#指定分配的廣播地址
  default-lease-time 600; #指定預設的租約時間
  max-lease-time 7200;#指定最大租約時間
}
host boss1{
  hardware ethernet 12:34:56:78:AB:CD;#給boss1主機分配mac地址
  fixed-address 192.168.1.8;#給boss1主機分配ip地址
}
host boss2{
  hardware ethernet 12:34:56:78:AB:CE;#給boss2主機分配mac地址
  fixed-address 192.168.1.9;#給boss2主機分配ip地址
}

修改完之後,需要重啟dhcp服務

service dhcpd restart

開啟路由轉發功能

DHCP伺服器的IP就是該網段的閘道器,即DHCP伺服器的網路卡擔當閘道器功能,因此需要開啟DHCP的轉發功能

修改檔案,將net.ipv4.ip_forward=0修改為net.ipv4.ip_forward=1
vim /etc/sysctl.conf

相關文章