詳解如何搭建DHCP服務器

   呵呵今天我來複習DHCP的搭建了,DHCP的搭建比我想象的要簡單,不過估計深究的話也會有很多知識點的,就好像DNS一樣,深究的話會扯出一串的知識點。好了言歸正傳我現在就開始撰寫複習筆記

一.   什麼是DHCP
   Dhcp就是動態主機配置協議,可以自動的去分配IP地址、子網掩碼、網關以及DNS等tcp/ip信息。當局域網中電腦十分的多的時候,咱總不能一臺一臺的去主機旁設IP等信息吧,那不累死了。所以只需要在局域網中設置一臺DHCP服務器,通過此服務器就可以動態的給局域網中的每臺電腦自動設置IP等信息。
二.   DHCP的工作原理
1)首先我們先介紹幾個名字解釋:
DHCP客戶端:DHCP客戶是通過DHCP來獲得網絡配置參數的internet主機,通常就是普通的用戶工作站。
DHCP服務器:DHCP服務器是提供網絡參數的給DHCP客戶的internet主機
DHCP/BOOTP中繼代理:在DHCP客戶和服務器之間轉發DHCP消息的主機或者路由器
DHCP是基於客戶機/服務器模型設計的,DHCP客戶和DHCP服務器之間通過收發DHCP消息進行通訊。
作用域:一個完整連續的可用IP地址薄,DHCP服務主要就是通過作用域來管理網絡分佈、IP地址分配及相關配置參數。
排除範圍:排除範圍是作用域內從DHCP服務中排除的有限地址序列,排除範圍確保在這些範圍中的任何地址都不是由網絡上的服務器提供給客戶端的。其實說白了就是將作用域中的一些IP地址給排除在外使其不能分配給客戶端。
 地址池:在定義DHCP作用域並應用排除範圍後,剩餘的地址在作用域內形成的可用地址池,地址池中的地址可以動態分配給DHCP客戶端。
租約:客戶端可以使用動態分配IP地址的時間。
預約:創建從DHCP服務器到客戶機的永久地址租約指定,預約可以保證子網上的特定硬件設備總是使用相同的IP。
2)工作原理
大致知道一些名字後,我們來說說其其基本原理:
首先DHCP一般是局域網內的一個通訊協議,當客戶端沒有設定任何網絡配置信息時候,他會想其所在的局域網上發出一個廣播封包給局域網內的所有主機(其發送的是DHCP  DISCVER數據包,爲保證服務器能夠接收到請求,數據包源地址設定爲0.0.0.0,而目的地址爲255.255.255.255,以廣播形式發送DHCP DISCOVER的信息。),一般主機接收到這個封包後,會直接給予丟棄,但如果局域網中有DHCP服務器,則會自動響應。
DHCP服務器監聽到客戶端發出的DHCP DISCOVER廣播後,它會從那些還沒有租出的地址範圍內選擇可用的IP及其他TCP/IP設定以DHCP OFFER數據包的形式發送給客戶機。
      如果客戶端收到網絡上多臺DHCP服務器的響應,客戶端會挑選最快的一個DHCP OFFER並向網絡發送一個DHCP REQUEST廣播封包,告訴所有DHCP服務器它將使用哪一臺服務器提供的IP地址。同時,客戶端還會向網絡發送ARP廣播數據包,查詢網絡上面有沒有其他機器使用該IP地址,如果發現該IP地址已經被佔用,客戶端則會發送一個DHCP DECLINE數據包給DHCP服務器,拒絕接受其DHCP OFFER,並重新發送DHCP REQUEST信息。
注:實際上並不是所有DHCP客戶端都會無條件接受DHCP服務器的響應,客戶端可以保留自己的一些TCP/IP設定,比如網關、DNS地址等等
   將地址分配給客戶端後,DHCP服務器會發送一個DHCP ACK消息,以確認IP租約的正式生效,結束完整的DHCP工作過程。
   DHCP客戶端成功地從服務器取得IP地址之後,一般不需要再發送DHCP DISCOVER信息了,除非其租約已經到期或者IP地址重新設定回0.0.0.0。此時客戶端會直接使用已經租用到的IP地址向爲其發此IP地址的DHCP服務器發出DHCP REQUEST信息,DHCP服務器會盡量讓客戶端使用原來的IP地址,如果沒有特殊的情況,會直接響應DHCP ACK,允許客戶端繼續使用該IP地址。如果該地址已經失效或者已經被其他主機使用了,服務器則會響應一個DHCP NACK數據包給客戶端,要求其重新執行DHCP DISCOVER。
注意:客戶端執行DHCP DISCOVER後,如果沒有DHCP服務器響應客戶端的請求,客戶端會隨機使用169.254.0.0/16網段中的一個IP地址配置本機地址。
Ok 大致的過程就是如上所示,上面也是我摘抄的,似乎說的比較詳細,簡單的說就是在一個存在DHCP服務器的網絡環境中,客戶端發送一個目標地址爲255.255.255.255的廣播給網絡中的所有主機,其他客戶端收到此消息會直接丟棄,而DHCP服務器收到此消息後則會從其地址池中隨機選擇一個IP給發送此消息的客戶端來配置其網絡參數,客戶端接收到消息後,就開始處理本身的網絡參數,包括網關、DNS等等信息,並且會給服務器發送一個確認信息,表示該參數已經被接受了,可別又分給其他客戶端
這裏有個地方需要注意一下,當客戶端無論是關閉網絡接口(ifdown)、重新啓動(reboot)、關機(shutdown)等行爲都算是脫機,這個時候服務器端會收回IP,並放到自己的備用區中,等待未來使用。但通過前面我們講述原理知道“DHCP服務器會盡量讓客戶端使用原來的IP地址,如果沒有特殊的情況,會直接響應DHCP ACK,允許客戶端繼續使用該IP地址所以當重啓網絡服務的時候,常常會發現IP地址居然沒有改變,原因就在這裏。
三.   配置DHCP服務器端
首先當然是要安裝DHCP,如果你有yum倉庫的話,直接
yum install dhcp就可以實現安裝,我先查看下我的主機裝了沒有呵呵:
[root@linux102 dhcpd]# rpm -qa dhcp
dhcp-3.0.5-21.el5
ok,我已經裝過了。那麼我們就開始配置吧。配置DHCP服務器大概有以下幾個步驟:
首先編輯/etc/dhcpd.conf
配置dhcp一般是配置/etc/dhcpd.conf這個文件,但一般情況下此文件並不存在,需要我們自己手動配置,這裏面的東東還蠻多的,自己一個一個敲多費勁,所以我們可以拷貝一個現成的配置文件到etc目錄下將其改名即可:
cp  /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
 複製好後,我們就在/etc下有這個文件了。
hcpd.conf包括全局配置和局部配置。全局配置可以包含參數或選項,該部分對整個DHCP服務器生效;局部配置通常由聲明部分來表示,該部分僅對局部生效,比如只對某個IP作用域生效
dhcpd.conf文件格式:
#全局配置  
參數或選項;              #全局生效  
#
局部配置  
聲明 {  
          參數或選項;        #局部生效  

}
下來我們將對全局與局部配置的一些常用參數和聲明進行解釋
 1.常用參數:
(1) ddns-update-style (none|interim|ad-hoc)
作用:定義所支持的DNS動態更新類型。
none:表示不支持動態更新
interim:表示DNS互動更新模式
ad-hoc:表示特殊DNS更新模式
因爲 DHCP 客戶端所取得的 IP 通常是一直變動的,所以某部主機的主機名與 IP 的對應就很難處理。此時 DHCP 可以透過 ddns 來更新主機名與 IP 的對應。
注意:這個選項是必選參數哈,配置文件中必須包含這一個參數並且要放在第一行。
(2) gnore client-updates
作用:忽略客戶端更新
(3) default-lease-time number(數字)
作用:定義默認IP租約時間
(4) max-lease-time number(數字)
作用:定義客戶端IP租約時間的最大值,當客戶端超過租約
間卻尚未更新 IP 時,最長可以使用該 IP 的時間;
注意:(3)、(4)都是以秒爲單位的租約時間,該項參數可以作用在全局配置中,也可以作用在局部配置中。
     2.常用聲明
聲明一般用來指定IP作用域、定義爲客戶端分配的IP地址池等等
聲明格式如下:
聲明 {  
          選項或參數;  
}
常見聲明的使用如下:
1subnet 網絡號 netmask 子網掩碼{......}
作用:定義作用域,指定子網
注意:網絡號必須與DHCP服務器的網絡號相同
2range 起始IP地址結束IP地址
作用:指定動態IP地址範圍
注意:可以在subnet聲明中指定多個range,但多個range所定義IP範圍不能重複。
  3. 常用選項介紹
選項通常用來配置DHCP客戶端的可選參數,比如定義客戶端的DNS地址、默認網關等等。選項內容都是以option關鍵字開始滴
常見選項使用如下:
1option routers IP地址
作用:爲客戶端指定默認網關
2option subnet-mask 子網掩碼
作用:設置客戶端的子網掩碼
3option domain-name-servers IP地址
作用:爲客戶端指定DNS服務器地址
(4) option broadcasst-address 廣播地址:
設定廣播地址而已。如果沒有設定的話,系統應該會自動依據 class A, B, C 的原則來計算出廣播地址。
注意:(1)(2)(3)選項可以用在全局配置中,也可以用在局部配置中。
ok 大概說完了之後,我們來看看這個配置文件到底是什麼樣子的

 
圖上的是我自己服務器上的配置,基本上就這麼多東西。根據實際情況大家也可以自己添加。
 這裏稍微多說幾句關於dhcp的固定ip獲取:
1host 主機名 {......}
作用:用於定義保留地址
注意:該項通常搭配subnet聲明使用。
2hardware 類型硬件地址
作用:定義網絡接口類型和硬件地址。常用類型爲以太網(ethernet),地址爲MAC地址。
3fixed-address IP地址
作用:定義DHCP客戶端指定的IP地址。
注意:(2)、(3)項只能應用於host聲明中
   配置到這裏,基本上就已經可以正常使用了,但如果服務器上有多個網絡接口的時候,往往就會出錯。比如192.168.0.0/24是eth0
上的,而192.168.1.0/24是eth1上的,如果DHCP服務器同時監聽的是兩個接口的話,這個時候我們192.168.1.0/24上的客戶端發送了dhcp封包要求,這個時候他取的ip就可能取成192.168.0.0/24網段上的了(服務器設置的是0網段),所以爲了防止這類事情發生,我們最好可以設定dhcp的監聽端口。如圖:
[root@linux102 ]# vi /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=“eth0”
配置好後,我們來啓動dhcp服務器:
啓動好後,我們來觀察下端口啓動的情況:
DHCP啓用的是67號端口,我們看到我的67號端口服務器上已經開啓了。
服務器端查詢有多少客戶端已經向我們申請了ip,以及ip的相關記錄可以再此處查詢:
[root@linux102 ~]# cat /var/lib/dhcpd/dhcpd.leases
lease 192.168.0.101 {                   //客戶端的ip地址
 starts 5 2011/08/05 06:56:02;
 ends 5 2011/08/05 12:56:02;
 tstp 5 2011/08/05 12:56:02;
 binding state free;
 hardware ethernet 00:0c:29:5d:41:62;
}
 這個其實是租約數據庫文件,其是用於保存一系列的租約聲明,其中包含客戶端的主機名、MAC地址、分配到的IP地址,以及IP地址的有效期等相關信息。這個數據庫文件是可編輯的ASCII格式文本文件。每當發生租約變化的時候,都會在文件結尾添加新的租約記錄。
DHCP剛安裝好後租約數據庫文件dhcpd.leases是個空文件
四.客戶端的配置
其實客戶端也沒啥配置的,只要設置成dhcp方式來獲取ip就可以了。設置好後,我們重啓網絡就可以從剛剛配置好的dhcp服務器上來獲取ip了呵呵 就這麼簡單。現在我們在客戶端上來觀察下其相關參數都是否符合配置:
1.客戶端的dns是否符合
[root@linux101 ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search linux102
nameserver 192.168.0.102
客戶端的dns已經是是我們設定的dns地址了,注意觀察哦,這裏的
search linux102 就是我們在服務器上設置的“option domain-name的名稱,nameserver 即是我們服務器上設置的地址。所以完全吻合
2.ip是否符合
[root@linux101 ~]# ifconfig
eth0      Link encap:Ethernet HWaddr 00:0C:29:5D:41:62 
          inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
 我們服務器上是設置了給客戶端綁定ip爲192.168.0.101,也符合
3.觀察路由
[root@linux101 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

觀察發現和我服務器上設置的192.168.0.1是一致的
4.查看端口
Dhcp客戶端所用的端口是68,現在我們來檢查下:
5.查看客戶端所記載的租約記錄信息
[root@linux101 dhclient]# cat /var/lib/dhclient/dhclient-eth0.leases
lease {
 lease {
 interface "eth0";                              //所監聽的端口
 fixed-address 192.168.0.101;                   //ip地址
 option subnet-mask 255.255.255.0;              //所取得的子網掩碼
 option time-offset -18000;
 option routers 192.168.0.1;                   //路由地址
 option dhcp-lease-time 21600;                //租約時間
 option dhcp-message-type 5;
 option domain-name-servers 192.168.0.102;    //dns的地址
 option dhcp-server-identifier 192.168.0.102;
 option nis-domain "domain.org";
 option domain-name "linux102";               //dns主機名稱
 renew 2 2011/8/9 11:22:19;                //下一次預計更新(renew)時間
 rebind 2 2011/8/9 13:47:58;
 expire 2 2011/8/9 14:32:58;
}
# 這個檔案會記錄該適配卡所曾經要求過的 DHCP 信息!
# 他幾乎就與你設定的 /etc/dhcpd.conf 類似
 
 
Ok,整個過程已經全部講解完畢,現在我們來進行個簡單的總結:
基本的DHCP服務器搭建流程:
(1)編輯主配置文件dhcpd.conf,指定IP作用域(指定一個或多個IP地址範圍)。
(2)建立租約數據庫文件。
(3)重新加載配置文件或重新啓動dhcpd服務使配置生效。
DHCP工作流程
(1)客戶端發送廣播向服務器申請IP地址。
(2)服務器收到請求後查看主配置文件dhcpd.conf,先根據客戶端的MAC地址查看是否爲客戶端設置了固定IP地址
(3)如果爲客戶端設置了固定IP地址則將該IP地址發送給客戶端。如果沒有設置固定IP地址,則將地址池中的IP地址發送給客戶端。
(4)客戶端收到服務器迴應後,客戶端給於服務器迴應,告訴服務器已經使用了分配的IP地址。
(5)服務器將相關租約信息存入數據庫。

 

 

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