1. 程式人生 > >CentOS 7.3 搭建DHCP服務器

CentOS 7.3 搭建DHCP服務器

centos dhcp 動態主機配置協議

一、DHCP服務簡介

1. DHCP服務簡介

DHCP(Dynamic Host Configuration Protocol),動態主機配置協議,DHCP 協議主要是用來自動為局域網中的客戶機分配 TCP/IP 信息的網絡協議,並完成每臺客戶機的 TCP/IP 協議配置。當我們將局域網中客戶機IP地址設置為動態獲取方式時,DHCP服務器就會根據DHCP協議給客戶機自動分配IP地址,使得客戶機能夠使用這個IP地址。


DHCP的前身是BOOTP協議(Bootstrap Protocol),BOOTP被創建出來為連接到網絡中的設備自動分配地址,後來被DHCP取代了,DHCP比BOOTP更加復雜,功能更強大。所有的IP網絡參數(包括IP地址、網關和DNS服務器地址等)都由DHCP服務器集中管理,並負責處理客戶端的DHCP要求;而客戶端則會使用從服務器分配的IP網絡參數。


2. 使用DHCP的優點

  • 減少管理員的工作量;

  • 避免IP沖突;

  • 減少收入錯誤的可能;

  • 能方便地更改網絡的IP網段;

  • 移動計算機後不用重新配置網絡信息;

  • 提高IP地址的利用率。


3. DHCP的工作過程

技術分享圖片

  1. 第1步:(請求DHCP服務器)

  2. 客戶端在局域網廣播發送 DHCP discovery包,尋找DHCP服務器,即向255.255.255.255發送特定的廣播信息,每一臺安裝了TCP/IP協議的主機都會有這個廣播地址,但只有DHCP服務器才會做出回應。

  3. 第2步:(提供IP地址)

  4. 服務器收到DHCP discovery包後,向客戶機發送一個包含分配的IP地址和其它設置的 DHCP offer 包,目的告訴客戶機,我能為你提供IP地址。

  5. 第3步:(選擇IP地址)

  6. 客戶機收到DHCP offer提供信息包後,(如果客戶機在一段時間內沒有接收到DHCP服務器發出dhcp offer包,則會重新發送dhcp discover。如果廣播區域內不止一臺dhcp服務器,則由客戶機決定使用哪個)客戶機選擇第一個接收到的提供信息包,以廣播的方式再發送一個DHCP request請求信息包,客戶機向服務器請求IP地址。

  7. 第4步:(IP地址提供確認)

  8. 服務端收到客戶機回應的DHCP request 請求信息包之後,便向客戶機發送一個DHCP ack 確認信息包,告訴客戶機可以使用它提供的IP地址。

  9. 第5步:(重新登錄)

  10. 以後DHCP客戶機每次使用此IP地址時,就不需要再發送DHCP discovery包了,而是直接發送一個包含前一次所分配的IP地址的DHCP request請求信息。當DHCP服務器收到這一信息以後,它會繼續讓客戶機使用此IP地址,並回答一個DHCP ack確認信息。如果此IP地址已無法再分配給原來的客戶機使用時,則DHCP服務器給客戶機回答一個DHCP nack否認信息。當原來的客戶機收到此DHCP nack否認信息後,它就必須重新發送DHCP discovery尋找信息來請求新的IP地址。

  11. 第6步:(更新租約)

  12. DHCP服務器向客戶機出租的IP地址都有一個租借期限,期滿後DHCP服務器便會收回出租的IP地址。如果客戶機要延長其IP租約,必須更新其IP租約。客戶機啟動時和IP租約期限過一半時,客戶機都會自動向DHCP服務器發送更新其IP租約的信息。


4. DHCP客戶機自動更新IP租約

客戶機租約期限已過去50%,自動嘗試更新租約;當期限過去87.5% 時,發出廣播再次更新租約;若租約已經到期(100%),客戶機必須立即停止使用當前的IP地址。然後客戶機開始新的DHCP租約過程,嘗試租用新的IP地址。


二、系統環境

系統平臺: CentOS 7.3

DHCP Server: 192.168.8.88

更改主機名,寫/etc/hosts記錄

# vim /etc/hosts

192.168.8.88 DHCP --最後添加DHCP服務器IP地址和主機名/別名

關閉防火墻

# systemctl stop firewalld --臨時關閉防火墻

# systemctl disable firewalld --永久關閉防火墻

關閉selinux

臨時關閉:

# setenforce 0

永久關閉:

# vim /etc/selinux/config

SELINUX=disabled --將enforcing改為disabled


# reboot --重啟系統永久生效


三、CentOS下的DHCP服務

準備兩臺機器,一臺作為DHCP服務器,一臺作為客戶機,如下圖:

技術分享圖片

1. 在服務器上安裝DHCP軟件包

# yum -y install dhcp* --安裝dhcp軟件包

如果已經安裝過了,則顯示“無須任何處理”

技術分享圖片

安裝好後,配置文件目錄:/etc/dhcp/dhcpd.conf

分給客戶端IP的記錄文件:/var/lib/dhcpd/dhcpd.leases


2. 配置DHCP

把系統默認的樣例復制到/etc/dhcp/dhcpd.conf文件裏

# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

cp:是否覆蓋"/etc/dhcp/dhcpd.conf"? y --輸y覆蓋原文件

技術分享圖片

# vim /etc/dhcp/dhcpd.conf   --修改配置文件

7 option domain-name "example.org"; --DNS域名

8 option domain-name-servers ns1.example.org, ns2.example.org; --DNS的域服務器

9

10 default-lease-time 600; --默認的租約時間,秒為單位

11 max-lease-time 7200; --最大的租約時間,秒為單位

14 #ddns-update-style none; --表示要不要把IP地址的更新情況告訴DNS服務器,默認是關閉的

22 log-facility local7; --定義日誌服務,可以在日誌配置文件中查看具體日誌位置,默認是:/var/log/boog.log,但是在/var/log/messages裏面也會記錄dhcp日誌

47 subnet 192.168.8.0 netmask 255.255.255.0 { --分配的網段及子網掩碼,代表只在192.168.8.x這個C類網段裏生效,子網掩碼設為255.255.255.0

48 range 192.168.8.30 192.168.8.60; --代表給客戶機分配可用的IP範圍,起始到結束,盡量不要包含DHCP服務器的IP地址

49 option domain-name-servers 192.168.8.88; --配置要分配給客戶端的DNS地址,這裏我們設為DHCP服務器的IP地址

50 option domain-name "internal.example.org"; --DNS的域名

51 option routers 192.168.8.88; --配置分配給客戶機的路由網關,這裏我們設為DHCP服務器的IP地址

52 option broadcast-address 192.168.8.255; --給客戶機指定廣播地址,配置192.168.8.x這個網段的廣播地址

53 default-lease-time 600; --指定租約時間,秒為單位

54 max-lease-time 7200; --指定最大租約時間,秒為單位

55 }

75 host fantasia { --將MAC地址和IP綁定,host後面的名字隨意,如:fantasia

76 hardware ethernet 08:00:07:26:c0:a5; --MAC地址

77 fixed-address fantasia.fugue.com; --IP地址

78 }

85 class "foo" { --定義多個子網,class後面寫組名

86 match if substring (option vendor-class-identifier, 0, 4) = "SUNW";

87 }

88

89 shared-network 224-29 { --定義多個子網,要從大往小寫

90 subnet 10.17.224.0 netmask 255.255.255.0 {

91 option routers rtr-224.example.org;

92 }

93 subnet 10.0.29.0 netmask 255.255.255.0 {

94 option routers rtr-29.example.org;

95 }

96 pool {

97 allow members of "foo";

98 range 10.17.224.10 10.17.224.250;

99 }

100 pool {

101 deny members of "foo";

102 range 10.0.29.10 10.0.29.230;

103 }

104 }

修改紅色標註位置就可以了,修改完成之後,保存退出。


3、啟動DHCP服務

# systemctl restart dhcpd.service --重啟DHCP服務

# systemctl enable dhcpd.service --設置為開機自啟動

# netstat -anlp | grep dhcpd --查看dhcp服務端口為67

技術分享圖片


4、來到客戶機驗證

把客戶端機的網卡配置成dhcp,再重啟網絡服務

# vim /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO=dhcp --網卡指定方式改為dhcp


# systemctl restart network.service --重啟網卡

技術分享圖片


打開日誌文件查看分配的IP地址

服務器:

# tail -f /var/log/messages --在服務器上監聽日誌


客戶機:

打開兩個終端窗口:一個查看日誌,一個重啟網絡。

查看日誌

# tail -f /var/log/messages

重啟網絡

# systemctl restart NetworkManager --重啟這個服務,每次重啟網絡服務時,系統都會重新去DHCP服務器上獲取IP地址

查看IP

# ifconfig --查看IP

技術分享圖片

查看網關

# route -n | grep UG --查看網關

技術分享圖片

查看路由

# cat /etc/resolv.conf --查看路由

技術分享圖片


5、如果要把客戶機分配的IP給固定的話,可以在服務器做如下配置

# vim /etc/dhcp/dhcpd.conf --分給客戶機IP的記錄文件

在文件的最下面加上下面一段代碼即可

75 host Client { --host後面接的是客戶機主機名稱,可以自定義,建議為主機名

76 hardware ethernet 00:0c:29:82:6f:db; --代表客戶機的物理MAC地址

77 fixed-address 192.168.8.40; --代表如果有遇到物理MAC地址為上面一行的,則分配這行的IP給它

78 }


# systemctl restart dhcpd.service --重啟DHCP服務

測試,重復第4步


6、客戶機獲取IP

先清除客戶機IP地址緩存

# systemctl restart NetworkManager --重啟這個服務,每次重啟網絡服務時,系統都會重新去DHCP服務器上獲取IP地址

# ifconfig --查看IP,應該為設定的IP,即192.168.8.40

技術分享圖片

CentOS 7.3 搭建DHCP服務器