Linux CentOS 8(DHCP的配置与管理)
目录
- 一、项目介绍
- 二、DHCP服务简介
- 三、DHCP工作原理
- 四、配置DHCP服务
- 4.1 项目配置准备
- 4.2 dhcpd配置文件框架与参数说明
- 4.3 登录客户机验证
- 4.4 客户端IP地址的释放与重新申请
- 4.5 保留特定IP地址
一、项目介绍
当计算机中的网络变得多且复杂的时候,逐一为多台计算机去配置IP地址将会变得繁琐不堪。为了更高效地完成这项工作,工程师常会采用动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)来自动为客户端配置IP地址、子网掩码和默认网关等信息。
二、DHCP服务简介
DHCP动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client),并且大部分DHCP协议通信以广播方式进行。DHCP通常被用于局域网环境,主要有两个作用:一是用于内部网或网络服务供应商自动分配IP地址,使客户端动态地获得IP地址、Gateway地址和DNS服务器地址等信息;二是给予用户以内部网管理员身份对所有计算机作集中管理的手段,并提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。
三、DHCP工作原理
由于在IP地址动态获取过程中采用广播方式发送报文,因此要求DHCP客户端和服务器位于同一个网段内。如果DHCP客户端和DHCP服务器位于不同的网段,则需要通过DHCP中继来中继转发DHCP报文。
通过DHCP中继完成动态配置的过程中,客户端与服务器的处理方式与不通过DHCP中继时的处理方式基本相同。下面仅以DHCP客户端与DHCP服务器在同一网段的情况为例,说明DHCP协议的工作过程。
客户端为了动态获取并使用一个合法的IP地址,需要经历以下几个阶段,如图1所示:
-
发现阶段:即DHCP客户端通过发送DHCP Discover报文来寻找DHCP服务器并的阶段。
-
提供阶段:即DHCP服务器通过回复DHCP Offer报文来提供IP地址的阶段。
-
选择阶段:即DHCP客户端通过发送DHCP Request报文来请求某台DHCP服务器提供的IP地址的阶段。
-
确认阶段:即DHCP服务器通过回复DHCP Ask报文来确认所提供的IP地址的阶段。
详细过程:
1)发现阶段
在发现阶段,DHCP客户端通过发送DHCP Discover报文来寻找DHCP服务器。
由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP Discover报文。广播信息中包含DHCP客户端的MAC地址和计算机名,以便DHCP服务器确定是哪个客户端所发送的请求。所有收到DHCP Discover报文的DHCP服务器都会发送回应报文,而DHCP客户端据此也可以知道网络中存在的DHCP服务器的位置。
该DHCP Discover包的源IP地址为0.0.0.0,目标IP地址为255.255.255.255。
2)提供阶段
在提供阶段,DHCP服务器通过发送DHCP Offer报文来回复DHCP客户端。
网络中接收到DHCP Discover报文的DHCP服务器,会选择一个合适的IP地址,连同IP地址租约期限和其他配置信息(如网关地址,域名服务器地址等)一同通过DHCP Offer报文发送给DHCP客户端。
DHCP服务器通过地址池保存可供分配的IP地址和其他配置信息。当DHCP服务器接收到DHCP请求报文后,将从IP地址池中取得空闲的IP地址及其他的参数,并对该IP地址做上标记,最后以广播的方式发送回客户端。
该DHCP Offer包的源IP地址为DHCP服务器的IP地址,目标IP地址为255.255.255.255。
3)选择阶段
在选择阶段,DHCP客户端通过发送DHCP Request报文给客户端请求IP地址。
如果有多台DHCP服务器同时向DHCP客户端回应DHCP Offer报文,则DHCP客户端只接受第一个收到的DHCP Offer报文。并以广播方式向这台服务器发送DHCP Request报文。该报文包含了DHCP客户端自己的MAC地址、接收的租约中的IP地址、提供此租约的DHCP服务器地址等,其他DHCP服务器将收回它们为此DHCP客户端所保留的IP地址租约,以给其他DHCP客户端使用。
该DHCP Request包的源IP地址为0.0.0.0,目标IP地址为255.255.255.255。
4)确认阶段
在确认阶段,DHCP服务器通过发送DHCP Ask报文来回应客户端。
收到DHCP客户端发送的DHCP Request请求报文后,DHCP服务器根据DHCP Request报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则发送DHCP Ask报文作为应答,通知DHCP客户端可以使用分配的IP地址。
DHCP客户端收到DHCP服务器返回的DHCP Ask报文确认报文后,会以广播的方式发送ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送DHCP-Decline报文给DHCP服务器,通知DHCP服务器该地址不可用,并重新申请IP地址。
如果DHCP服务器收到DHCP Request报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP-Nak报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP-Discover报文来请求新的IP地址。
该DHCP Ask包的源IP地址为DHCP服务器的UP地址,目标IP地址为255.255.255.255。
5)获取IP地址后的处理过程
- 客户端重新登录时的IP处理
DHCP客户端获得分配的IP地址后,在每次重登网路时,都只需直接发送DHCP Request报文,DHCP服务器会尝试继续将之前分配的IP地址再发送给客户端,并回应DHCP Ask报文。如果DHCP服务器不能再分配之前那个IP地址(如这个IP已分配给其他客户端使用),那么服务器将会回应客户端DHCP Nack报文给予否认。当客户端收到该报文后,它将再次发送DHCP Discover报文重新请求新的IP地址。
而如果客户端改变了所处的网络,在开机时联系不上DHCP客户端,那么即使租约并未到期,客户端也会将所获得的IP地址释放掉。
- IP地址的续约
DHCP的租约期限一般为8天,客户端一般在租约达到50%时即四天时,会直接向提供租约的DHCP服务器发送DHCP Request报文,请求更新地址租约。如果DHCP服务器应答则获得租约延期。如果DHCP服务器未应答,则在租约达到87.5%时,客户端会再次发送同样的报文请求续约,如果DHCP仍是未应答,则在租约达100%时,客户端发送DHCP Discover报文进行租约申请,如果DHCP始终未应答,那么此时客户端将会放弃当前IP地址,从而获得一个“169”网段的IP地址。
扩展:
a. DHCP服务器在提供阶段为客户端分配IP地址时,服务器首先需要确认所分配的IP没有被网络上的其他设备所使用。DHCP服务器通过发送ICMP Echo Request(ping)报文对分配的IP进行探测。如果在规定的时间内没有应答,那么服务器就会再次发送ping报文。到达规定的次数后,如果仍没有应答,则所分配的IP地址可用。否则将探测的IP地址记录为冲突地址,并重新选择IP地址进行分配。
b. DHCP服务器为客户端分配的IP地址的优先次序如下:
① 与客户端MAC地址或客户端ID静态绑定的IP地址;
②DHCP服务器记录的曾经分配给客户端的IP地址;
③ 客户端发送的DHCP Offer报文中Option 50字段指定的IP地址;
④ 在DHCP地址池中,顺序查找可供分配的IP地址,最先找到的IP地址;
⑤如果未找到可用的IP地址,则依次查询租约过期、曾经发生过冲突的IP地址,如果找到则进行分配,否则将不予处理。
四、配置DHCP服务
4.1 项目配置准备
(1) 部署DHCP服务之前应该先进行IP地址规划,明确哪些IP地址用于哪些客户端,哪些IP地址用于手工指定的主机上。同时,用于手工配置的IP地址,一定要排除掉保留地址,或者采用地址池之外的可用IP地址,否则会造成IP地址冲突。
(2) DHCP服务器主机与客户端能相互连通。
(3) 在原始的Linux上默认没有安装DHCP,先搭好yum
仓库源,再运行“yum install dhcp-server
” 安装DHCP服务。Linux系统中的DHCP服务的软件名为dhcp
,服务名为dhcpd
。
(4) 安装完成之后,执行“systemctl enable dhcpd
” 命令将服务设置为开机自动运行。
[root@localhost ~]# yum install dhcp-server -y
[root@localhost ~]# systemctl enable dhcpd
(5) 复制样例文件到主配置文件。
[root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
4.2 dhcpd配置文件框架与参数说明
(1)在dhcpd.conf
中,每行开头的“#
”表示注释,除了注释以外,其他每一行都应以“;
”结尾。
(2)dhcpd.conf
配置文件的格式如下:
#全局配置
全局参数/选项; #全局生效
#局部配置
声明 {
配置选项/局部参数;
配置选项/局部参数; #局部生效
……
}
全局配置 可以包含参数或选项,该部分对整个DHCP服务器生效。
局部配置 通常由声明部分来表示,该部分仅对局部生效,比如只对某个IP作用域生效。
(3)基础参数介绍:
配置内容,如图2所示:
参数 | 说明 |
---|---|
option domain-name-servers 192.168.1.1 | 定义DNS服务器IP地址 |
subnet 192.168.10.0 netmask 255.255.255.0 | 定义客户端的子网掩码 |
range 192.168.10.11 192.168.10.30 | 定义用于分配的IP地址池 |
option routers 192.168.10.254 | 定义客户端的网关地址 |
default-lease-time 600 | 默认超过时间,单位是秒 |
max-lease-time 7200 | 最大超时时间,单位是秒 |
host client(主机名) | 主机名可由自己随意命名 |
hardware ethernet xxx | 指定网卡接口的类型与MAC地址 |
fixed-address 192.168.10.16 | 将某个固定的IP地址分配给指定主机 |
(4)最后重启dhcpd服务。
[root@localhost network-scripts]# systemctl restart dhcpd #重启dhcpd服务
4.3 登录客户机验证
(1)由于虚拟机 VMWare 本身默认开启了 DHCP 服务,如果不将它关闭,客户端可能会获取到其他地址池的IP地址。所以我们需要将 VMnet1 和 VMnet8 的 DHCP 服务关闭。
打开 VMWare 虚拟机功能选项卡中的【编辑】,打开【虚拟网络编辑器】,然后在弹出的界面中分别给 VMnet1 和 VMnet8 取消勾选【使用本地 DHCP 服务将 IP 地址分配给虚拟机】,如图3所示:
(2)本次实验使用的客户机为Windows7。对应地,打开【网络共享中心】,在网卡的属性配置中,给IPv4的网络勾选【自动获得IP地址】,如图4所示:
(3)等待IP地址获取结束后,打开系统的【命令提示符】,输入“ipconfig /all
‘查看IP地址等信息,如图5所示:
(4)可以看见该客户机的IP地址是由 DHCP 服务自动获取的,并且属于原先配置的IP地址池范围内。
4.4 客户端IP地址的释放与重新申请
(1)在【命令提示符】中输入ipconfig /release
释放已获得的IP地址,再输入ipconfig /renew
进行重新申请IP地址。
\Users\client > ipconfig /release #释放已获得的IP地址
\Users\client > ipconfig /renew #重新申请IP地址
(2)IP地址的分别变化,如图6、图7所示:
4.5 保留特定IP地址
(1)保留IP地址是通过将客户端的MAC地址与需要保留的IP地址进行绑定而实现的。整个配置需要用到host
声明和hardware
、fixed-address
参数。
host
声明和hardware
、fixed-address
参数在上文【基础参数介绍】已有说明。指定网卡的MAC地址需要在对应客户端上查询,在【命令提示符】中输入“ipconfig /all
“ 后可获知主机的MAC地址。
(2)在dhcpd.conf配置文件中添加以下配置信息,如图8所示:
[root@localhost network-scripts]# systemctl restart dhcpd #重启dhcpd服务
(3)在客户端上验证
在客户端上的【命令提示符】中输入,如图9所示:
\Users\client > ipconfig /release #释放已获得的IP地址
\Users\client > ipconfig /renew #重新申请IP地址
(4)可以看见该客户机的IP地址是由DHCP服务自动获取的,并且是DHCP服务器配置里所指定的保留IP地址。
制作成员: 裕新
排版: 裕新
初审: 杨佳佳
复审: 二月二