細說DHCP網絡協議和如何搭建DHCP服務器

 DHCP(Dynamic Host Configuration Protocol)中文意思:動態主機配置協議。是一個局域網裏網絡協議(應用層),是基於UDP(傳輸層)協議來實現客戶機的IP(網絡層)地址獲取的。

用途:

   1. 用於局域網或者網絡服務器供應商自動分配IP地址給用戶

   2. 用於局域網管理員對所有電腦的管控。

  都知道我們獲取IP地址有兩種方式,一、靜態指定,二、動態獲取。我們到一個新的有網絡的地方,連上網絡後就會自動獲取一個當前網絡斷中的一個唯一IP,這個IP在這段時間屬於你的專屬,除非網絡管理員設定,否則在一定時間內這個IP地址都是你的。這個IP就是通過DHCP獲得的。但是DHCP協議並不是這麼簡單的。


原理和工作方式(後面有具體演示供理解)
原理:

  DHCP是一種使網絡管理員能夠集中管理和自動分配IP網絡地址的通信協議。在IP網絡中,每個連接Internet的設備都需要分配唯一的IP地址。DHCP使網絡管理員能從中心結點監控和分配IP地址。當某臺計算機移到網絡中的其它位置時,能自動收到新的IP地址。

  DHCP使用了租約的概念,或稱爲計算機IP地址的有效期。租用時間是不定的,主要取決於用戶在某地連接Internet需要多久,不能讓一個用戶一直在某些網絡資源卻不用。通過較短的租期,DHCP能夠在一個計算機比可用IP地址多的環境中動態地重新配置網絡。DHCP支持爲計算機分配靜態地址,如某些特殊情況某些服務器需要靜態IP,我們可以通過DHCP遠程給他指定一個固定IP而不需要它自己來指定。


QRIoqMa.png

工作方式:共分爲四個階段(客戶機和DHCP服務器在一個網段,且只有一臺DHCP服務器)(四個階段均是通過廣播來實現的)

  第一階段:DHCP發現(DISCOVER)

   客服機通過68端口發送broadcast的UDP數據包,尋找DCHP服務器。此數據包源IP地址爲0.0.0.0,目標IP地址爲255.255.255.255;包中還包含客戶機的MAC地址和計算機名。普通主機發現這個包會丟棄的這個數據包,只有DHCP服務器收到這個數據包纔會進行接下的工作。

  第二階段:DHCP提供(OFFER)

   DCHP服務器通過67端口收到broadcast後對針對獲取到這個客服機的MAC地址做如下操作:

      1. 查看日誌文件(/var/lib/dhclient/dhclient※-eth ※.leases),根據MAC地址確定此主機是否曾經獲取過IP,曾經獲取的IP是否有人使用。

      2. 查看配置文件(/etc/dhcpd/dhcpd.conf)中,是否給這個MAC地址指定了靜態的IP地址。      

      3. 若前兩項都沒有,就根據配置文件(/etc/dhcpd/dhcpd.conf)文件的地址池等相關信息,隨機選用當前空閒IP給客戶機。

  第三階段:DHCP請求(REQUEST)

   客戶機收到DHCP服務器發來的配置信息,選擇是否認可和使用當前網絡參數。每個主機只能接收一份租約。

  第四階段:DHCP確認(Acknowledge,ACK)

   服務器收到客戶機的確認信息,會回送確認的響應數據包信息以確認客戶端的使用

  如果DHCP服務器和客戶機不在一個網段,卻還是想通過DHCP服務器獲取IP地址,這是我們就需要藉助能允許DHCP中繼轉發端的,並能監聽68端口路由器。具體過程簡單描述一下。

  (1)   客服機發送DISCOVER的廣播--->(2)  路由器監聽到轉發給DCHP服務器--->(3) DHCP服務器接收到客戶機的廣播後反饋OFFER給路由器--->(4) 路由器接收到OFFER轉發給客戶機--->(5) 客戶機選擇和確認參數,返回REQUEST--->(6) 路由器監聽並轉發REQUEST給DHCP服務器--->(7) DCHP服務器接收並回饋 ACK --->(8)路由器轉發DHCP確認給客戶機

  注意:在DCHP服務器當中引用了租約的概念,最大效率利用有效的IP地址。同時因此需要續約,續約的時間點是整個租約期的1/2時,當這次續約不成功時,會在剩餘的租期的1/2(也就是整個租約期的3/4)再次發起續約請求。當這次續約還不成功時,會在剩餘租期的1/2(也就是整個租約期的7/8)再次發送續約請求。若這次續約還是不能成功。則不再發送續約請求,噹噹前租約期到期後直接發送DISCOVER請求,重新獲取一個IP地址的租約。

實例配置、配置文件解析(關閉iptables和seLinux)

yum install -y dhcpd

  需求:需要一天DHCP服務器,DHCP服務器的IP地址爲192.168.1.254,NETMASK:255.255.255.0,route 192.168.1.1,可用IP地址池爲192.168.1.2-192.168.1.253

[root@localhost ~]# yum install -y dhcp  ###通過yum安裝dhcp服
[root@localhost ~]# rpm -qa dhcp  ###查詢已安裝的dhcp
dhcp-4.1.1-51.P1.el6.centos.x86_64 ###當前dhcp的版本號
[root@localhost etc]# cd /etc/dhcp/
[root@localhost dhcp]# ls
dhclient.d  dhclient-eth0.conf  dhcpd6.conf  dhcpd.conf
[root@localhost dhcp]# cat dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample ###這個配置文件是空的,讓我們去這個路徑下找。
#   see 'man 5 dhcpd.conf'
[root@localhost dhcp]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf

這個配置文件詳細的告訴了我們,怎麼定義dhcp服務器參數。抽取部分描述一下。

  dhcp.conf 文件分爲四個區域(注意每個區域內定義的參數後面都需要添加";",否則啓動服務的時候就會失敗,然後可以去/var/log/messages看錯誤了。

一、 定義dhcpd自身的工作屬性,log-facility:日誌facility。這塊不需要修改,默認即可

二、 全局地址分配屬性,作用於全局。 聲明 { 參數 } 常用參數:

option domain-name "example.org";##修改/etc/hosts文件,默認域名,例如你這裏寫search google.com ,當你查找主機名,DNS系統會主動幫你在所要查找的主機名後加上這個域名後綴

option domain-name-servers ns1.example.org, ns2.example.org; ##修改/etc/resolv.conf。即nameserver 後面接DNS IP,特別注意設置參數最末尾爲servers,末尾有s;

default-lease-time 600; ##默認租約時間,單位爲秒

max-lease-time 7200; ##最大租約時間,單位爲秒

ddns-update-style##DHCP可以通過ddns來更新主機名與IP對應關係。這次試驗設置爲none即可

    作用:定義所支持的DNS動態更新類型。

      none:表示不支持動態更新

      interim:表示DNS互動更新模式

      ad-hoc:表示特殊DNS更新模式

      因爲 DHCP 客戶端所取得的 IP 通常是一直變動的,所以某部主機的主機名與 IP 的對應就很難處理。此時 DHCP 可以透過 ddns 來更新主機名與 IP 的對應。

ignore client-updates ##客服端也可以通過dhcpd服務器來更DNS相關信息。暫時也將其設置爲ignore

option routers ##設定路由器IP地址,routers記住要加s

option broadcasst-address 廣播地址 <-- 設定廣播地址而已。如果沒有設定的話,系統應該會自動依據 class A, B, C 的原則來計算出廣播地址。

三、子網配置:(生效範圍只在這個設置的子網段中)

通常每個作用域通過一個subnet定義

subnet NETWORK_ADDR mask NETMASK {

參數

}

常用參數

rangge IP地址範圍 <--e.g 192.168.1.1 192.168.1.254;

option routers IP地址 <-- 作用:爲客戶端指定默認網關

option subnet-mask 子網掩碼 <--作用:設置客戶端的子網掩碼

四、主機配置:

通常爲某特定MAC地址股東分配一個地址,只要這個MAC地址來申請,就給這個MAC地址這個IP地址

host "HOST ID" { <-- "HOST ID"是個標識,可以自定義。

參數

}

常用參數:

hardware ethernet MAC ; <--網卡類型(ethernet)和網卡MAC地址

fixed-address IP;<-- 指定的IP地址


  ok,接下來,開始實際配置了。dhcpd.conf 這個配置文件看過後,我們可以在將他的所有行註釋掉,在寫。也可以自己根據我上面提供的配置文件手動創建一個。我接下來就自己手工寫一個。

VsBUkwt.png

  注意 ";" 這個符號。。我啓動幾次出錯都是,查看日誌都是發現要麼少了"" 這個符號,或者在漢字模式下輸入的";"你看這個和前面那個是否一樣。肯定不一樣,所以切記切換到全英文下輸入,誰叫這個是外國人寫的。~~

UlmpeHn.png

  出錯就去/var/log/messages 查看關於dhcp的日誌行。終於啓動成功了。。我們最好還是把設置爲開機啓動,要是雙網卡的夥伴們再去/etc/sysconfig/dhcpd文件看看是你需要用來作爲DCHP服務器的網卡設置是否正確;
[root@localhost dhcp]# chkconfig --level 345 dhcpd  on
[root@localhost dhcp]# chkconfig --list dhcpd
dhcpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off
[root@localhost dhcp]# cat /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=
[root@localhost dhcp]# vim /etc/sysconfig/dhcp
# Command line options here
DHCPDARGS="eth0" #因爲我有兩塊網卡,我講網卡1設置爲dhcp獲取的端口。
  在看看67端口是否處於監聽狀態,和日誌文件/var/log/messages

ZQG0peD.png

VFyyDBT.png

  OK,一切正常,接下來我們調整虛擬機設置。將所有的虛擬機均設置在這個網段下。

oVoSs3L.png

  接下來我們去每個客戶機進行操作,記得/etc/sysconfig/network-scripts/ifcfg-eth0下面的BOOTPHOTO=dhcp。還有記得查看68端口是否處於監聽狀態

j89QHMy.png

wtRdJzR.png

  下面是/var/log/messages的日誌文件,大家看這裏是不是就印證了最前面講的dhcp的工作原理的四個過程。還有/var/lib/dhcpd/dhcpd.lease裏面的租約和主機名等等

FS0F2gu.png

xQMZvyl.png

在去看看/etc/resolv.conf,我們的DNS IP 地址和“你好嗎,我很好”域名在嗎?!

  記得我們還有設置靜態ip的主機,我們再去瞧瞧。

CCxa3Yv.png


總結:

梳理一下過程,簡單來說就是以下幾步:

1.安裝dhcp,並設置爲開機啓動

2.配置dhcp配置文件,確定地址池等相關參數

3.啓動dhcp,並設置作用於那個網卡和檢測日誌文件確定是否出錯。

4.將多臺試驗機放於一個相同網段,並設置客戶機參數。

5.查看客戶機IP是否設置成功,並檢測服務器的日誌文件。

注意:配置文件的修改,若是啓動dhcp失敗,查看日誌文件。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章