第2章:进阶Linux系统——第3节:配置与管理DHCP服务器
摘要:本文详细介绍了DHCP(动态主机配置协议)的基本概念、工作原理及在CentOS/RHEL7上的部署方法。主要内容包括:DHCP的核心角色(服务器/客户端)、IP分配方式、四阶段工作原理(Discover-Offer-Request-Ack)及续租机制;服务器安装步骤(YUM配置、软件安装)、主配置文件详解(参数、声明、选项)及完整配置案例;服务管理命令、客户端配置方法及常见故障排查;并扩展介
·
目录
一、DHCP 基础概念
1. 定义
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议):TCP/IP 标准协议,用于集中管理、自动分配 IP 地址、子网掩码、网关、DNS 等网络参数,避免手动配置的繁琐与冲突。
2. 核心角色
- DHCP 服务器:使用固定 IP,维护 IP 地址池,响应客户端请求并分配参数。
- DHCP 客户端:开机 / 联网时主动请求网络配置,自动获取参数。
3. 分配方式
- 动态分配:IP 有租期,到期回收或续租,最常用。
- 自动分配:永久分配一个固定 IP 给客户端。
- 手动分配(绑定):根据 MAC 地址固定分配 IP,用于服务器、打印机等。
4. 优缺点
- 优点
- 自动化配置,减少管理员工作量。
- 避免 IP 地址冲突。
- 支持固定 IP 绑定,跨子网移动无需重配(配合中继)。
- 集中管理,便于维护。
- 缺点
- 无法检测非 DHCP 客户端已占用的 IP。
- 多 DHCP 服务器间无法同步租约。
- 默认不能跨路由器,需 DHCP 中继。
二、DHCP 工作原理(四阶段 + 续租)
1. 完整 IP 获取四步流程
- DHCP Discover(发现)客户端以0.0.0.0 为源 IP、255.255.255.255 为广播目标 IP,发送请求寻找 DHCP 服务器。
- DHCP Offer(提供)服务器从地址池中选取未分配 IP,广播回应客户端,包含 IP、掩码、网关、DNS、租期等。
- DHCP Request(请求)客户端选择第一个收到的 Offer,广播通知所有服务器:已选中某台服务器的 IP。
- DHCP Ack(确认)被选中的服务器发送确认包,标记 IP 已租用,客户端完成配置并绑定网卡。
2. 续租机制
- 租期到达 **50%** 时,客户端单播发送 Request 请求续租。
- 服务器回复 Ack 则续租成功;无响应则等到 **87.5%** 再广播请求。
- 租期完全到期未续租,IP 被回收。
三、部署前准备(必做)
1. 服务器要求
- 安装 RHEL/CentOS 7 系统,配置静态 IP(不能动态获取)。
- 关闭防火墙与 SELinux(避免拦截 DHCP 报文)。
- 准备可用 IP 地址段,规划静态地址、动态地址池、保留地址。
- 虚拟机网络:仅主机模式(VMnet1),关闭 VMware 自带 DHCP 功能。
2. 网络规划示例
- 网段:192.168.10.0/24
- 网关:192.168.10.254
- 静态 IP:192.168.10.1~30(服务器使用)
- 动态 IP:192.168.10.31~200
- 保留 IP:105、107(绑定 MAC 使用)
四、DHCP 服务器安装(CentOS/RHEL 7)
1. 检查是否安装
rpm -qa | grep dhcp
2. 挂载镜像并配置 YUM 源
# 创建挂载目录
mkdir /iso
# 挂载光盘
mount /dev/cdrom /iso
# 编辑YUM源
vim /etc/yum.repos.d/dvd.repo
dvd.repo 内容
[rhel]
name=rhel
baseurl=file:///iso
enabled=1
gpgcheck=0
3. 安装 DHCP 服务
yum clean all
yum install dhcp -y
4. 安装后验证
rpm -qa | grep dhcp
# 应出现:dhcp、dhcp-common、dhcp-libs
五、DHCP 主配置文件详解
1. 配置文件路径
- RHEL/CentOS 7:
/etc/dhcp/dhcpd.conf - 默认是空文件,需参考模板:
/usr/share/doc/dhcp*/dhcpd.conf.example
2. 配置文件三部分
- Parameters(参数):定义租期、DNS 更新方式等。
- Declarations(声明):定义子网、地址池、主机绑定等。
- Options(选项):以
option开头,配置网关、DNS、掩码等。
3. 常用配置项速查
| 配置项 | 作用 |
|---|---|
| ddns-update-style none | 关闭 DNS 动态更新 |
| default-lease-time 600 | 默认租期(秒) |
| max-lease-time 7200 | 最大租期(秒) |
| subnet 192.168.10.0 netmask 255.255.255.0 | 定义子网作用域 |
| range 192.168.10.31 192.168.10.200 | 动态地址池 |
| option routers 192.168.10.254 | 客户端网关 |
| option subnet-mask 255.255.255.0 | 子网掩码 |
| option domain-name-servers 192.168.10.1 | DNS 服务器 |
| option broadcast-address 192.168.10.255 | 广播地址 |
| host 主机名 | 定义保留主机 |
| hardware ethernet MAC | 绑定 MAC 地址 |
| fixed-address IP | 分配固定 IP |
4. 租约数据库
- 路径:
/var/lib/dhcpd/dhcpd.leases - 记录所有已分配 IP、MAC、租期、客户端主机名,可直接查看。
六、完整配置案例(可直接复制)
需求
- 网段:192.168.10.0/24
- 动态 IP:31~104、106、108~200
- 固定 IP:105 绑定 MAC:00:0c:29:03:34:02
- DNS:192.168.10.1
- 网关:192.168.10.254
配置文件/etc/dhcp/dhcpd.conf
ddns-update-style none;
log-facility local7;
default-lease-time 600;
max-lease-time 7200;
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.106;
range 192.168.10.108 192.168.10.200;
option domain-name "myDHCP.smile.com";
option domain-name-servers 192.168.10.1;
option routers 192.168.10.254;
option broadcast-address 192.168.10.255;
}
# 固定IP绑定
host Client2{
hardware ethernet 00:0c:29:03:34:02;
fixed-address 192.168.10.105;
}
七、服务管理命令
# 启动
systemctl start dhcpd
# 重启
systemctl restart dhcpd
# 停止
systemctl stop dhcpd
# 开机自启
systemctl enable dhcpd
# 查看状态
systemctl status dhcpd
# 手动排错(启动失败时用)
dhcpd
八、客户端配置
1. Linux 客户端
编辑网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改内容
BOOTPROTO=dhcp
ONBOOT=yes
重启网络
systemctl restart network
强制获取
dhclient 网卡名
# 查看IP
ifconfig/ip a
2. Windows 客户端
- 设置:网络连接 → IPv4 → 自动获取 IP/DNS。
- 命令
ipconfig /release # 释放IP
ipconfig /renew # 重新获取
ipconfig /all # 查看详细信息
九、启动失败常见原因(必背)
- 配置文件语法错误(少分号、括号不匹配)。
- 服务器未配置静态 IP。
- 子网声明与服务器 IP 不在同一网段。
- 配置文件路径错误(7 版本在
/etc/dhcp/下)。 - 地址池范围写错或与保留 IP 冲突。
- 防火墙 / SELinux 未关闭。
十、扩展知识(进阶)
1. 多作用域配置
服务器多网卡,每个网卡对应一个子网,配置多个subnet段。
subnet 172.16.36.0 netmask 255.255.255.0 { ... }
subnet 172.16.42.0 netmask 255.255.255.0 { ... }
2. 超级作用域
将多个网段合并为一个逻辑作用域,用于单网卡多网段场景。
shared-network mynet {
subnet 192.168.1.0 netmask 255.255.255.0 { ... }
subnet 192.168.2.0 netmask 255.255.255.0 { ... }
}
3. DHCP 中继(跨网段分配)
- 场景:客户端与服务器不在同一子网。
- 命令:
dhcrelay DHCP服务器IP - 路由器需开启DHCP 中继 / BOOTP 转发。
4. DHCP 高可用(双机热备)
- 遵循80/20 规则:主服务器分配 80% 地址,备用分配 20%。
- 主服务器故障时,备用接管服务,避免网络瘫痪。
5. 安全加固
- 只监听指定网卡:
/etc/sysconfig/dhcpd中设置DHCPDARGS="ens33"。 - 定期清理过期租约,备份
dhcpd.leases。 - 禁止非法 DHCP 服务器(私设 DHCP 会导致客户端获取错误 IP)。
十一、常用命令总结
| 用途 | 命令 | |
|---|---|---|
| 查看 MAC | ifconfig/ip link | |
| 查看 ARP 缓存 | arp -n | |
| 检查 DHCP 安装 | rpm -qa | grep dhcp |
| 安装 DHCP | yum install dhcp -y | |
| 重启服务 | systemctl restart dhcpd | |
| 查看租约 | cat /var/lib/dhcpd/dhcpd.leases | |
| 客户端获取 | dhclient | |
| Windows 释放 | ipconfig /release |
更多推荐
所有评论(0)