LINUX DHCP 服務配置詳解
安裝軟體包
yum install -y dhcp
yum install -y dhcp-common
yum install -y dhcp-lib
dhcp包包含的主要檔案
rpm -ql dhcp #檢視dhcp包安裝了哪些檔案和程式
/etc/dhcpd.conf #主配置檔案
/etc/rc.d/init.d/dhcpd #服務啟動指令碼
/etc/rc.d/init.d/dhcrelay #繼dhcp服務啟動指令碼
/etc/sysconfig/dhcpd #次要配置檔案
/etc/sysconfig/dhcrelay
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example #示例檔案
/ust/lib/systemd/system/dhcpd.services # 服務啟動指令碼 systemctl start dhcpd
/var/lib/dhcpd/dhcpd.leases #租約資訊存放的檔案
客戶機和伺服器配置檔案
/var/lib/dhclient/dhclient.leases #客戶端租約檔案
/var/lib/dhcpd/dhcpd.leases #伺服器端的租約檔案在
/etc/dhcp/dhcpd.conf #dhcp配置檔案
服務埠對應配置檔案
cat /etc/services #linux下基本服務的埠,協議,描述等資訊。
http 80/tcp www www-http # WorldWideWeb HTTP httpd服務
bootps 67/tcp # BOOTP server 這就是dhcp服務埠
bootps 67/udp ##是dhcp服務
常用命令
systemctl start dhcp
systemctl stop dhcpd
配置dhcp伺服器
配置檔案都放在/etc/dhcp目錄下,主配置檔案為dhcpd.conf
- 編寫dhcpd.conf (可以複製dhcpd.conf.example模板檔案來修改,也可以直接編輯dhcpd.conf)
## 1、拷貝示例檔案覆蓋原來的空檔案。通過rpm -ql dhcp檢視自己模板配置檔案(不一定和我一樣的版本)
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
## 2、預先處理,去掉 註釋和空行,保留 生效語句,和可選語句。
sed -ri '/(^#[[:space:]]+|^#$|^$)/{d}' /etc/dhcp/dhcpd.conf
刪除沒用的那些行,保留內容如下:
主配置檔案樣板:
#ddns-update-style none;
#authoritative;
log-facility local7;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.100 10.1.1.200; ##地址池
option domain-name-servers 202.96.128.166; ##DNS伺服器地址
option domain-name "class.com"; ##域名
option routers 10.1.1.1; ##預設路由
option broadcast-address 10.1.1.255; ##廣播地址
default-lease-time 300; ##預設租約時間
max-lease-time 7200; ##最大租約時間
}
注意:dhcp伺服器必須要有一張網絡卡在10.1.1.0/24網路,並且它只會給這張網絡卡所在網路(廣播域)主機分配ip。
- 一個dhcp伺服器給多區域網提供服務
1、先將兩張網絡卡接入兩個不同網路,並設定靜態ip
2、修改配置檔案/etc/dhcp/dhcpd.conf 如下:
#ddns-update-style none;
#authoritative;
log-facility local7;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.100 10.1.1.200; ##地址池
option domain-name-servers 202.96.128.166; ##DNS伺服器地址
option domain-name "class.com"; ##域名
option routers 10.1.1.1; ##預設路由
option broadcast-address 10.1.1.255; ##廣播地址
default-lease-time 300; ##預設租約時間
max-lease-time 7200; ##最大租約時間
}
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.3 192.168.100.100; ##地址池
option domain-name-servers 202.96.128.166; ##DNS伺服器地址
option domain-name "class.com"; ##域名
option routers 192.168.100.1; ##預設路由
option broadcast-address 192.168.100.255; ##廣播地址
default-lease-time 300; ##預設租約時間
max-lease-time 7200; ##最大租約時間
}
小結:系統在收到dhcp請求時,會看是哪張網絡卡收到的請求,根據該網絡卡的ip地址選擇對應配置檔案裡的地址池給對應網路主機分配地址。
mac繫結ip (巢狀一段就好)
#ddns-update-style none;
#authoritative;
log-facility local7;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.100 10.1.1.200; ##地址池
option domain-name-servers 202.96.128.166; ##DNS伺服器地址
option domain-name "class.com"; ##域名
option routers 10.1.1.1; ##預設路由
option broadcast-address 10.1.1.255; ##廣播地址
default-lease-time 300; ##預設租約時間
max-lease-time 7200; ##最大租約時間
host serverftp { ## 備註名稱,可以自行定義。
hardware ethernet 12:34:56:78:AB:CD; ##靜態繫結mac和ip
fixed-address 10.1.1.5;
}
}
dhcp配置檔案中下面配置作用:客戶機通過dhcp獲得dns域名和IP地址,並且將dns--ip 儲存到/etc/resolv.conf中!
option domain-name-servers 202.96.128.166; ##DNS伺服器地址
option domain-name "class.com"; ##域名
客戶機/etc/resolv.conf配置檔案
; generated by /usr/sbin/dhclient-script ##指令碼載入客戶端租約檔案/var/lib/dhclient/dhclient.leases
search localdomain ##dhcp分配的dns域名
nameserver 192.168.109.2 ##dhcp分配的dns伺服器的ip
預設租約時間 與 最大租約時間
注意:這裡的時間都是utc時間,比如我們是15:00獲取的ip 配置檔案裡顯示的是07:00,比北京時間少8小時
客戶機續約過程如下:
假如:預設使用 10 小時租約期 ,10小時內續約,可以繼續使用該IP地址。
1、線上:第5小時找一次dhcp自動續約
2、(1請求失敗)8.5小時的時候,再嘗試
3、(2請求失敗)找別的dhcp伺服器
4、(3請求失敗)繼續使用原先的IP地址,直到過期。根據預設租約期限
####伺服器的 /var/lib/dhcpd/dhcpd.lease 資訊檔案。
starts 起始時間點:
ends 結束(過期時間點):
相隔時間= default-lease-time 的設定。
(從這個時間間隔中可以推測出下一次該IP地址的續約時間。)
#### 客戶端的 /var/lib/dhclient/dhcpd-eth0.lease 資訊檔案。
得到的資源資訊:
renew:下一次去找dhcpd伺服器續約的時間點。 = 租約時間的50%
rebind:renew失敗後,重試的時間點。 =租約時間的 85% 左右
expire:過期的時間點
每次續約成功,就會更新一次 /var/lib/dhclient/dhcpd-eth0.lease 租約檔案。
最大租約期限
max-lease-time 43200; 最大租約時間(秒)12小時
說明:最大和預設租約時間,機制一樣,在客戶端沒有特殊的租約時間請求的時候,都會
統一的指 派預設租約時間(多數情況)。 如果客戶端請求了自定義的租約時間,伺服器將會啟用最大租約時
間作為限制,客戶端自己請求的租約時間不能大於該值。max time
自定義 日誌輸出路徑和級別
update /etc/rsyslog.conf file
# Save boot messages also to boot.log
local7.* /var/log/boot.log ##預設與 boot.log 放在一起,
local2.* /var/log/dhcpd.log ## 自定義獨立存放。
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */