1. 程式人生 > 其它 >搭建dhcp服務

搭建dhcp服務

一、實現DHCP服務

1.主機獲取網路配置可以通過兩種方式:

1)靜態指定

2)動態獲取

  • bootp:boot protocol, MAC與IP一一靜態對應
  • dhcp:增強的bootp,支援靜態和動態

2.DHCP工作原理

DHCP: Dynamic Host Configuration Protocol,動態主機配置協議

UDP協議,C/S模式,dhcp server:67/udp,dhcpv4 client :68/udp,dhcpv6 client:546/udp

主要用途:

  • 用於內部網路和網路服務供應商自動分配IP地址給使用者
  • 用於內部網路管理員作為對所有電腦作集中管理的手段
  • 自動化安裝系統
  • 解決IPV4資源不足問題

3.DHCP實現

注意:實現DHCP服務前,先將網路已有DHCP服務,如:vmware中的DHCP關閉,訪止衝突

1)DHCP服務的實現軟體:

  • dhcp(CentOS 7 之前版本) 或 dhcp-server(CentOS 8 中的包名)
  • dnsmasq:小型服務軟體,可以提供dhcp和dns功能

2)DHCP相關檔案組成

dhcp或dhcp-server 包檔案組成

/usr/sbin/dhcpd dhcp服務主程式
/etc/dhcp/dhcpd.conf dhcp服務配置檔案
/usr/share/doc/dhcp-server/dhcpd.conf.example #dhcp服務配置範例檔案
/usr/lib/systemd/system/dhcpd.service #dhcp服務service檔案 /var/lib/dhcpd/dhcpd.leases 地址分配記錄

dhcp-client客戶端包

/usr/sbin/dhclient #客戶端程式
/var/lib/dhclient #自動獲取的IP資訊

windows 工具

ipconfig /release #釋放DHCP獲取的IP,重新申請IP
ipconfig/renew #重新整理租約,續約

3)DHCP伺服器配置檔案

幫助參考:man 5 dhcpd.conf

注意:

  • DHCP伺服器本身採用靜態IP
  • 必須配置和DHCP網絡卡的靜態IP所在網段的subnet 段,否則DHCP服務無法啟動

/etc/dhcp/dhcpd.conf 格式

全域性配置
subnet {
 ...
 }
host {
}

檢查語法命令:service dhcpd configtest (CentOS 6 之前版本支援)

4)DHCP配置檔案其它配置選項:

  • next-server:提供引導檔案的伺服器IP地址
  • filename: 指明引導檔名稱

範例:在linux搭建DHCP服務(centos8)

[root@centos8 ~]# yum -y install dhcp-server

 

 檢視裡面包含的檔案

[root@centos8 ~]# rpm -ql dhcp-server

 

 

 

 將服務啟動

[root@centos8 ~]# systemctl enable --now dhcpd
[root@centos8 ~]# systemctl status dhcpd

 

 發現出事了,竟然失敗了,我們檢視日誌分析原因

[root@centos8 ~]# cat /var/log/messages

 

 還是配置檔案出了問題,我們檢視其配置檔案

[root@centos8 ~]# vim /etc/dhcp/dhcpd.conf

 

 果然,裡面什麼都沒有,只有幾行註釋,所以我們要自己配置,我們可以參考現成的檔案在註釋的第三行,將其拷過來並替代了

[root@centos8 ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf 

當然,我們再次重啟服務

 

 發現依舊起不來,所以我們還要對其進行修改,根據上面日誌分析得知是確實了子網定義,將其修改即可

[root@centos8 ~]# vim /etc/dhcp/dhcpd.conf 

 

 再次嘗試啟動,發現起來了

 

 檢視其監聽埠

[root@centos8 ~]# ss -ntul

 

 但是我們還需要再次修改配置檔案,分配地址

[root@centos8 dhcp]# vim /etc/dhcp/dhcpd.conf 

 

 重啟服務:

[root@centos8 ~]# systemctl restart dhcpd
[root@centos8 ~]# systemctl status dhcpd

 

 我們可以開始獲取地址:

 

重啟網絡卡:

nmcli con reload
nmcli con
nmcli con up "System eth0"

 

 

 

 拿到地址:

 

 當然作為dhcp伺服器來講還需要知道誰從本服務端獲取地址

在/var/lib/dhcpd/目錄下有個dhcpd.leases的檔案就可以檢視

[root@centos8 ~]# cat /var/lib/dhcpd/dhcpd.leases

 

 至此dhcp服務搞定!

擴充套件:當然我們在一個機器上既可以設定一個靜態ip,又就可以加一個dhcp的ip,只需開啟一個叫dhclient的程式

[root@centos7 ~]# man dhclient

 

 -d 前臺方式執行

[root@centos7 ~]# dhclient -d

 

 已經獲取到了193.168.93.162的地址

 

 所以linux裡是可以一個網絡卡既有靜態地址同時又有自動獲取地址,但是一般不這麼幹。

範例:固定dhcp獲取的地址

修改配置檔案/etc/dhcp/dhcpd.conf,追加,將目標主機mac地址寫上,ip按需給,也可以不在範圍內

[root@centos8 ~]# vim /etc/dhcp/dhcpd.conf 

 

 重啟dhcpd服務

[root@centos8 ~]# systemctl restart dhcpd

在centos7上重新執行dhclient程式,重新申請

[root@centos7 ~]# dhclient -d
[root@centos7 ~]# ip a

 

 完成。

  

 

記錄於2022-3-24-20:49 weilan