二、DHCP服務
1、DHCP服務概述
名稱:DHCP(Dynamic Host Configuration Protocol)動態主機配置協議,其協議是由bootp協議發展而來的,是BOOTP的增強版本。
功能:DHCP是一個局域網的網絡協議,使用UDP協議工作,其主要有以下兩個作用:
(1)給內部網絡或網絡服務供應商自動分配IP地址,主機名,DNS服務器,域名
(2)配合其他服務,實現集成化管理功能。如:無人值守安裝服務器
2、BOOTP協議
(1)bootp協議:引導程序協議,它可以讓無盤工作站從中心服務器上獲得IP地址,進而爲局域網中的無盤工作站分配動態IP地址,並不需要每個用戶去設置靜態IP地址。
(2)Bootp與dhcp對比
bootp在設定之前需要事先獲得來自客戶端的硬件地址,並且MAC地址和IP的對應是靜態的。因此,bootp缺乏“動態性”,若在有限的IP環境中,bootp的一對一會對資源造成浪費。
Dhcp是bootp的增強版,它主要由服務端和客戶端組成。所有的IP網絡設定數據由dhcp服務器集中管理,並且負責處理客戶端的dhcp請求;而客戶端則會使用從服務器分配下來的IP環境數據。相比較於bootp,dhcp使用了“租約”概念,有效且動態的分配了客戶端的TCP/IP設定,避免了資源的浪費。
服務端口的查看:# vim /etc/services
其中,bootps代表服務端端口,bootpc代表客戶端端口
3、DHCP服務運行原理
DHCP客戶端向服務端請求的過程
(1)DHCP客戶機尋找DHCP服務器階段(DHCP DISCOVER)
目標端口 源IP 目標IP
---DHCP DISCOVER-----> UDP 67 0.0.0.0 255.255.255.255
工作方式:DHCP客戶機以廣播的方式發送DHCPdiscover信息來尋找DHCP服務器,即向地址255.255.255.255發送特定的廣播信息。網絡上每一臺安裝了TCP/IP協議的主機都會接收到這種廣播信息,但是隻有DHCP服務器纔會做出反應。
(2)DHCP服務器提供IP地址的階段(DHCP OFFER)
目標端口 源IP 目標IP
<-----DHCP OFFER--------- UDP 68 服務器IP 255.255.255.255
工作方式:在網絡中接收到DHCPdiscover信息的DHCP服務器都會做出響應,它會從尚未出租的IP地址中挑選一個分配給DHCP客戶機,並向DHCP客戶機發送一個包含了出租的IP地址和其他設置的DHCPoffer信息。
(3)DHCP客戶機選擇某臺DHCP服務器提供IP地址的階段(DHCP REQUST)
目標端口 源IP 目標IP
-------DHCP REQUST------> UDP 67 0.0.0.0 255.255.255.255
工作方式:如果有多臺DHCP客戶機發來DHCPoffer的信息,則DHCP客戶機只接收第一個收到的DHCPoffer信息,然後它就以廣播的方式回答一個DHCPrequst請求信息,該信息中包含了向它所選定的DHCP服務器請求IP地址的內容。之所以要以廣播的方式回答,是爲了通知所有的DHCP服務器,它將選擇某臺DHCP服務器所提供的IP地址。
(4)DHCP服務器確認所提供的IP地址的階段(DHCP ACK)
目標端口 源IP 目標IP
<------DHCP ACK-------- UDP 68 服務器的IP 255.255.255.255
工作方式:當DHCP服務器收到DHCP客戶機回答的DHCPrequest請求信息之後,它便向DHCP客戶機發送一個它所提供的IP地址和其他設置的DHCPack確認信息,告訴DHCP客戶機可以使用它所提供的IP地址,然後DHCP客戶機便將其TCP/IP協議與網卡綁定。另外,除DHCP客戶機選中的服務器外,其他的DHCP服務器將收回曾提供的IP地址。
注:當客戶端執行DHCP discover後,如果沒有DHCP服務器響應客戶端,客戶端會隨機使用169.254.0.0/16網段中的一個IP地址配置本機地址。其中,169.254.0.0/16是windows的自動專有IP尋址範圍,也就是在無法通過DHCP獲取IP地址時,由系統自動分配IP地址段。可以使用#route -n 命令查看
4、DHCP服務安裝及修改配置文件
(1)安裝服務
[root@server1 Desktop]# yum install -y dhcp
#查看服務配置文件目錄
[root@server1 Desktop]# rpm -pql /mnt/Packages/dhcp-4.1.1-38.P1.el6.x86_64.rpm | more
當DHCP主程序包安裝好後會自動生成主配置文件的範本/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
而在/etc/dhcp目錄下會生成一個空白的dhcp.conf主配置文件
/etc/dhcp/dhcpd.conf
我們需要將範本的文件內容複製到/etc/dhcp/dhcpd.conf中,替換掉原本的空文件
[root@server1 Desktop]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
(2)配置文件
6 # option definitions common to all supported networks...#定義全局配置
7 option domain-name "example.org";#爲客戶端指定所屬的域
8 option domain-name-servers ns1.example.org, ns2.example.org;#爲客戶端指定DNS服務器地址
10 default-lease-time 600;#定義默認的IP租約時間,以秒爲單位
DHCP工作站除了在開機的時候發出DHCPrequest請求外,在租約期限一半的時候也會發出DHCPrequest,如果此時得不到DHCP服務器確認的話,工作站還可以繼續使用該IP;當租約期過了87.5%時,如果客戶機仍然無法與當初的DHCP服務器聯繫上,它將與其他DHCP服務器通信。如果網絡上再沒有任何DHCP協議服務器在運行時,該客戶機必須停止使用該IP地址,並從發送一個DHCPdiscover數據包開始,再一次重複整個過程。
11 max-lease-time 7200;#定義客戶端IP租約時間的最大值,當客戶端超過租約時間,卻尚未更新IP時,最長可以使用該IP的時間。
22 log-facility local7;#定義日誌類型爲local7
聲明:
一般用來指定IP的作用域、爲客戶端分配的IP地址池等等。
格式如下:
Subnet 網絡號 netmask 子網掩碼
{
選項或參數
}
例:
注:網絡號必須與DHCP服務器的網絡號相同
#48 rang 起始IP 地址 結束IP 地址
作用:指定動態IP地址範圍
#51 opention routers IP地址
作用:爲客戶端指定默認網關
#52 option domain-name-servers IP地址
作用:爲客戶端指定DNS服務器地址
(3)租約數據庫文件
租約數據庫文件用於保存一系列的租約聲明,其中包含客戶端的主機名、MAC地址、分配到的IP地址,以及IP地址的有效期等相關信息。這個數據庫文件是可編輯的ASCII格式文本文件。每當有租約變化的時候,都會在文件結尾添加新的租約記錄。
DHCP剛安裝好後的租約數據庫文件/etc/lib/dhcpd/dhcpd.leases是個空文件,當DHCP服務正常運行後就可以使用cat命令查看租約數據庫文件內容了。
5、實例操作
實例一:給客戶端分配IP,其中IP地址段爲192.168.0.1——192.168.0.254,網段地址爲192.168.0.100——192.168.0.200,子網掩碼爲255.255.255.0,網關爲192.168.0.1,其餘剩下的IP地址爲保留地址。
實驗環境:
Server1.example.com192.168.0.10虛擬網卡:vmnet4
Server2.example.com192.168.0.20虛擬網卡:vmnet4
(1)修改server1主機的DHCP配置文件
[root@server1 Desktop]# vim /etc/dhcp/dhcpd.conf
屏蔽掉文件中已存在的所有subnet,僅保留如下:
[root@server1 Desktop]# /etc/init.d/dhcpd restart
(2)此時在server2上驗證是否獲得IP
查看客戶端相關配置
(3)查看服務端租約數據庫文件
實例二:IP地址綁定
在DHCP中的IP地址綁定用於給客戶端分配固定IP地址。如服務器需要使用固定IP地址就可以使用IP地址綁定,通過MAC地址與IP地址的對應關係爲指定的物理地址計算機分配固定的IP地址。整個配置過程需要用到host聲明、hardware和fixed-address參數。
(1)host主機名{....}
作用:用於定義保留地址
(2)hardware類型硬件地址
作用:定義網絡接口類型和硬件地址。常用類型爲ethernet,地址爲MAC地址。
(3)fixed-address IP地址
作用:定義DHCP客戶端指定的IP地址
#查看server2MAC地址:
#修改配置文件如下:
[root@server1 Desktop]# vim /etc/dhcp/dhcpd.conf
[root@server1 Desktop]# /etc/init.d/dhcpd restart
#重啓客戶端網絡並驗證
[root@server2 Desktop]# /etc/init.d/network restart