DHCP服务

一、什么是DHCP

自动分配关键网络参数,包括 IP 地址、子网掩码、网关、DNS 服务器地址。

避免手动设置导致的 IP 地址冲突,实现网络配置的统一管理。

简化网络维护,更换网络参数时无需逐台设备手动修改。

应用场景

  • 家庭路由器默认开启 DHCP 服务,让手机、电脑等设备连网后自动获取配置。
  • 企业局域网中,通过 DHCP 服务器统一管理大量办公设备的网络配置。

DHCP协议

Dynamic Host Configuration Protocol ,动态主机配置协议

作用:动态的进行IP地址分配

服务端的监听端口 67/udp

客户端监听端口 68/udp

网络架构 C/S:client/server

DHCP的分配方式

  • 手动分配:固定不变,工程师进行地址绑定

  • 自动分配:但是不进行地址回收

  • 动态分配:进行地址回收

DHCP的优势

  • 提高配置效率

  • 减少配置错误

DHCP工作流程

DHCP 服务给客户端提供服务的核心是四步握手流程,全程通过广播或单播通信完成,无需手动干预。

第一步:发现阶段(DHCP Discover)

  • 客户端刚接入网络时没有 IP 地址,会发送广播数据包,寻找网络中的 DHCP 服务器。
  • 数据包中包含客户端的 MAC 地址,用于服务器识别设备。

第二步:提供阶段(DHCP Offer)

  • 网络中的 DHCP 服务器收到广播后,会从地址池中挑选一个可用 IP 地址。
  • 服务器向客户端发送包含 IP 地址、子网掩码、网关、DNS 等配置信息的响应数据包。

第三步:请求阶段(DHCP Request)

  • 客户端可能收到多个 DHCP 服务器的 Offer,通常选择第一个收到的配置。
  • 客户端再次发送广播,告知所有 DHCP 服务器自己选择的配置,同时确认使用该 IP。

第四步:确认阶段(DHCP Acknowledge)

  • 被选中的 DHCP 服务器发送确认数据包,正式将 IP 地址等配置分配给客户端。
  • 客户端接收后,即可使用这些参数接入网络,完成服务流程。

注意

​ 同一个网络下不允许存在多个DHCP服务器。(可以部署多台DHCP服务,但IP地址池必须完全不相同,所以就不是在一个网络中了)

DHCP 租约期限

租约期限是 DHCP 服务器规定的 "IP 地址使用权有效期",本质是服务器和客户端的 "约定":在有效期内,客户端可独占该 IP;过期后需重新确认使用权。

租约期限的设置原则

  • 设备在线越稳定,租约可越长(减少网络通信量);
  • 设备流动性越强(如公共 WiFi),租约应越短(快速释放 IP 给新设备);
  • 网络 IP 资源越紧张,租约越短(提高 IP 利用率)

DHCP 租约的核心是 "自动管理",客户端会主动发起更新,无需手动干预

1. 自动续租
  • 触发时间
  1. 租约过半:客户端向原 DHCP 服务器发送 DHCP Request(续租请求)(单播通信,无需广播);
  2. 若第一次请求未收到响应(如服务器故障),则在租约到期前 75%再次尝试;
  • 服务器响应
  1. 服务器同意续租:返回 DHCP ACK,确认延长租约(通常延续原租约时长);
  2. 服务器拒绝续租(如 IP 已分配给其他设备):返回 DHCP NAK,客户端需提前释放 IP,重新发起 IP 获取。
2. 租约过期后:重新获取 IP

若客户端因故障、离线等原因未完成续租,租约到期后:

  • 客户端会立即释放当前 IP,恢复 "无 IP 状态";
  • 重新执行 DHCP 四步握手流程(Discover→Offer→Request→Acknowledge),获取新的 IP 地址(可能是原 IP,也可能是新 IP,取决于服务器地址池状态)。
3. 手动更新(主动释放 / 重新获取)

若需手动刷新 IP(如网络配置变更后),可通过设备命令操作:

Linux:在终端中执行:

复制代码
# Linux(以eth0网卡为例,需替换为实际网卡名如ens33)
dhclient -r eth0  # 释放IP
dhclient eth0     # 重新获取IP

二、DHCP安装与配置

首先要给DHCP服务器配置一个静态IP,

bash 复制代码
nmcli c m ens160(你的网卡名) ipv4.add 192.168.1.253/24 ipv4.method manual

安装DHCP服务软件包

bash 复制代码
yum install -y dhcp-server

配置文件

配置文件存储路径 /etc/dhcp

默认配置文件副本路径 /usr/share/doc/dhcp-4.2.5/

数据文件存储路径 /var/lib/dhcpd

核心配置文件 /etc/dhcp/dhcpd.conf

将副本文件拷贝到 /etc/dhcp中,并修改以下字段

subnet 10.5.5.0 netmask 255.255.255.224 { ##定义分配的网段和子网掩码

range 10.5.5.26 10.5.5.30; ##定义分配地址段的地址范围

option domain-name-servers ns1.internal.example.org;

option domain-name "internal.example.org";

option routers 10.5.5.1; ###定义分配的网关地址

option broadcast-address 10.5.5.31; ###定义地址段的广播地址

default-lease-time 600;

max-lease-time 7200;

}

可以按照主机的MAC地址设置分配固定IP,而不是随机分配

host fantasia {

hardware ethernet 08:00:07:26:c0:a5; ###固定分配地址的主机的MAC地址

fixed-address fantasia.fugue.com; ###需要进行分配的IP地址

}

启动服务

bash 复制代码
systemctl start dhcpd

如果需要配置多个地址池,只需要添加第二个IP分配字段即可,但是要有同网段的网卡作为DHCP服务器IP

例如

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100 192.168.1.200; # 地址池

option routers 192.168.1.1; # 网关

option subnet-mask 255.255.255.0; # 子网掩码

}

第二个子网

subnet 192.168.2.0 netmask 255.255.255.0 {

range 192.168.2.100 192.168.2.200;

option routers 192.168.2.1;

}

相关推荐
农夫山泉2号2 小时前
【c++】——c++编译的so中函数有额外的字符
java·服务器·c++
流形填表2 小时前
AI如何做SEO?
运维·人工智能·自动化·seo
[J] 一坚2 小时前
Shell 脚本解锁 curl/iptables/Nginx 日志分析等实战用法
linux·服务器·正则表达式·系统架构·自动化
点亮一颗LED(从入门到放弃)2 小时前
字符设备驱动(5)
linux·运维·服务器
weixin_448119942 小时前
Datawhale 用Markdown语法轻松开发AI应用202512 第1次作业
运维·服务器
知识分享小能手2 小时前
CentOS Stream 9入门学习教程,从入门到精通,Linux日志分析工具及应用 —语法详解与实战案例(17)
linux·学习·centos
ZXF_H3 小时前
Linux tcpdump抓包实践(以http为例)
linux·http·wireshark·tcpdump
悄悄敲敲敲3 小时前
Linux:信号(二)
linux·操作系统·信号
Felven3 小时前
飞腾D2000 GPIO中断调试
linux·gpio·中断·d2000