DHCP的原理及配置
目录
2.2 DHCP的分配方式(自动分配、手动分配、动态分配)*
1.什么是DHCP以及DHCP的好处
1.1 什么是DHCP
DHCP(动态主机配置协议)是由 Internet 工作任务小组设计开发的,专门用于为 TCP/IP网络中的计算机自动分配TCP/IP参数的协议,是一个应用层协议,使用UDP的67和68端口。DHCP的前身是BOOTP协议(BootstrapProtocol),BOOTP被创建出来为连接到网络中的设备自动分配地址,后来被DHCP取代了,DHCP比BOOTP更加复杂,功能更强大。(如果使用wireshark抓包过滤协议是用bootp而不是dhcp)
DHCP提供了网络配置参数的动态分配,如IP地址、子网掩码、默认网关、DNS服务器地址等,使得客户端设备能够自动获取所需的网络配置信息,无需手动配置,简化了网络管理和设备配置,减少了人工配置的负担和出错的可能性。
网络工程师任务小组 组织指定,用来简化主机地址分配管理
主要分配以下,入网参数
-IP地址/子网掩码/广播地址
-默认网关地址、DNS服务器地址
-PXE引导设置(TFTP服务器地址、引导文件名)
1.2 DHCP的好处
由于上网时间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的 IP 地址,不仅造 成了 IP 地址的浪费,也会为 ISP 服务商带来高额的维护成本。而使用 DHCP 服务则有以下 好处。
减少管理员的工作量。
避免输入错误的可能。
避免 IP 地址冲突。
当网络更改 IP 地址段时,不需要再重新配置每个用户的 IP 地址。
提高了 IP 地址的利用率。
方便客户端的配置。
1.3为什么使用DHCP
DHCP 服务避免了因手动设置 IP 地址所产生的错误,同时也避免了把一个 IP 地址分配给多台工作站所造成的地址冲突。DHCP 提供了安全、可靠且简单的 TCP/IP 网络设置,降低了配置 IP 地址的负担
2.DHCP的模式与分配方式
2.1 C/S模式(客户端/服务端模式)
在网络中架设一台专用的 DHCP 服务器,负责集中分配 各种网络地址参数(主要包括 IP 地址、子网掩码、广播地址、默认网关地址、DNS 服务器地址);其他主机作为 DHCP 客户机,将网卡配置为自动获取地址,即可与 DHCP 服务器进行通信,完成自动配置过程
DHCP 是 C/S 模式,DHCP 服务端和客户端需要保持通信,DHCP 基于 UDP 协议,双方都有可能会主动向对方发起通信,因此双方都需要监听端口。
Server 端:DHCP Server(运行 dhcp 服务)
UDP 服务:监听端口 67(bootps) (bootps 服务端 67 )
Client 端:DHCP Client(运行 dhcp 程序)
UDP 服务:监听端口 68 (bootpc) (bootpc 客户端 68 )
2.2 DHCP的分配方式(自动分配、手动分配、动态分配)*
自动分配:当 DHCP 客户机第一次成功地从 DHCP 服务器获取到一个 IP 地址后, 就永久地使用这个 IP 地址。 (分配到一个IP后永久使用)
手动分配:由 DHCP 服务器管理员专门指定 IP 地址。(把MAC地址和IP地址绑定)
动态分配:当 DHCP 客户机第一次从 DHCP 服务器获取到 IP 地址后,并非永久地使用该地址,而是在每次使用完后,DHCP 客户机就会释放这个 IP 地址,供其他客户机使用。(使用完后释放IP,供其他用户使用)
3.DHCP工作原理 (DHCP租约过程)*
DHCP租约过程:客户机从DHCP服务器获取IP地址的过程
DHCP工作原理 :广播进行,先到先得
一个网络中只能有一个DHCP(有两个的话可能会分配相同的ip、,导致ip冲突)
如果有两个DHCP客户机同时向服务器请求IP地址,就看谁快,先到先得
租约过程:
(1)客户机请求 IP 地址:
当一个 DHCP 客户机启动时,客户机还没有 IP 地址,所以客户机要通过 DHCP 获取一个合法的地址。此时DHCP客户机以广播方式发送 DHCP Discover 发现信息来寻找 DHCP 服务器
(2)服务器响应:
当 DHCP 服务器接收到来自客户机请求 IP 地址的信息时,它就在自己的 IP 地址池中 查找是否有合法的 IP 地址提供给客户机。如果有,DHCP 服务器就将此 IP 地址做上标记, 加入到 DHCP Offer 的消息中,然后 DHCP 服务器广播一则 DHCP Offer 消息 (除了DHCP客户机以外的,收到消息后自动丢弃)
(3)客户机选择IP 地址:
DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP 服务器将该地址保留,这样该地址就不能再分配给另一个 DHCP 客户机。之后 DHCP 客户机会向服务器发送 DHCP Request 消息。
(4)服务器确定租约:
DHCP 服务器接收到 DHCP Request 消息后,以 DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有 IP 地址的有效租约和其他可配置的信息。当客户机收到 DHCP ACK 消息时,它就配置了 IP 地址,完成 TCP/IP 的初始化。

##举例来说:租约过程就是租房过程吧
1)我广播给所有中介我要租房
2)中介公司在房源里找到符合我要求的房子,广播给所有用户
3)我收到房子信息,确定要这个房子了(中介不能再给别人了),向中介发送确认信息
4)中介收到确认信息,广播给所有用户租房信息,我就可以签订合同了
3.1 关于重新登录的情况
DHCP 客户机每次重新登录网络时,不需要再发送 DHCP Discover 信息,而是直接发送包含前一次所分配的 IP 地址的 DHCP Request 请求信息。 (网线拔了重插就是重新登录的过程)
3.2 更新租约
租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP Request报文,请求更新IP地址租约。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP Request报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
为什么会获得169.254.0.0/16网段的地址
一开始,DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。任何接收到DHCPDISCOVER广播包并且能够提供IP地址的DHCP服务器,都会通过UDP端口68给客户机回应一个DHCPOFFER广播包,提供一个IP地址。但是,DHCP客户机在发出IP租用请求的DHCP DISCOVER广播包后,将花费1秒钟的时间等待DHCP服务器的回应,如果1秒钟没有服务器的回应,它会将这一广播包重新广播四次(以2,4,8和16秒为间隔,加上1~1000毫秒之间随机长度的时间)。四次之后,如果仍未能收到服务器的回应,则运行Windows的DHCP客户机将从169.254.0.0/16这个自动保留的私有IP地址(APIPA)中选用一个IP地址,而运行其他操作系统的DHCP客户机将无法获得IP地址。
为了便于理解,我们把 DHCP 客户机比做餐馆里的客人,DHCP 服务器工作原理当中,服务器比做服务员(一个餐馆里也可以有多个服务员),IP 地址比做客户需要的食物。那么可以这样描述整个过程:客人走进餐馆,问:“有没有服务员啊?”(DHCP discover),多个服务员同时回答:“有,我这有鸡翅”“有,我这有汉堡”(DHCP offer)。客人说:“好吧,我要一份汉堡”(DHCP request,这个客人比较死板,总是选择第一次听到的食物),端着汉堡的服务员回应了一声:“来啦”(DHCP ack),并把食物端到客人面前,供其享用(将网卡和 IP 地址绑定)。客人下次来的时候,就直接找上次那个服务员点自己喜欢的汉堡了(DHCP request),如果还有汉堡,服务员会再次确认并上菜(DHCP ack),而如果已经卖完了,服务员则会告诉客人:“不好意思,已经卖完了”(DHCP nack)。当然,服务员隔一段时间会来收拾一次桌子,除非客人特别说明这菜还要继续吃的,服务员会将剩菜端走。
4.安装DHCP服务
4.1 实验配置步骤
1、yum安装dhcp服务
2、配置dhcp配置文件
3、启动服务
4、查看端口
5、验证服务
4.2 DHCP全局配置
rpm -q dhcp //查看是否安装dhcp
yum -y install dhcp //安装dhcprpm -qc dhcp //查看配置文件有哪些
cat /etc/dhcp/dhcpd.conf
//服务刚安装好,配置文件是没有任何东西的,需要把模板拷贝过来
cp -fp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
//拷贝模板起名为dhcpd.conf
vim /etc/dhcp/dhcpd.conf //编辑配置文件
7 option domain-name "example.org"; //指定默认搜索域,本地域名
8 option domain-name-servers ns1.example.org, ns2.example.org; //指定 DNS 服务器地址,多台用逗号隔开
10 default-lease-time 600; //默认租约为600秒
11max-lease-time 7200; //最大租约为2小时,在客户端没有特殊的租约时间请求的时候,都会统一的指 派默认租约时间(多数情况)。 如果客户端请求了自定义的租约时间,服务器将会启用最大租约时间作为限制,客户端自己请求的租约时间不能大于该值
00-0C-29-3B-6B-75
dre.
dns-update-style none; //禁用 DNS 动态更新,提高DHCP的效率,减少带宽的使用,默认注释了
ignore client-updates: //与ddns-update-style设定相关,客户端可以通过DHCP服务器来更新DNS相关信息,这里暂时不予考虑,所以设置成igo
注:以上为DHCP全局配置

![]()


5.DHCP局部配置并且测试
5.1 subnet 网段声明
一台 DHCP 服务器可以为多个网段提供服务,因此 subnet 网段声明必须有而且可以有多个。
注意别少了每行结尾的分号!
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.190.0 netmask 255.255.255.0 { //声明网段地址
#default-lease-time 6000; //默认租约为6000秒,当和全局设置重复时,subnet里的配置生效
range 192.168.190.110 192.168.10.120; //设置地址池
#option broadcast-address 192.168.10.255; //定义广播地址
option routers 192.168.10.100; //指定默认网关地址
option domain-name-servers 114.114.114.114; //定义DNS服务器
}
客户端验证:
ipconfig /release
ipconfig /renew
dhcp默认日志记录在/var/log/messages
xshell:


客户端验证:
打开windows虚拟机的cmd
ipconfig /release
ipconfig /renew

5.2 客户机预留指定的固定ip地址
host 声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的 IP 地址(保留地址),这些主机的共同特点是要求每次获取的 IP 地址相同,以确保服务的稳定性。
host win10 { //host 后面可自定义名称
hardware ethernet 00-0C-29-79-19-0B; //hardware ethernet:mac地址
fixed-address 192.168.190.111; //保留地址
}
验证并且查看
在服务器端可以通过查看租约文件/var/lib/dhcpd/dhcpd.leases来了解服务器的 IP 地址分配情况,具体操作如下。
该租约文件中记录了分配出去的每个 IP 地址信息(租约记录), 包括 IP 地址、客户端的 MAC 地址、租用的起始时间和结束时间等
该文件初始为空,且无需管理员手工配置,但管理员可以浏览此文件查看DHCP服务器的运行情况
文件包含租期声明,每次一个租期被获取,更新或释放,它的新值就被记录到文件的末尾
注意dhcpd.leases的时间记录采用GMT(格林威治)时间,而不是本地时区的时间,要查看GMT时间用date –u
[root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases
lease 192.168.10.100 { //网段
starts 3 2021/06/23 07:06:02; //租约开始时间
ends 3 2021/06/23 07:08:31; //租约结束时间
tstp 3 2021/06/23 07:08:31; //客户端最后一次租用时间
cltt 3 2021/06/23 07:06:02;
binding state free; //
hardware ethernet 00:0c:29:be:10:c7; //mac地址
uid "\001\000\014)\276\020\307"; //唯一标识符
#查看到DHCP 请求过程
[root@localhost ~]# dhclient -d ens33 ##-d 选项使其在前台运行
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens33/00:0c:29:48:7c:a1
Sending on LPF/ens33/00:0c:29:48:7c:a1
Sending on Socket/fallback
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 7 (xid=0x6f30980e) #DHCP 发现
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x6f30980e) ## DHCP 请求
DHCPOFFER from 192.168.10.40 ##提供
DHCPACK from 192.168.10.40 (xid=0x6f30980e) #确认
bound to 192.168.10.201 -- renewal in 253 seconds.
在服务器端可以通过查看租约文件/var/lib/dhcpd/dhcpd.leases 来了解服务器的IP 地址分配情况
租约文件中记录了分配出去的每个 IP 地址信息(租约记录), 包括 IP 地址、客户端的 MAC 地址、租用的起始时间和结束时间等。
客户端需要通过 dhclient 命令释放获取的 IP 租约时,可以结合“-r”选项。此时再通过执行ifconfig 命令就看不到分配的 IP 地址了。
[root@localhost ~]# dhclient -r ens33 //释放网络端口(别做,端口会被干掉)
/var/lib/dhclient/dhclient.leases //linux的dhcp客户端租约文件
lease {
interface "ens33";
fixed-address 192.168.192.14;
option subnet-mask 255.255.255.0;
option dhcp-lease-time 600;
option dhcp-message-type 5;
option dhcp-server-identifier 192.168.192.100;
option domain-name "www.kgc.com";
renew 3 2021/05/19 20:42:06; renew:下一次去找dhcpd服务器续约的时间点。= 租约时间的50%
rebind 3 2021/05/19 20:46:36; rebind:renew失败后,重试的时间点。=租约时间的 85% 左右
expire 3 2021/05/19 20:47:51; expire:过期的时间点
}
注:每次续约成功,就会更新一次租约文件。
打开win10虚拟机的cmd
ifconfig /all

xshell:


![]()

总结:完成了linux服务器作为DHCP的服务器的功能 以及实现华为的DHCP中继来实现转发
Linux客户端使用DHCP 动态获取IP
#方法一:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=dhcp
ifdown ens33 ; ifup ens33
#方法二:
dhclient -d ens33
查看租约文件
less /var/lib/dhcpd/dhcpd.lease
更多推荐


所有评论(0)