1. 程式人生 > >DHCP伺服器簡介

DHCP伺服器簡介

1、常識

dhcp概念:全稱 Dynamic Host Configuration Protocol

dhcp功能: 動態分配IP地址

dhcp常識:

dhcp是基於udp的伺服器監聽在67號埠,客戶端監聽在68號埠上  

UDP:

67/udp

68/udp

計算機想要通訊需要具備:

TCP/IP

IPADDR

NETMASK

GATEWAY

DNS


2、DHCP工作原理

dhcp工作原理:

客戶端發起廣播udp的資料包給伺服器

Client--> DHCPDISCOVER

伺服器迴應客戶端的資料包

          DHCPOFFER <-- Server

客戶端回覆確認包,當有多個

dhcp伺服器時需要回復確認使用哪個伺服器分配過來的ip(廣播包)

Client--> DHCPREQUEST

伺服器回覆確認包。

           DHCPACK <-- Server

客戶端續租ip(這裡就不是廣播包了)   

Client--> DHCPREQUEST

           DHCPACK <-- Server

註釋:我們的每臺電腦(不管是linux,windows,ios)都會時時刻刻執行著dhcpclient客戶端(用於請求ip地址)。這個客戶端會在你啟動裝置時廣播發送DHCPDISCOVER資料包,路由器上的dhcpserver(路由器也是一臺電腦)服務端接受廣播資料包,dhcpserver回送DHCPOFFER資料包(資料包包含給你分配的ip地址,注意這時你的網路中可能不止一臺dhcpserver伺服器。它們會同時響應你的ip請求報文的),這時dhcpclient接收到資料包然後再次廣播發送DHCPREQUEST資料包(如果有多個dhcpserver給你提供ip,你需要選一個,一般來說那個dhcpserver的資料包先到就用那個),這時dhcpserver伺服器收到DHCPREQUEST資料包後回覆確認包DHCPACK並記錄下分配給你的ip地址,這時你就可以上網了。之後每6小時會重新續租(這個ip你只有6個小時的使用權,時間到是需要續租的)。

3、dhcp安裝

//查詢是否安裝

rpm -qi dhcp

//若未安裝直接安裝

yum install dhcp -y

//檢視都生成了那些檔案

rpm -ql dhcp

//主要的檔案

/usr/sbin/dhcpd #服務

/usr/sbin/dhcrelay#中繼服務,一般不用。中繼服務和dhcpd服務兩個只能有一個執行。(當dhcpserver端和decpcilent不在一個網段時一般來說是不能接收到客戶端的請求資料包的。因為路由器不會轉發廣播報文。這時如果路由器上能執行這個dhcrelay服務就能夠將這個請求從別的網路轉發到dechserver所在的網路中。之後另外網路中的dhcpclient就能獲取到ip地址。這裡不介紹這個服務,請自行google查詢使用方法。)

/etc/dhcpd.conf #配置檔案

/var/lib/dhcpd/dhcpd.leases#租約檔案,記錄了分配出去的ip地址。一般會有一個dhcpd.leases~檔案存在,這才是真正記錄分配IP地址記錄的檔案。

當然客戶機需要設定成dhcp獲取ip地址(具體怎麼設定1、直接setup命令設定。2、直接配置網絡卡(/etc/sysconfig/network-scripts/ifcfg-eth#))

vim   /etc/dhcpd.conf   #dhcp服務的配置檔案如下。

註釋:

最上邊的兩行(ddns-update-style interim ignore client-update)是動態改寫dns的選項,目前不用了保持不變。

subnet  172.16.0.0 ...這就是你所在的區域網網路(你的這臺dhcp伺服器的ip和你的客戶機們必須都在這個網路中,否則不能啟動dhcpd服務)。說白這個就是你要分配的地址池,所有的ip都出自這個網路。

option routers   就是dhcp給你指定的閘道器

option subnet-mask 就是你這個網路的子網掩碼

option domain-name 就是你所在的域的名字。學名叫做搜尋域。我還不知道幹什麼用的呢,這裡沒什麼用不用搭理。

option domain-name-servers   就是給你指定的dns伺服器(這個就會被NetworkManager程式寫到你的/etc/resolv.conf中,我指的是linux。這就是為什麼你的 這個檔案經常重啟的時候被清空。因為你所在網路中的dhcp伺服器沒給你指定dns伺服器--你的路由器上配置的這條是空的。因此還是把你的dns伺服器配置到ifcfg-eth#檔案裡邊去吧,那就不會被更改了。免得你每次域名都沒辦法解析必須重寫這個檔案。)

range 172.16.100.10...這行就是你要把這個網段中那些ip分配出去。這裡配置的就從10-20一共才11個ip

default-leases-time... #這個就是給你的租期6小時。一般來說每隔3小時就會續租了。

#這個可以給某臺計算機指定一個ip,這臺機器的ip將一直是這個。注意這個ip不能在上邊動態分配出去的地址中(不能再那11個ip中)。如果有多個機器要固定ip就多寫幾個

host ns {            #ns隨便起的名字,你可以隨便起一個,不重複就行。

      harderware .....     #要固定ip地址的那臺機器的mac地址

     fixd-address....     #給這臺機器的ip

}

嘗試下在你的區域網中自己啟動個dhcp伺服器,那麼你的小夥伴就有可能從你那裡請求ip地址了。如果你通過路由器管理介面獲取到它的mac地址,你故意給他配置一個固定的ip(那這裡仍然是有可能使用你提供的固定的ip,還是誰先到用誰的。)。並且把他的路由設定成錯的。那他的資料包就出不了這個網路了,也就上不了外網了。我在虛擬機器上玩過了,是有效果的。但手機上就沒有效果,原因我想應該是這樣的,手機在廣播請求ip的時候,因為我的dechserver在虛擬機器上所以肯定會比真正的路由器上的dechserver響應慢,這樣就麻煩了,拿手機肯定不會用我給他的固定的那個而是直接用路由器上的那個dhcpserver給它提供的ip。所以就沒效果了。不過你可以試一試在真機上啟動一個dhcpserver。比如在windows上啟動一個,或者你想辦法關掉路由器上的dhcpserver那這肯定就會有效果了。因為手機的作業系統也是linux的。

測試的時候可以使用命令:dhclient -d 看看請求ip地址的過程是怎樣的,看看是誰給提供的ip地址。