DHCP服務
1、DHCP介紹
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議),一般被應用在局域網絡環境中,主要做用是集中的管理、分配IP地址,使網絡環境中的主機動態的得到IP地址、Gateway地址、DNS服務器地址等信息,並可以提高地址的使用率。因爲DHCP是一個UDP協議,因此運行起來更加高效。html
DHCP協議採用客戶端/服務器模型(C/S模型),服務端能夠爲客戶端提供IP、掩碼、網關、主機名、DNS等信息。客戶端只需將IP得到方式設置爲自動獲取便可。linux
目前能夠提供DHCP服務的設備有不少,好比:windows
DHCP服務器(windows server、linux)bash
硬件路由器服務器
家用寬帶路由網絡
2、DHCP應用場景
1)公司局域網環境less
2)家庭局域網環境dom
3)公共場合的wifi環境tcp
4)寬帶環境網絡ide
使用DHCP的優勢:
1)傻瓜式接入:用戶只需懂得插網線到電腦,或者輸入WiFi密碼接入網絡便可實現聯網
2)IP高效利用:及時回收IP機制,保證IP的高利用性,特別是對IP不足的網絡
3)避免IP衝突:避免IP衝突,保證網絡的高效利用,保證公司員工及臨時人員高效工做
4)下降了公司網絡管理員的工做量,提高了工做效率
3、DHCP工做原理
報文分析
192.168.11.16 dhcp服務器 [root@baism dhcp]# tcpdump -nn -vvv -s 1500 -i ens33 host 192.168.11.16 and udp port 67 or udp port 68 1.DHCP Discover 客戶端發送廣播 請求dhcp服務器(67)分配ip 11:32:41.001286 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328) 0.0.0.0:68 > 255.255.255.255:67: [udp sum ok] BOOTP/DHCP, Request from 00:0c:29:1a:f8:c7, length 300, xid 0x336cb11e, Flags [none] (0x0000) Client-Ethernet-Address 00:0c:29:1a:f8:c7 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Discover Requested-IP Option 50, length 4: 192.168.11.252 Parameter-Request Option 55, length 13: Subnet-Mask, BR, Time-Zone, Classless-Static-Route Domain-Name, Domain-Name-Server, Hostname, YD YS, NTP, MTU, Option 119 Default-Gateway END Option 255, length 0 PAD Option 0, length 0, occurs 35 11:32:41.001569 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 330) 192.168.11.16.67 > 192.168.11.252.68: [udp sum ok] BOOTP/DHCP, Reply, length 302, xid 0x336cb11e, Flags [none] (0x0000) Your-IP 192.168.11.252 Client-Ethernet-Address 00:0c:29:1a:f8:c7 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Offer Server-ID Option 54, length 4: 192.168.11.16 Lease-Time Option 51, length 4: 7200 Subnet-Mask Option 1, length 4: 255.255.255.0 BR Option 28, length 4: 192.168.11.255 Domain-Name-Server Option 6, length 8: 202.106.0.20,114.114.114.114 Hostname Option 12, length 16: "test.ayitula.com" Default-Gateway Option 3, length 4: 192.168.11.254 END Option 255, length 0 11:32:41.002920 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328) 0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 00:0c:29:1a:f8:c7, length 300, xid 0x336cb11e, Flags [none] (0x0000) Client-Ethernet-Address 00:0c:29:1a:f8:c7 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Request Server-ID Option 54, length 4: 192.168.11.16 Requested-IP Option 50, length 4: 192.168.11.252 Parameter-Request Option 55, length 13: Subnet-Mask, BR, Time-Zone, Classless-Static-Route Domain-Name, Domain-Name-Server, Hostname, YD YS, NTP, MTU, Option 119 Default-Gateway END Option 255, length 0 PAD Option 0, length 0, occurs 29 11:32:41.003196 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 330) 192.168.11.16.67 > 192.168.11.252.68: [udp sum ok] BOOTP/DHCP, Reply, length 302, xid 0x336cb11e, Flags [none] (0x0000) Your-IP 192.168.11.252 Client-Ethernet-Address 00:0c:29:1a:f8:c7 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: ACK Server-ID Option 54, length 4: 192.168.11.16 Lease-Time Option 51, length 4: 7200 Subnet-Mask Option 1, length 4: 255.255.255.0 BR Option 28, length 4: 192.168.11.255 Domain-Name-Server Option 6, length 8: 202.106.0.20,114.114.114.114 Hostname Option 12, length 16: "test.ayitula.com" Default-Gateway Option 3, length 4: 192.168.11.254 END Option 255, length 0
3.1)工做方式
IP得到須要經過發廣播來實現客戶端和服務器的通訊,因此DHCP只能工做在局域網。
3.2)工做原理解析
一、Client:向網絡中發送廣播,經過本身的UDP協議的68號端口向網絡中發送DHCP Discover包,用來尋找網絡中的DHCP Server.相似於你在你的公司大喊一聲:"誰是公司老闆"同樣的道理。
二、Server:局域網中的全部DHCP服務器都能收到該Client發送的廣播包,而後DHCP Server會檢查本身的IP池中(也叫作做用域)是否還有可用IP能夠分發。若是有的話,會直接將這個IP地址從池中拿出來,避免在發給別的客戶端,而且經過本身的UDP協議的67號端口給Client發一個響應包DHCP Offer,一樣通訊是採用廣播的方式,明確告訴其能夠提供哪一個IP給Client使用。相似於公司的幾個老闆都在公司喊了一聲:「我是X老闆,我有時間在哪一個辦公室接待你」。
三、Client:Client會收到局域網中的全部DHCP服務器發給本身的DHCP Offer包,默認選一個最優的DHCP Server進行IP獲取(在這裏就是第一個發送給他DHCP Offer的服務器算做最優)。而後繼續向網絡中經過UDP的68號端口發廣播DHCP Resquest,明確指定DHCP Server IP地址和須要租用的IP地址,告訴它要從他這裏得到IP信息。天然其餘DHCP Server也能收到廣播,確認不從本身這裏拿IP信息後,會將上步從IP池中拿出來的IP在釋放到池中,以便別人使用。相似於你在公司大喊一聲:「李老闆,我找你接待」,那麼其餘老闆剛纔計劃接待你的時間就會被釋放出來,用於接待別的客戶。
四、Server:被確認的DHCP Server就會經過其UDP協議的67號端口發送DHCP ACK確認包,採用廣播將IP、掩碼、網關、DNS等信息還有IP租約一塊兒發送給DHCP Client,Client確認IP可用後,根據IP租約開始計算使用時間。相似於李老闆把你請進他的辦公室,開始和你聊天,並計算聊天時間爲30分鐘,開始倒計時。
3.3)計算機得到IP的時間點
a、計算機開機
b、網卡接通網絡
c、重啓網卡服務
3.4)租約更新階段
a、租約完成1/2
b、租約完成7/8
c、租約到期
4、DHCP實踐
基礎實踐
-
1.安裝DHCP
[root@baism ~]# yum -y install dhcp
-
2.拷貝模板
默認狀況下,dhcp服務並無提供配置文件,只是給提供了一個demo,存放在/usr/share/doc/dhcp*/目錄下.咱們將demo文件拷貝到/etc/dhcp目錄下,而且命名爲dhcpd.conf。
[root@baism ~]# cp -f /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
-
3.對複製過來的模板爲文件修改下 並啓動
[root@baism dhcp]# cat /etc/dhcp/dhcpd.conf
option domain-name-servers 4.2.2.2, 4.2.2.1; ##全局配置dhs服務器
default-lease-time 28800; ##默認租約
max-lease-time 43200; ##最大租約
authoritative; ##權威dhcp服務器
log-facility local7; ##日誌級別
##做用域配置 說明:做用域能夠有多個 但必須存在本網段的做用域,內容能夠爲空
subnet 192.168.11.0 netmask 255.255.255.0 { ##聲明網段和掩碼
range 192.168.11.153 192.168.11.252; ##分配範圍
option domain-name-servers 8.8.8.8, 114.114.114.114; ##dns 多個用"," 隔開
option routers 192.168.11.254; ##網關地址
option broadcast-address 192.168.11.255; ##廣播地址
default-lease-time 7200; ##局部配置 高於全局
max-lease-time 10800;
}
[root@baism dhcp]# systemctl start dhcpd
[root@baism dhcp]# systemctl enable dhcpd
-
4.客戶端請求ip
客戶端命令:
dhclient是一個DHCP協議客戶端,它使用DHCP協議或者BOOTP協議或在這兩個協議都不可用時使用靜態地址來配置一個或多個網絡接口
dhclient -r device 釋放IP地址
dhclient -d device 強制dhclient做爲前臺進程運行。 一般狀況下,DHCP客戶端將在前臺運行,直到配置了一個接口,此時它將恢復爲在後臺運行。
請求ip
dhclient -r eno33
dhclient -r eno33
日誌
服務段能夠看到日誌:
3) 服務器日誌查看驗證獲取信息
[root@baism ~]# tailf /var/log/messages
Feb 21 13:40:44 baism dhcpd: DHCPDISCOVER from 00:0c:29:1a:f8:bd via ens33
Feb 21 13:40:45 baism dhcpd: DHCPOFFER on 192.168.11.156 to 00:0c:29:1a:f8:bd via ens33
Feb 21 13:40:45 baism dhcpd: DHCPREQUEST for 192.168.11.156 (192.168.11.16) from 00:0c:29:1a:f8:bd via ens33
Feb 21 13:40:45 baism dhcpd: DHCPACK on 192.168.11.156 to 00:0c:29:1a:f8:bd via ens33
租約文件
服務段租約文件也能夠看到具體信息
租約文件的路徑: /var/lib/dhcpd/dhcpd.leases
[root@baism ~]# 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.2.5
lease 192.168.11.154 {
starts 4 2019/02/21 03:41:12;
ends 4 2019/02/21 03:43:12;
tstp 4 2019/02/21 03:43:12;
cltt 4 2019/02/21 03:41:12;
binding state free;
hardware ethernet ac:87:a3:02:8d:5d;
uid "\001\254\207\243\002\215]";
client-hostname "baismdeMBP";
}
保留地址和超級做用域實踐
保留IP
在IP租約到期後,若是沒法續訂租約,client只能乖乖交出IP地址,從新得到一個其餘IP使用。可是在公司有些服務器的IP地址是不能變化的,由於變了用戶就沒法鏈接到服務器了,好比公司文件服務器、打印服務器等等。
在配置文件/etc/dhcp/dhcpd.conf末尾添加如下內容
host print {
hardware ethernet 00:0C:29:1A:F8:C7;
fixed-address 192.168.11.252;
}
host爲指令,print是個名字,隨便起,可是最好有意義,要不過一段你也記不住了
hardware ethernet 指定以太網網卡MAC地址
fixed-address 指定要綁定的IP
發放計算機名稱
在host裏添加以下便可
option host-name "test.ayitula.com";
說明:
請把/etc/hostname 中的計算機名稱清除 /etc/sysconfig/network中的hostname字段清除
超級做用域
默認狀況下,DHCP服務器只能發放和本身網卡在同一網段的IP地址,目前咱們DHCP的網卡IP地址爲192.168.11.0段,咱們新加的網段爲192.168.12.0
編輯配置文件
[root@baism ~]# cat /etc/dhcp/dhcpd.conf
option domain-name-servers 4.2.2.2, 4.2.2.1;
default-lease-time 28800;
max-lease-time 43200;
#authoritative;
log-facility local7;
#share-network 部署一個超級做用域
#supper 超級做用域名稱,隨便起,可是建議有意義。
shared-network supper {
#192.168.11.0做用域
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.150 192.168.11.150;
option domain-name-servers 202.106.0.20, 114.114.114.114;
option routers 192.168.11.254;
default-lease-time 7200;
max-lease-time 10800;
}
#192.168.12.0做用域
subnet 192.168.12.0 netmask 255.255.255.0 {
range 192.168.12.150 192.168.12.150;
option domain-name-servers 202.106.0.20, 114.114.114.114;
option routers 192.168.12.254;
default-lease-time 7200;
max-lease-time 10800;
}
}
5、其餘
配置文件所有解析
[root@baism ~]# cat /etc/dhcp/dhcpd.conf
# DHCP服務配置文件分爲全局配置和做用域配置,subnet的就是做用域 不在subnet裏面的就是全局設置。做用域內配置權限高於全局
#DNS全局選項,指定DNS服務器的地址,能夠是IP,也能夠是域名。
# DNS的域名
option domain-name "example.org";
#具體的DNS服務器
option domain-name-servers ns1.example.org, ns2.example.org;
#租約設置,默認租約爲600s
default-lease-time 600;
#租約設置,最大租約爲7200s,當客戶端未請求明確的租約時間。
max-lease-time 7200;
#動態DNS更新方式(none:不支持;interim:互動更新模式;ad-hoc:特殊更新模式)
#ddns-update-style none;
#若是該DHCP服務器是本地官方DHCP就將此選項打開,避免其餘DHCP服務器的干擾。
#當一個客戶端試圖得到一個不是該DHCP服務器分配的IP信息,DHCP將發送一個拒絕消息,而不會等待請求超時。
#當請求被拒絕,客戶端會從新向當前DHCP發送IP請求得到新地址。
#保證IP是本身發出去的
#說白話就是全部dhcp請求只能接受個人
#authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
# 日誌級別
log-facility local7;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
#做用域相關設置指令
#subnet 定義一個做用域
#netmask 定義做用域的掩碼
#range 容許發放的IP範圍
#option routers 指定網關地址
#option domain-name-servers 指定DNS服務器地址
#option broadcast-address 廣播地址
#
#
#案例:定義一個做用域 網段爲10.152.187.0 掩碼爲255.255.255.0
#此做用域不提供任何服務
subnet 10.152.187.0 netmask 255.255.255.0 {
}
# This is a very basic subnet declaration.
#案例:定義一個基本的做用域
#網段10.254.239.0 掩碼255.255.255.224
#分發範圍10.254.239.10-20
#網關爲rtr-239-0-1.example.org, rtr-239-0-2.example.org
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20;
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}
# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.
#案例:容許採用bootp協議的客戶端動態得到地址
#bootp DHCP的前身
#BOOTP用於無盤工做站的局域網中,可讓無盤工做站從一箇中心服務器上得到IP地址。經過BOOTP協議能夠爲局域網中的無盤工做站分配動態IP地址,
#這樣就不須要管理員去爲每一個用戶去設置靜態IP地址。
subnet 10.254.239.32 netmask 255.255.255.224 {
range dynamic-bootp 10.254.239.40 10.254.239.60;
option broadcast-address 10.254.239.31;
option routers rtr-239-32-1.example.org;
}
#案例:一個簡單的做用域案例
# A slightly different configuration for an internal subnet.
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.
#
#保留地址:能夠將指定的IP分發給指定的機器,根據網卡的MAC地址來作觸發
#host: 啓用保留。
#hardware:指定客戶端的mac地址
#filename:指定文件名
#server-name:指定下一跳服務器地址
#fixed-address: 指定保留IP地址
#
#
#案例:這個案例中分發給客戶端的不是IP地址信息,而是告訴客戶端去找toccata.fugue.com服務器,而且下載vmunix.passacaglia文件
host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia";
server-name "toccata.fugue.com";
}
# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
# 案例:保留地址,將指定IP(fantasia.fugue.com對應的IP)分給指定客戶端網卡(MAC:08:00:07:26:c0:a5)
host fantasia {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address fantasia.fugue.com;
}
#超級做用域
#超級做用域是DHCP服務中的一種管理功能,使用超級做用域,能夠將多個做用域組合爲單個管理實體。
# You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.
#在局域網中,能夠配置策略根據各個機器的具體信息分配IP地址和其餘的網絡參數,客戶機的具體信息:客戶機可以給dhcp服務提供的信息由兩個,
#第一個就是網卡的dhcp-client-identifier(mac地址),
#第二個就是設備的vendor-class-identifier。