DHCP服務

DHCP服務概述:

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

特點: C/S 模式
自動分配IP地址,方便管理
DHCP不會同時租借相同的IP地址給兩臺主機;
DHCP管理員可以約束特定的計算機使用特定的IP地址;
可以爲每個DHCP作用域設置很多選項;
客戶機在不同子網間移動時不需要重新設置IP地址。每次都自動獲取IP地址就可以了。
DHCP的缺點:
當網絡上存在多服務器時,一個DHCP服務器不能查出已被其它服務器租出去的IP地址;
DHCP服務器不能跨路由器與客戶機通信,除非路由器允許BOOTP協議轉發。
端口:
DHCP服務使用:端口67(bootps) 68(bootpc) 。
例:查看

#vim /etc/services

在這裏插入圖片描述
DHCP協議由 bootp協議發展而來,是BOOTP的增強版本,bootps代表服務端端口, bootpc代表客戶端端口
bootp協議:引導程序協議(BOOTP)。它可以讓無盤工作站從一箇中心服務器上獲得IP地址,爲局域網中的無盤工作站分配動態IP地址,並不需要每個用戶去設置靜態IP地址

BOOTP有一個缺點:您在設定前須事先獲得客戶端的硬件地址,而且,MCA地址與IP的對應是靜態的。換而言之,BOOTP非常缺乏“動態性 ”,若在有限的IP資源環境中,BOOTP的一對一對應會造成非常可觀的浪費。

DHCP可以說是BOOTP的增強版本,它分爲兩個部分:一個是服務器端,而另一個是客戶端。所有的IP網絡設定數據都由DHCP服務器集中管理,並負責處理客戶端的DHCP要求;而客戶端則會使用從服務器分配下來的IP環境數據。比較BOOTP, DHCP透過“租約”的概念,有效且動態的分配客戶端的TCP/IP設定,而且,作爲兼容考慮,DHCP也完全照顧了BOOTP Client的需求。

DHCP服務運行原理:

運行原理
在這裏插入圖片描述
DHCP Client發現階段:
即DHCP客戶端尋找DHCP服務端的過程,對應於客戶端發送DHCP Discovery,因爲DHCP Server對應於DHCP客戶端是未知的,所以DHCP 客戶端發出的DHCP Discovery報文是廣播包,源地址爲0.0.0.0目的地址爲255.255.255.255。網絡上的所有支持TCP/IP的主機都會收到該DHCP Discovery報文,但是隻有DHCP Server會響應該報文。
注意:客戶端執行DHCP DISCOVER 後,如果沒有DHCP 服務器響應客戶端的請求,客戶端會隨機使用169.254.0.0/16 網段中的一個IP 地址配置本機地址。

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

早先的Linux上並不會產生這條路由,現在有這條路由大概是爲了和windows兼容。

[root@xuegod63 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.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 1002 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
DHCP Server 提供階段:
DHCP Server提供階段,即爲DHCP Server響應DHCP Discovery所發的DHCP Offer階段,即DHCP服務器提供IP地址的階段。在網絡中接收到DHCPdiscover發現信息的DHCP服務器都會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含出租的IP地址和其他設置的DHCPoffer提供信息
DHCP Client 確認階段:
即DHCP客戶機選擇某臺DHCP服務器提供的IP地址的階段。如果有多臺DHCP服務器向DHCP客戶機發來的DHCPoffer提供信息,則DHCP客戶機只接受第一個收到的DHCPoffer提供信息,然後它就以廣播方式回答一個DHCPrequest請求信息,該信息中包含向它所選定的DHCP服務器請求IP地址的內容。之所以要以廣播方式回答,是爲了通知所有的DHCP服務器,他將選擇某臺DHCP服務器所提供的IP地址

DHCP Server確認階段:

即DHCP服務器確認所提供的IP地址的階段。當DHCP服務器收到DHCP客戶機回答的DHCPrequest請求信息之後,它便向DHCP客戶機發送一個包含它所提供的IP地址和其他設置的DHCPack確認信息,告訴DHCP客戶機可以使用它所提供的IP地址。然後DHCP客戶機便將其TCP/IP協議與網卡綁定,另外,除DHCP客戶機選中的服務器外,其他的DHCP服務器都將收回曾提供的IP地址

DHCP Client重新登錄網絡:

當DHCP Client重新登錄後,就不需要再發送DHCP discover發現信息了,而是直接發送包含前一次所分配的IP地址的DHCP request請求信息。當DHCP服務器收到這一信息後,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,並回答一個DHCP ack確認信息。如果此IP地址已無法再分配給原來的DHCP客戶機使用時(比如此IP地址已分配給其它DHCP客戶機使用),則DHCP服務器給DHCP客戶機回答一個DHCP nack否認信息。當原來的DHCP客戶機收到此DHCP nack否認信息後,它就必須重新發送DHCP discover發現信息來請求新的IP地址。
DHCP Client更新租約:

DHCP獲取到的IP地址都有一個租約,租約過期後,DHCP Server將回收該IP地址,所以如果DHCP Client如果想繼續使用該IP地址,則必須更新租約。更新的方式就是,噹噹前租約期限過了一半後,DHCP Client都會發送DHCP Renew報文來續約租期。

爲了便於理解,我們把DHCP客戶機比做餐館裏的客人,DHCP服務器工作原理當中,服務器比做服務員(一個餐館裏也可以有多個服務員),IP地址比做客戶需要的食物。那麼可以這樣描述整個過程:客人走進餐館,問:“有沒有服務員啊?”(DHCP discover),多個服務員同時回答:“有,我這有雞翅”“有,我這有漢堡”(DHCP offer)。客人說:“好吧,我要一份漢堡”(DHCP request,這個客人比較死板,總是選擇第一次聽到的食物),端着漢堡的服務員迴應了一聲:“來啦”(DHCP ack),並把食物端到客人面前,供其享用(將網卡和IP地址綁定)。客人下次來的時候,就直接找上次那個服務員點自己喜歡的漢堡了(DHCP request),如果還有漢堡,服務員會再次確認並上菜(DHCP ack),而如果已經賣完了,服務員則會告訴客人:“不好意思,已經賣完了”(DHCP nack)。當然,服務員隔一段時間會來收拾一次桌子,除非客人特別說明這菜還要繼續吃的,服務員會將剩菜端走。

安裝DHCP

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

dhcp-common-4.1.1-25.P1.el6.x86_64.rpm #包括DHCP客戶端和服務端共同需要的一些文件
dhclient-4.1.1-25.P1.el6.x86_64.rpm #dhcpclient
dhcp-4.1.1-25.P1.el6.x86_64.rpm # dhcp 服務端包

配置文件位置:
1、主配置文件:
/etc/dhcp/dhcpd.conf

打開這個配置文件,發現提示尋找模板配置文件:

2、DHCP主程序包安裝好後會自動生成主配置文件的範本文件
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
補充:開源服務軟件裏, 以.sample 結尾的文件是軟件的模板樣例文件,需要關注下。

現在我們將範本配置文件複製到/etc 目錄下替換掉空白dhcpd.conf 主配置文件。

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

服務啓動關閉腳本,查看端口

[root@localhost  ~]# service dhcpd restart

安裝好之後先不要啓動,否則會報錯,先修改配置文件,確保配置文件裏面的IP地址與本機的ip是在同一網段。

此時不要啓動,啓動會失敗
#啓動失敗的原因是 dhcp服務器配置的IP地址和默認配置文件裏定義的地址段不相同。

##在啓動DHCP服務之前,需要給DHCPServer配置一個靜態的IP地址

保證開機啓動:
chkconfig dhcpd on #配置的服務要保證開機啓動

DHCP配置文件參數說明

1、主配置文件介紹
說明:
dhcp 範本配置文件內容包含了部分參數、聲明以及選項的用法,其中註釋部分可以放在任何位
置,並以“#”號開頭,當一行內容結束時,以“;”號結束,大括號所在行除外

可以看出整個配置文件分成全局和局部兩個部分。但是並不容易看出哪些屬於參數,哪些屬於聲明和選項。

概念與協議:
作用域:可以分配IP的範圍 subnet
地址池:可以分配給客戶端的IP,range包括的IP
保留地址:指定某個客戶端使用一個特定IP,通過host配置的
租約(時間):客戶端可以使用這個IP地址的時間

配置文件:/etc/dhcp/dhcpd.conf 部分配置解釋
#option definitions common to all supported networks… #定義全局配置,通用於所有支持的網絡選項.
option domain-name “example.org”; #爲客戶端指定所屬的域
option domain-name-servers ns1.example.org, ns2.example.org; #爲客戶端指定DNS服務器地址

default-lease-time number(數字)
default-lease-time 600;
作用:定義默認IP 租約時間,以秒爲單位的租約時間。
50%:續約。(續不上繼續用)
87.5%:再次續約。(續不上找別人)
DHCP工作站除了在開機的時候發出 DHCPrequest 請求之外,在租約期限一半的時候也會發出 DHCPrequest ,如果此時得不到 DHCP服務器的確認的話,工作站還可以繼續使用該IP;當租約期過了87.5%時,如果客戶機仍然無法與當初的DHCP服務器聯繫上,它將與其它 DHCP服務器通信。如果網絡上再沒有任何DHCP協議服務器在運行時,該客戶機必須停止使用該IP地址,並從發送一個Dhcpdiscover數據包開 始,再一次重複整個過程。要是您想退租,可以隨時送出 DHCPRELEASE 命令解約,就算您的租約在前一秒鐘才獲得的。

max-lease-time 7200; (數字)
作用:定義客戶端IP租約時間的最大值,當客戶端超過租約時間,卻尚未更新IP 時,最長可以使用該IP 的時間;
例:
比如,機器在開機獲得IP地址後,然後關機了。這時,當時間過了default-lease-time 600秒後,沒有機器向DHCP續約,DHCP會保留7200秒,保留此IP地址不用於分配給其它機器。 當超過7200秒後,將不再保留此IP地址給此機器。
注意:(3)、(4)都是以秒爲單位的租約時間,該項參數可以作用在全局配置中,也可以作用在局部配置中。

log-facility local7; #定義日誌類型爲 local7

subnet:

聲明一般用來指定IP 作用域、定義爲客戶端分配的IP 地址池等等
聲明格式如下:
subnet 網絡號 netmask 子網掩碼 {
選項或參數
}

常見聲明的使用如下:
(1)subnet 網絡號 netmask 子網掩碼 {…}
作用:定義作用域,指定子網
在這裏插入圖片描述
dhcp配置文件如圖

注意:網絡號必須與DHCP 服務器的網絡號相同

下面介紹以下每個選項的含意:
(1)range 起始IP 地址結束IP 地址
作用:指定動態IP 地址範圍
注意:可以在subnet(子網)聲明中指定多個range,但多個range 所定義IP 範圍不能重複

常用選項介紹
選項通常用來配置DHCP 客戶端的可選參數,比如定義客戶端的DNS 地址、默認網關等等。選項
內容都是以option 關鍵字開始。
常見選項使用如下:
(1)option routers IP 地址
作用:爲客戶端指定默認網關
如:option routers 10.5.5.1;
(2)option domain-name
作用:爲客戶端指定默認的域
(3)option domain-name-servers IP 地址
作用:爲客戶端指定DNS 服務器地址
注意:(1)、(2)、(3)選項可以用在全局配置中,也可以用在局部配置中。
2、租約數據庫文件
租約數據庫文件用於保存一系列的租約聲明,其中包含客戶端的主機名、MAC 地址、分配到的IP地址,以及IP地址的有效期等相關信息。這個數據庫文件是可編輯的ASCII 格式文本文件。每
當發生租約變化的時候,都會在文件結尾添加新的租約記錄。
DHCP 剛安裝好後租約數據庫文件dhcpd.leases 是個空文件
/var/lib/dhcpd/dhcpd.leases
當DHCP 服務正常運行後就可以使用cat 命令查看租約數據庫文件內容了

我的虛擬機使用橋接模式是否可行? 不行,因爲你的局域網中有可能就有DHCP服務器,這樣你就很難,讓你的客戶端是從你的DHCP服務器獲得IP地址。
另外,也可能造成公司局域網中其它機器因爲獲得了你DHCP服務器上的IP地址,而上不了網。

在這裏插入圖片描述
在這裏插入圖片描述
1、先給DHCP服務器配置一個10.10.101.0網段的靜態地址,否則服務不能啓動。
2、配置好地址後,修改配置文件如何

[root@localhost  ~]# vim /etc/dhcp/dhcpd.conf
只保留,:
subnet 10.10.101.0 netmask 255.255.255.0 {
  range 10.10.101.100 10.10.101.200;
  option domain-name-servers 10.10.101.1;
  option domain-name "test.com";
  option routers 10.10.101.1;
  option broadcast-address 10.10.101.255;
  default-lease-time 600;
  max-lease-time 7200;
}
[root@localhost ~]# systemctl start dhcpd

[root@localhost ~]# ps aux|grep dhcp
dhcpd      1971  0.1  0.9 116344 18596 ?        Ss   21:07   0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

查看端口:

[root@localhost ~]# netstat -tlunp|grep dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1971/dhcpd          
udp        0      0 0.0.0.0:30086           0.0.0.0:*                           1971/dhcpd          
udp6       0      0 :::31454                :::*                                1971/dhcpd

然後客戶機改爲自動獲取IP地址。

[root@lcalhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens32  ifcfg-ens35 
[root@localhost network-scripts]# vim ifcfg-ens35
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"    ##改成dhcp模式
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens35"
UUID="5e02ad66-4084-4f4a-bb4c-50bf47bd1bd5"
DEVICE="ens35"
ONBOOT="yes"

重啓網卡:

[root@localhost network-scripts]# ifdown ens35 && ifup ens35

查看:

[root@localhost network-scripts]# ifconfig ens35
ens35: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.101.100  netmask 255.255.255.0  broadcast 10.10.101.255
        inet6 fe80::20c:29ff:fe07:3630  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:07:36:30  txqueuelen 1000  (Ethernet)
        RX packets 5  bytes 864 (864.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 1242 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

查看默認網關

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.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     1002   0        0 eth0
0.0.0.0         10.10.101.1     0.0.0.0         UG    0      0        0 eth0

查看DNS

[root@localhost network-scripts]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search test.com
nameserver  10.10.101.1

查看租約數據庫文件

[root@localhost dhcp]# cat  /var/lib/dhcpd/dhcpd.leases
#The format of this file is documented in the dhcpd.leases(5) manual page.
#This lease file was written by isc-dhcp-4.1.1-P1

server-duid "\000\001\000\001\030\233\206H\000\014)H\200\237";

lease 10.10.101.200 {
 starts 3 2019/10/16 07:30:16;
  ends 3 2019/16/16 07:40:16;
  cltt 3 2019/16/16 07:30:16;
  binding state active;
  next binding state free;
  hardware ethernet 00:0c:29:12:ec:1e;
}

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 地址。

[root@localhost  ~]# vim /etc/dhcp/dhcpd.conf   # 找到對應的子網範圍,修改成以下內容
subnet 10.10.101.0 netmask 255.255.255.0 {
  range 10.10.101.100 10.10.101.200;
  option domain-name-servers 10.10.101.1;
  option domain-name "internal.example.org";
  option routers 10.10.101.1;
  option broadcast-address 10.10.101.255;
  default-lease-time 600;
  max-lease-time 7200;
host xuegod63 {    #這一段內容,要寫在subnet字段中,和subnet配合使用。
    hardware ethernet 00:0C:29:12:ec:1e;
    fixed-address 10.10.101.251;
 }
}

注意:
在生成環境中使用DHCP服務,往往需要結合實際是網絡環境來搭建,很多公司採用路由器的DHCP服務來提供IP地址

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