一、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步:(請求DHCP服務器)
客戶端在局域網廣播發送 DHCP discovery包,尋找DHCP服務器,即向255.255.255.255發送特定的廣播信息,每一臺安裝了TCP/IP協議的主機都會有這個廣播地址,但只有DHCP服務器纔會做出迴應。
第2步:(提供IP地址)
服務器收到DHCP discovery包後,向客戶機發送一個包含分配的IP地址和其它設置的 DHCP offer 包,目的告訴客戶機,我能爲你提供IP地址。
第3步:(選擇IP地址)
客戶機收到DHCP offer提供信息包後,(如果客戶機在一段時間內沒有接收到DHCP服務器發出dhcp offer包,則會重新發送dhcp discover。如果廣播區域內不止一臺dhcp服務器,則由客戶機決定使用哪個)客戶機選擇第一個接收到的提供信息包,以廣播的方式再發送一個DHCP request請求信息包,客戶機向服務器請求IP地址。
第4步:(IP地址提供確認)
服務端收到客戶機迴應的DHCP request 請求信息包之後,便向客戶機發送一個DHCP ack 確認信息包,告訴客戶機可以使用它提供的IP地址。
第5步:(重新登錄)
以後DHCP客戶機每次使用此IP地址時,就不需要再發送DHCP discovery包了,而是直接發送一個包含前一次所分配的IP地址的DHCP request請求信息。當DHCP服務器收到這一信息以後,它會繼續讓客戶機使用此IP地址,並回答一個DHCP ack確認信息。如果此IP地址已無法再分配給原來的客戶機使用時,則DHCP服務器給客戶機回答一個DHCP nack否認信息。當原來的客戶機收到此DHCP nack否認信息後,它就必須重新發送DHCP discovery尋找信息來請求新的IP地址。
第6步:(更新租約)
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 |