詳解DHCP服務安裝與管理

DHCP服務安裝與管理

1、DHCP是什麼

名稱:DHCP – Dynamic Host Configuration Protocol 動態主機配置協議 
功能:DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,使用UDP協議工做, 主要有兩個用途: 
一、 給內部網絡或網絡服務供應商自動分配IP地址,主機名,DNS服務器,域名 
二、 配和其它服務,實現集成化管理功能。如:無人執守安裝服務器數據庫

DHCP是一個C/S架構的協議,DHCP服務器端使用UDP的67號端口; DHCP 客戶端使用UDP的68號端口。vim

爲何使用DHCP

①DHCP服務器用於爲客戶機動態分配IP地址,避免了TCP/IP網絡中地址的衝突,便於對網絡的IP地址進行管理; 
②在使用TCP/IP協議通訊的網絡中,每臺計算機都必須至少有一個IP地址,這樣才能與其餘計算機通訊。對於一個較大規模的網絡來講,逐個地爲每臺計算機分配和設置IP地址,將是一件很麻煩的事情,也不便於管理和維護; 
③對於像筆記本這樣的移動用戶,常常從一個子網移動到另外一個子網,須要不斷地手動更換IP地址,很不方便; 
④DHCP服務器經過動態的IP地址分配還能解決IP地址資源不足的狀況,所以DHCP產生了。windows

2、DHCP工做原理(C/S)

咱們看下面的圖,客戶端從DHCP服務器獲取IP地址的過程咱們稱爲DHCP租約過程,分爲四個步驟:服務器

wKiom1gYdKnTAQe-AABFNdtE_kg586.png

一、客戶發出的IP租用請求報文網絡

DHCP客戶機初始化TCP/IP,經過UDP端口67向網絡中發送一個DHCP DISCOVER廣播包,請求租用IP地址。該 廣播包中的源IP地址爲0.0.0.0,目標IP地址爲255.255.255.255;包中還包含客戶機的MAC地址和計算機名。架構

二、DHCP Server迴應的IP租用提供報文dom

任何接收到DHCP DISCOVER廣播包而且可以提供IP地址的DHCP服務器,都會經過UDP端口68給客戶機迴應一個DHCP OFFER廣播包,提供一個IP地址。該廣播包的源IP地址爲DHCP服務器IP,目標IP地址爲255.255.255.255;包中還包含提供的IP地址、子網掩碼及租期等信息。ide

三、客戶選擇IP租用報文測試

客戶機從不止一臺DHCP服務器接收到提供以後,會選擇第一個收到的DHCP OFFER包,並向網絡中廣播一個 DHCP REQUEST消息包,代表本身已經接受了一個DHCP服務器提供的IP地址。該廣播包中包含所接受的IP地址和服務器的IP地址。 全部其餘的DHCP服務器撤消它們的提供以便將IP地址提供給下一次IP租用請求。gradle

四、DHCP服務器發出IP租用確認報文

被客戶機選擇的DHCP服務器在收到DHCP REQUEST廣播後,會廣播返回給客戶機一個DHCP ACK消息包,代表已經接受客戶機的選擇,並將這一IP地址的合法租用以及其餘的配置信息都放入該廣播包發給客戶機。

五、客戶配置成功後發出的公告報文

客戶機在收到DHCP ACK包,會使用該廣播包中的信息來配置本身的TCP/IP,則租用過程完成,客戶機能夠在網絡中通訊。至此一個客戶獲取IP的DHCP服務過程基本結束,不過客戶獲取的IP通常是用租期,到期前須要更新租期,這個過程是經過租用更新數據包來完成的。

注意:客戶端執行DHCP DISCOVER 後,若是沒有DHCP 服務器響應客戶端的請求,客戶端會隨機使用169.254.0.0/16 網段中的一個IP 地址,配置本機地址。

169.254.0.0/16是windows的自動專有IP尋址範圍,也就是在沒法經過DHCP獲取IP地址時,由系統自動分配的IP地址段。

客戶IP租用更新報文,因爲IP是「租」來的,因此是有租期的:

(1)在當前租期已過去50%時,DHCP客戶機直接向爲其提供IP地址的DHCP服務器發送DHCP REQUEST消息包。若是客戶機接收到該服務器迴應的DHCP ACK消息包,客戶機就根據包中所提供的新的租期以及其它已經更新的TCP/IP參數,更新本身的配置,IP租用更新完成。若是沒收到該服務器的回覆,則客戶機繼續使用現有的IP地址,由於當前租期還有50%。 
(2)若是在租期過去50%時未能成功更新,則客戶機將在當前租期過去87.5%時再次向爲其提供IP地址的DHCP聯繫。若是聯繫不成功,則從新開始IP租用過程。 
(3)若是DHCP客戶機從新啓動時,它將嘗試更新上次關機時擁有的IP租用。若是更新未能成功,客戶機將嘗試聯繫現有IP租用中列出的缺省網關。若是聯繫成功且租用還沒有到期,客戶機則認爲本身仍然位於與它得到現有IP租用時相同的子網上(沒有被移走)繼續使用現有IP地址。 若是未能與缺省網關聯繫成功,客戶機則認爲本身已經被移到不一樣的子網上,將會開始新一輪的IP租用過程。


總結 
50%:續約。(續不上繼續用) 
87.5%:再次續約。(續不上找別人) 
DHCP工做站除了在開機的時候發出 DHCPrequest 請求以外,在租約期限一半的時候也會發出 DHCPrequest ,若是此時得不到 DHCP服務器的確認的話,工做站還能夠繼續使用該IP;當租約期過了87.5%時,若是客戶機仍然沒法與當初的DHCP服務器聯繫上,它將與其它 DHCP服務器通訊。若是網絡上再沒有任何DHCP協議服務器在運行時,該客戶機必須中止使用該IP地址,並從發送一個Dhcpdiscover數據包開 始,再一次重複整個過程。要是您想退租,能夠隨時送出 DHCPRELEASE 命令解約,就算您的租約在前一秒鐘纔得到的。

什麼是中繼(建議不要用)

設想一個場景:一個公司有A和B兩個網絡,可是不想給每一個網絡都分配一個DHCP服務器,只想用一個DHCP服務器完成地址的分配,該怎麼辦呢?此時就能夠用到中繼了,將DHCP服務器放到A網絡中,配置一個地址池,用於給A網絡分配地址,而後配置一箇中繼地址池,用於給B網絡分配地址。以後在路由器(直連A-B)上,配置一箇中繼,當B網絡的客戶機發起DHCP的請求時,路由器就將請求發給A網絡的DHCP服務,DHCP服務器將請求響應給路由器,路由器再響應給B網絡。(注意:此過程路由器和DHCP服務器間是單播通訊,路由器和B網絡的主機爲廣播通訊)。

3、DHCP配置

一、安裝 dhcp

[root@localhost ~]# yum -y install dhcp

二、dhcp主文件列表

[root@localhost ~]# rpm -ql dhcp
/etc/dhcp/dhcpd.conf                # dhcp 配置文件
/etc/rc.d/init.d/dhcpd              # dhcp 服務啓動腳本
/etc/rc.d/init.d/dhcrelay           # dhcp中繼 服務啓動腳本
/etc/sysconfig/dhcpd                # 服務腳本配置文件
/usr/sbin/dhcpd                     # dhcp 程序,可執行文件
/usr/sbin/dhcrelay                  # dhcp中繼程序,可執行文件

三、配置文件詳解

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#

提示說配置文件在 /usr/share/doc/dhcp*/dhcpd.conf.sample, 那麼咱們把它複製到/etc/dhcp目錄,並更名爲 dhcpd.conf :

[root@localhost ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 
cp: overwrite `/etc/dhcp/dhcpd.conf'? y

配置文件主要分爲四個部分:

option               #定義全局參數

subnet Netaddress netmask NETMask{  #定義子網
}

host NAME {          #主機配置,分配固定IP
}

log-facility         #定義dhcp 日誌信息

一、每一行必須以分號 ; 結尾。只能經過/var/log/messages文件查看是否有錯誤 
二、全局參數對全局生效,當全局配置與局部配置衝突時,局部參數將覆蓋全局參數。 
三、局部配置必須包含在 花括號 中,其餘都是全局配置

經常使用指令介紹:

指令                    說明
domain-name             指定域名
domain-name-servers     DNS服務器地址
routers                 默認網關
default-lease-time      默認租約期限
max-lease-time          最大租約期限
log-facility            日誌
subnet                  定義子網
range                   定義地址池
host                    保留主機地址
filename                指定PXE文件
server-name             服務器名稱
fixed-address           固定IP地址

配置文件:

全局配置

#option domain-name "mageedu.com";          #定義域名爲test.org,這個沒用,通常都註釋掉
option domain-name-servers 192.168.211.128;   #定義DNS服務器爲172.16.0.1,多個以逗號分隔
default-lease-time 600;    #定義默認租約期限,這裏爲600
max-lease-time 7200;       #定義最大租約期限,這裏爲7200

### 日誌信息
log-facility local7;       #日誌爲faility local7;能夠看/etc/rsyslog.conf,這裏不解釋

### 子網選項
subnet 192.168.211.0 netmask 255.255.255.0 {    # 子網聲明
#定義了一個子網192.168.211.0/24,注意,這個地址池必定要和你服務器的IP在同一網段,即便是中繼,也要至少有一個本地子網段!
 192.168.211.240 192.168.211.245;    #地址池從192.168.211.240192.168.211.245;以空格分割
 option domain-name-servers 114.114.114.114,192.168.211.128;  #定義DNS服務器
 option routers 192.168.211.128;         #定義網關爲192.168.211.128
 option broadcast-address 192.168.211.255;   #定義廣播地址爲192.168.211.255
 default-lease-time 86400;     #定義默認IP 租約時間,以秒爲單位的租約時間。
 max-lease-time 86400;         #定義客戶端IP租約時間的最大值,當客戶端超過租約時間,卻還沒有更新IP 時,最長可使用該IP 的時間;
}

### 主機選項,保留地址(有時咱們須要爲某些主機配置固定IP地址,host選項知足這一需求)
host server1 {                        #定義一個名爲server1的主機
   option routers 192.168.211.128;     #定義網關
   option domain-name-servers 192.168.211.128;  #定義域名服務器
   option broadcast-address 192.168.211.255;   #定義廣播地址
   filename "vmunix.passacaglia";     #指向一個文件,用於PXE
   server-name "cobbler.mageedu.com";   #通知客戶端dhcp服務器名字
   hardware ethernet 0:0:c0:5d:bd:95;   #聲明瞭server1這個主機的MAC地址
   fixed-address 192.168.211.133;   #定義這個主機的固定ip地址爲192.168.211.133
}

## 綁定pc1主機ip地址配置
host pc1 {
    hardware ethernet 00:a0:cc:cf:9C:14;   #客戶端MAC地址
    fixed-address 192.168.1.20;            #客戶端要獲取的地址
}

沒有寫在subnet或host中的選項是全局選項,也就是默認值,當host或者subnet中沒有定義的時候生效。當內部定義後,則匹配最精確的,也就是自身定義的。

若是DHCP服務器是多網卡,還須要配置dhcpd監聽網卡:

[root@localhost ~]# vim /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth0   #綁定網卡名稱

四、啓動 dhcp 服務

[root@localhost ~]# service dhcpd start

五、查看監聽端口

[root@localhost ~]# ss -tulpn | grep dhcp
udp    UNCONN     0      0                      *:67                    *:*      users:(("dhcpd",27249,7)

六、查看租約信息

做爲服務器端的租約文件:/var/lib/dhcpd/dhcpd.leases 
做爲客戶端的租約文件: /var/lib/dhclient/dhclient-eth0.leases

租期數據庫

在 DHCP 服務器上,/var/lib/dhcp/dhcpd.leases 文件中存放着 DHCP 的客戶租期數據庫。該文件不該該被手工修改。每一個新近分配的 IP 地址的 DHCP 租期信息都會自動儲存在租期數據庫中。該信息包括租期的長度;IP 地址被分配的對象;租期的開始和終止日期;以及用來檢索租期的網卡的 MAC 地址。 
租期數據庫中所用的時間是格林威治標準時間(GMT),不是本地時間。 
租期數據庫不時被重建,所以它不算太大。首先,全部已知的租期會被儲存到一個臨時的租期數據庫中,dhcpd.leases 文件被重命名爲 dhcpd.leases~,而後,臨時租期數據庫被寫入 dhcpd.leases 文件。 
在租期數據庫被重命名爲備份文件,新文件被寫入以前,DHCP 守護進程有可能被殺死,系統也有可能會崩潰。若是發生了這種狀況,啓動服務所需的dhcpd.leases 文件就不會存在。這時,請不要建立新租期文件。由於這樣作會丟失全部原有的舊租期文件,從而致使更多問題。正確的辦法是把dhcpd.leases~ 備份文件重命名爲 dhcpd.leases,而後再啓動守護進程。

配置dhcp中繼

1)在dhcp服務器上的主配置文件/etc/dhcp/dhcpd.conf中添加須要中繼的subnet並重啓dhcp服務 
2)在中繼服務器上開啓包轉發功能

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p    #更新配置文件

3)在中繼服務器上的配置文件/etc/sysconfig/dhcrelay中添加參數

[root@localhost ~]# vim /etc/sysconfig/dhcrelay
INTERFACES="eth0 eth1"            #聲明你要使用哪幾塊網卡中繼
DHCPSERVERS="192.168.211.128"        #指定dhcp服務器

4)在中繼服務器上啓動中繼服務

[root@localhost ~]# service dhcprelay start

配置DHCP客戶端

一般網管員使用選擇手工配置 DHCP 客戶,須要修改/etc/sysconfig/network 文件來啓用聯網;並修改/etc/sysconfig/network-scripts 目錄中每一個網絡設備的配置文件。在該目錄中,每一個設備都有一個叫作ifcfg-eth?的配置文件,eth?是網絡設備的名稱。如eth0等。若是你想在引導時啓動聯網,NETWORKING變量必須設爲 yes。除了此處以外/etc/sysconfig/network 文件應該包含如下行:

NETWORKING=yes
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

測試:

在 dhcp 服務器上, tail -f /var/log/messages , 能夠看到dhcp分配的詳細信息。 cat /var/lib/dhcpd/dhcpd.leases 也能夠看到分配的租期數據庫。

相關文章
相關標籤/搜索