DHCP服务
DHCP 即 Dynamic Host Configuration Protocol,动态主机配置协议,是一种用于局域网的网络协议。
功能:集中管理、分配 IP 地址,使网络环境中的主机动态获得 IP 地址、网关地址、DNS 服务器地址等信息
采用UDP协议,C/S模式,开启服务时会开启udp端口
dhcp server(服务端):67/udp
dhcpv4 client :68/udp(客户端)
dhcpv6 client:546/udp
DHCP流程
客户端获取 IP 的流程
客户端获取 IP 地址的过程遵循 DHCP 协议,通常包含四个主要阶段:
1. DHCP 发现(DHCP Discover)
- 客户端操作:当客户端设备(如计算机、手机等)接入网络并需要获取 IP 地址时,会以广播的形式发送一个 DHCP Discover 消息。这个消息会在本地网络中传播,目的是寻找可用的 DHCP 服务器。
- 消息内容:该消息中包含客户端的 MAC 地址等信息,用于唯一标识客户端设备。
2. DHCP 提供(DHCP Offer)
- 服务器响应:网络中的 DHCP 服务器接收到客户端的 DHCP Discover 消息后,会从自己的 IP 地址池中挑选一个可用的 IP 地址,并以广播的形式向客户端发送一个 DHCP Offer 消息。
- 消息内容:此消息包含了 DHCP 服务器为客户端提供的 IP 地址、子网掩码、默认网关、DNS 服务器地址等网络配置信息,同时还会告知客户端该 IP 地址的租用期限。
3. DHCP 请求(DHCP Request)
- 客户端选择:客户端可能会收到多个 DHCP 服务器发送的 DHCP Offer 消息,它会从中选择一个合适的 DHCP 服务器(通常是第一个收到的 Offer),并以广播的形式发送一个 DHCP Request 消息,表明自己接受该服务器提供的 IP 地址。
- 消息内容:该消息中会包含客户端选择的 DHCP 服务器的标识信息,以及请求的 IP 地址等内容。
4. DHCP 确认(DHCP ACK)
- 服务器确认:被客户端选中的 DHCP 服务器接收到客户端的 DHCP Request 消息后,会检查该 IP 地址是否仍然可用。如果可用,服务器会向客户端发送一个 DHCP ACK(Acknowledgment)消息,表示确认客户端可以使用该 IP 地址。
- 消息内容:DHCP ACK 消息会再次确认客户端获得的 IP 地址、子网掩码、默认网关、DNS 服务器地址等配置信息,以及 IP 地址的租用期限。
5. 后续更新和释放
- IP 续租:在 IP 地址的租用期限快到期时,客户端会向 DHCP 服务器发送 DHCP Request 消息,请求续租该 IP 地址。如果服务器同意续租,会再次发送 DHCP ACK 消息,更新租用期限。
- IP 释放:当客户端不再需要使用该 IP 地址时(如设备关机或断开网络连接),会向 DHCP 服务器发送一个 DHCP Release 消息,通知服务器释放该 IP 地址,使其可以被其他客户端使用。
DHCP实验
1、先关闭VM自带的dhcp服务(注意,关掉dhcp服务后,自身将无法获取ip,请给本虚拟机设置静态IP)
展示一下我的静态IP设置
[root@Centos8 ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=ens160 UUID=88d5bd65-94fe-4d7a-88da-15783aea0a9e DEVICE=ens160 ONBOOT=yes IPADDR=192.168.204.139 PREFIX=24 GATEWAY=192.168.204.2 DNS1=192.168.204.2
2、dhcp服务的实现软件
DHCP 服务的实现软件:dhcp ( CentOS7 之前版本) 或 dhcp-server ( CentOS8 中的包名)3、下载并启动yum -y install dhcp-server rpm -ql dhcp-server # 查看包里有什么文件,比如配置文件,服务文件 systemctl enable --now dhcpd
4、启动时可能会报错,服务起不来,因为原始的配置文件是空的,需要更改配置文件
5、修改配置文件
[root@Centos8 ~]#vim /etc/dhcp/dhcpd.conf
6、再次启动
服务端的udp67端口也开启了
7、实验,我们启动另一台虚拟机B(要设置为通过dhcp获取IP)
一开始,先关掉dhcp服务,发现这台机器没有ip(因为vm自带的dhcp服务也关掉了)
然后我在开启dhcp服务,并重启这台虚拟机
发现这台机器有了ip,而且这个IP还是我们分配范围内的IP
同时客户端的udp/68端口也开启了
8、在提供dhcp服务的那台机器上,可以查看IP分配
注意
1、Linux一个网卡允许指定一个静态IP和通过dhcp获取一个ip(比如本身是静态IP,可以通过dhcp服务在获取一个)
yum -y install dhclient
2、这台服务器B需要重新获取IP,如果这台机器重新获取的IP要和旧的保持一致(即通过dhcp服务分配静态IP),可以设置dhcp服务器A的配置文件,绑定B的mac地址和要分配的IP地址(这个IP地址可以不在IP地址分配范围内)
结果
DHCP服务
于 2025-04-07 17:14:58 首次发布