DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种基于UDP协议的网络协议,用于自动为局域网内的客户端分配IP地址、子网掩码、网关、DNS服务器等网络参数,无需管理员手动为每台客户端配置静态IP,极大简化了网络管理工作。
DHCP服务的工作流程分为四个阶段:
确认阶段(DHCP Acknowledge):DHCP服务器接收到请求报文后,广播发送DHCP确认报文,确认客户端的IP地址分配,客户端获取IP地址并完成网络配置。

具体任务描述:
(1)DHCP服务器和DNS服务器的地址都是192.168.10.1/24,有效IP地址段为192.168. 10.1~192.168.10.254,子网掩码是255.255.255.0,网关为192.168.10.254。
(2)客户端可以使用的地址段为192.168.10.31~192.168.10.200,但192.168.10.105为保留地址,保留给Client2。
实验环境:
| 主机类型 | 主机名 | 操作系统 | IP地址 | 网络连接模式 |
|---|---|---|---|---|
| DHCP服务器 | Server01 | openEuler | 192.168.10.1/24 | VMnet1(仅主机模式) |
| DHCP客户端 | Client1 | openEuler | 自动获取 | VMnet1(仅主机模式) |
| DHCP客户端 | Client2 | openEuler | 保留地址 | VMnet1(仅主机模式) |

x# DHCP服务端(Server01)的IP配置[root@Server01 ~]# cd /etc/sysconfig/network-scripts/ #进入到网络配置文件存放的目录[root@Server01 network-scripts]# ls #查看网络配置文件ifcfg-ens33[root@Server01 network-scripts]# vi ifcfg-ens33 #注意:有的网卡名称不叫ens33,以实际为主TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #dhcp改为staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noNAME=ens33UUID=b47127e3-5cef-4b2a-8ff5-da4e43211097DEVICE=ens33ONBOOT=yes #设置网卡开机自启IPADDR=192.168.10.1 #添加IP地址 NETMASK=255.255.255.0 #添加子网掩码,或PREFIX=24
# 只要修改了网络配置文件就要进行下面两步操作[root@Server01 network-scripts]# nmcli con reload #重载网络配置[root@Server01 network-scripts]# nmcli con up ens33 #重新激活连接xxxxxxxxxx[root@Server01 ~]# rpm -q dhcpdhcp-4.4.3-4.oe2203sp3.x86_64(1)导入光盘镜像
选中虚拟机右键→设置,进入虚拟机设置界面:

(2)配置本地仓库源
xxxxxxxxxx# 将光盘镜像挂载到/meida目录下[root@Server01 ~]# mount /dev/cdrom /media/ mount: /media: WARNING: source write-protected, mounted read-only.
# 备份原有网络仓库 [root@Server01 yum.repos.d]# cd /etc/yum.repos.d/[root@Server01 yum.repos.d]# mkdir backup[root@Server01 yum.repos.d]# mv openEuler.repo backup/ [root@Server01 yum.repos.d]# vi local.repo[local]name=local Repobaseurl=file:///media #(/media为光盘挂载目录,即挂载点)gpgcheck=0 # 0为不校验enabled=1 # 1为启用软件仓库源
# 清理并生成缓存[root@Server01 yum.repos.d]# yum clean all[root@Server01 yum.repos.d]# yum makecache下面图片表示配置本地源成功了:

(3)用yum命令安装dhcp软件
xxxxxxxxxx[root@Server01 ~]# yum install -y dhcpxxxxxxxxxx[root@Server01 ~]# vi /etc/dhcp/dhcpd.conf## DHCP Server Configuration file.# see /usr/share/doc/dhcp-server/dhcpd.conf.example# see dhcpd.conf(5) man page#
# 全局配置ddns-update-style none; #设置不支持DNS服务动态更新log-facility local7; #设置定义日志服务
# 局部配置(子网配置,指定网段和子网掩码)subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.31 192.168.10.104; range 192.168.10.106 192.168.10.200; # IP地址池,分配给客户端的IP范围 option domain-name-servers 192.168.10.1; # 为客户端分配DNS地址 option routers 192.168.10.254; # 为客户端分配网关IP default-lease-time 600; # 默认租约时间 max-lease-time 7200; # 最大租约时间}
# 静态IP绑定,指定客户端Client2对应固定IPhost Client2{ hardware ethernet 00:0c:29:cd:b9:cf; # 客户端MAC地址,可以在客户端输入ip addr查看MAC地址 fixed-address 192.168.10.105; # 为该客户端分配的固定IP}| 参 数 | 作 用 |
|---|---|
| ddns-update-style [类型] | 定义DNS服务动态更新的类型,类型包括none(不支持动态更新)、interim(互动更新模式)与ad-hoc(特殊更新模式) |
| default-lease-time 600 | 默认租约时间,单位是秒 |
| max-lease-time 7200 | 最大租约时间,单位是秒 |
| option domain-name-servers 192.168.10.1 | 定义DNS服务器地址 |
| range 192.168.10.10 192.168.10.100 | 定义用于分配的IP地址池 |
| option subnet-mask 255.255.255.0 | 定义客户端的子网掩码 |
| option routers 192.168.10.254 | 定义客户端的网关地址 |
| Hardware 00:0c:29:03:34:02 | 指定网卡接口的类型与MAC地址 |
| fixed-address 192.168.10.105 | 将某个固定的IP地址分配给指定主机 |
xxxxxxxxxx[root@Server01 ~]# systemctl start dhcpdxxxxxxxxxx[root@Server01 ~]# systemctl enable dhcpdxxxxxxxxxx[root@Server01 yum.repos.d]# systemctl status dhcpdxxxxxxxxxx[root@Client1 ~]# cd /etc/sysconfig/network-scripts/ #进入到网络配置文件存放的目录[root@Client1 network-scripts]# ls #查看网络配置文件ifcfg-ens33[root@Client1 network-scripts]# vi ifcfg-ens33 #注意:有的网卡名称不叫ens33,以实际为主修改关键参数如下:
xxxxxxxxxxBOOTPROTO=dhcp (设置为dhcp,自动获取IP)
ONBOOT=yes (开机启动网卡)重载并重新激活连接,使配置生效:
xxxxxxxxxx[root@Client1 network-scripts]# nmcli con reload #重载网络配置[root@Client1 network-scripts]# nmcli con up ens33 #重新激活连接xxxxxxxxxx[root@Client1 network-scripts]# ip addr (查看IP地址)
[root@Client1 network-scripts]# ip route (查看网关)
[root@Client1 network-scripts]# cat /etc/resolv.conf (查看DNS)下图为IP自动获取成功的图:

xxxxxxxxxx[root@Client2 ~]# cd /etc/sysconfig/network-scripts/ #进入到网络配置文件存放的目录[root@Client2 network-scripts]# ls #查看网络配置文件ifcfg-ens33[root@Client2 network-scripts]# vi ifcfg-ens33 #注意:有的网卡名称不叫ens33,以实际为主修改关键参数如下:
xxxxxxxxxxBOOTPROTO=dhcp (设置为dhcp,自动获取IP)
ONBOOT=yes (开机启动网卡)重载并重新激活连接,使配置生效:
xxxxxxxxxx[root@Client2 network-scripts]# nmcli con reload #重载网络配置[root@Client2 network-scripts]# nmcli con up ens33 #重新激活连接xxxxxxxxxx[root@Client2 network-scripts]# ip addr (查看IP地址)下图为静态IP绑定成功的图:

(1)设置DHCP服务器的IP地址:192.168.101.10,子网掩码:255.255.255.0
(2)更改DHCP服务的主配置文件/etc/dhcp/dhcpd.conf,分配给客户端Client1的IP范围为192.168.101.66~192.168.101.99,其中192.168.101.88作为保留地址,保留给Client2。给客户端Client1分配的DNS服务器地址为192.168.101.10,给客户端Client1分配的网关为192.168.101.254,默认租约时间为1小时,最大租约时间为2小时。
(3)重新启动DHCP服务使得配置生效。
(4)在客户端Client1和Client2验证IP获取情况。



xxxxxxxxxx[root@Server01 ~]# cd /etc/sysconfig/network-scripts/ #进入到网络配置文件存放的目录[root@Server01 network-scripts]# ls #查看网络配置文件ifcfg-ens33
# 拷贝一份网络配置文件作为ens36网卡的配置文件[root@Server01 network-scripts]# cp ifcfg-ens33 ifcfg-ens36 [root@Server01 network-scripts]# lsifcfg-ens33 ifcfg-ens36[root@Server01 network-scripts]# vi ifcfg-ens36 #打开ifcfg-ens36做下面图片中的修改
重载并重新激活连接,使配置生效:
xxxxxxxxxx[root@Server01 network-scripts]# nmcli con reload #重载网络配置[root@Server01 network-scripts]# nmcli con up ens36 #重新激活连接xxxxxxxxxx[root@Server01 ~]# vi /etc/dhcp/dhcpd.conf## DHCP Server Configuration file.# see /usr/share/doc/dhcp-server/dhcpd.conf.example# see dhcpd.conf(5) man page#
# 全局配置ddns-update-style none; #设置不支持DNS服务动态更新log-facility local7; #设置定义日志服务
# 局部配置(子网配置,指定网段和子网掩码)subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; # IP地址池,分配给客户端的IP范围 option domain-name-servers 192.168.10.1; # 为客户端分配DNS地址 option routers 192.168.10.2; # 为客户端分配网关IP default-lease-time 600; max-lease-time 7200;}
subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.200 192.168.100.250; # IP地址池,分配给客户端的IP范围 option domain-name-servers 192.168.100.1; # 为客户端分配DNS地址 option routers 192.168.100.3; # 为客户端分配网关IP default-lease-time 600; max-lease-time 7200;}Client1和Client2重新激活连接后查看ip情况
xxxxxxxxxxnmcli con up ens33 #重新激活连接ip addr #查看ipClient1的IP获取情况:

Client2的IP获取情况:
