前提条件:
(1)虚拟机能够联网(如果nat模式不能联网的看另一期)
CentOS7 NAT模式不能联网-CSDN博客
(2)系统是Centos8,因为下载的dhcp-server软件包版本和Centos7不匹配,如果你能成功下载 dhcp-server就行
阿里云镜像: https://mirrors.aliyun.com/centos/




这个版本是最完整版的,具体想要什么版本根据自己的需求
一、了解DHCP
在企业网络中,一般会涉及主机等终端设备进行资源互访的情况,因此每个终端都需要配置IP地址等网络参数才能接入网络。在小型网络中,终端数量很少,可以手动配置IP地址,但是在中大型网络中,终端数量很多,手动配置 IP 地址工作量大,而且配置时容易导致IP地址冲突等错误,DHCP 可以为网络终端动态分配 IP 地址,解决了手工配置IP地址时的各种问题。
DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)是一种简化主机ip地址分配管理的TCP/IP标准协议,是通过服务器集中管理网络上使用的IP地址及其相关配置信息,以减少管理 IP 地址配置的复杂性。Linux 提供了DHCP服务,它允许服务器履行DHCP的职责,并且通过网络自动配置启用了 DHCP功能的客户端。
在使用DHCP时,网络中至少有一台拥有DHCP服务的Server/PC,客户端需要设置成自动获得IP地址。客户端在向服务器请求一个IP地址时,如果DHCP 服务器的IP地址数据中能提供IP,则登记IP信息并分配这个地址给客户端使用,顺带相关的配置选项。
二、DHCP工作过程
当DHCP客户端第一次启动时,它通过一系列的步骤获得 TCP/IP 配置信息和 IP 地址的租期。租期是指 DHCP 客户端从 DHCP 服务器获得完整的 TCP/IP配置后对该TCP/IP配置的保留使用时间。客户端从服务器上获得完整的TCP/IP配置要经过4个过程。
(**1)发现阶段:**由于客户端并不知道DHCP服务器的地址,因此会用0.0.0.0作为源地址,255.255.255.255作为目标地址,向网络上广播一个 DHCP Discover 消息报文,报文中包含了客户端的 MAC地址和NetBIOS名字。与客户端在同一物理网段上的每一台安装了TCP/IP协议的计算机都会收到该广播报文,但只有DHCP服务器才会做出响应。
**(2)提供阶段:**网络中的DHCP服务器收到来自客户端的DHCP Discover报文后,会从IP地址池中挑选一个尚未出租的 IP 地址预分配给 DHCP客户端,并且在网络上广播一个DHCP Offer 响应报文,该报文包含了客户端的MAC地址、服务器所提供的IP地址、子网掩码、租用期限,以及DHCP 服务器本身的 IP 地址。若网络中有多台DHCP服务器,则这些DHCP 服务器都会广播各自的DHCP Offer报文。
**(3)请求阶段:**如果客户端收到网络上多台DHCP服务器的响应报文,则DHCP客户端只接收第一个收到的 DHCP Offer 提供的信息,并向网络发送一个DHCP Request广播报文,以此告诉所有 DHCP 服务器它将选择哪一台 DHCP服务器提供的IP地址。
**(4)确认阶段:**当DHCP 服务器收到DHCP 客户端回答的 DHCP Request广播报文之后,查看报文中服务方的IP地址,确认自己是否被选为服务方。若未选中则撤销预分配的IP地址等信息,若被选择则发送一个 DHCP ACK报文,该报文包括一个租用期限和客户所请求的其他配置信息。客户端收到 DHCP ACK报文后,配置它的TCP/IP属性并加入网络中。

**注:**客户端发送DHCP Discover后,如果没有 DHCP 服务器响应客户端的请求,客户端会随机使用169.254.0.0/16 网段中的一个 IP 地址临时配置本机地址。此后,每隔5分钟发送一个DHCP Discover消息报文,尝试与DHCP服务器进行通信,若联系成功则使用由 DHCP 服务器提供的 IP 地址来更新自己的配置。
三、安装与启动DHCP服务
例题:公司有台 Linux服务器采用静态IP地址配置,现要对同网段的IT部进行IP地址分配,请按以下需求进行DHCP服务器搭配,保障IT部所有PC都可以正常获得正确的网络IP信息。
网段为192.168.159.50/24,DHCP 服务器,网关为192.168.159.1,分配的地址段为192.168. 159.100~192.168.159.150,租约时间默认;Linux PC1模拟自动获取
配置步骤如下:
按需求进行环境准备和信息采集,如表所示。
主机 | 操作系统 | IP地址 | MAC地址 |
---|---|---|---|
Server | Centos8 | 192.168.159.50 | 00:0C:29:93:52:CC |
PC1 | Centos8(克隆) | 自动获取 | 00:0C:29:A2:9F:93 |
(1)先克隆一个Centos系统


(2)更新yum源
cd /etc/yum.repos.d

备份原来的源
mkdir bak

开始更新yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

建立新的元数据缓存
yum makecache

(3) 安装DHCP服务
yum install dhcp-server

(4)安装dhcp-server后在任务管理器上关闭VMnetDHCP服务 并重启虚拟机

(5)在DHCP Server 设置静态ip地址
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.159.50
重载配置信息
nmcli connection up ens33

(6)配置dhcp主配置文件
vi /etc/dhcp/dhcpd.conf
subnet 192.168.159.0 netmask 255.255.255.0{
range dynamic-bootp 192.168.159.100 192.168.159.150;
option routers 192.168.159.1;
}
子网ip和掩码都可以查看


检查配置
dhcpd -t

(7)重启dhcpd服务
systemctl restart dhcpd
(8)使用ifconfig查看 DHCP Server的ip

(9) 在PC1客户端(克隆的Centos系统)配置网络配置文件
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33
将BOOTPROTO 改为dhcp ,ONBOOT 改为yes

BOOTPROTO: 指定引导协议。no
表示不使用引导协议(如DHCP或BOOTP)来获取IP地址。
ONBOOT: 指定是否在系统启动时自动启动网络接口。no
表示在系统启动时不会自动启动这个接口。
(10)在PC1客户端设置动态获取IP地址
nmcli connection modify ens33 ipv4.method auto
nmcli connection up ens33

使用 ifconfig 查看PC1客户端(克隆的Centos系统)的ip

结果已经成功分配ip地址