Lazy loaded image
DHCP 服务配置
字数 2437阅读时长 7 分钟
2026-2-23
2026-2-23
author
type
Post
status
Published
date
Feb 23, 2026
slug
summary
tags
Linux
服务部署
category
运维
icon
password

一、实验目的

  1. 掌握在 CentOS 7 系统中部署和配置 DHCP 服务器的基本流程。
  1. 理解 DHCP 协议的工作原理及自动分配 IP 地址的过程。
  1. 实现为 Linux 客户端(CentOS)和 Windows 客户端(Win10/Win11)动态分配网络参数(IP、子网掩码、网关、DNS 等)。
  1. 学习通过 MAC 地址绑定实现特定主机的固定 IP 分配。
  1. 掌握常见故障排查方法,提升网络服务运维能力。

二、实验内容

  1. 在 CentOS 7 上安装并配置 DHCP 服务(dhcpd)。
  1. 编辑主配置文件 /etc/dhcp/dhcpd.conf,设置网络参数:
      • 子网范围
      • 可用地址池
      • 默认网关
      • DNS 服务器
      • 租约时间等
  1. 配置防火墙以允许 DHCP 流量通信。
  1. 启动并启用 DHCP 服务开机自启。
  1. 使用 CentOS 和 Windows 客户机测试 IP 自动获取功能。
  1. 查看租约记录和系统日志验证服务运行状态。
  1. 配置基于 MAC 地址的静态 IP 分配(保留地址)。

三、实验环境与准备

设备类型
操作系统
IP 地址示例
角色
服务器
CentOS 7
11.0.1.80/24
DHCP Server
客户端 1
CentOS 7
动态获取
DHCP Client
客户端 2
Windows 10
动态获取
DHCP Client
所有设备处于同一局域网广播域内,使用 VMware 或 VirtualBox 搭建虚拟网络环境,交换机模式为 NAT 或仅主机(Host-only)模式。

网络拓扑图(建议绘制后插入)

image.png

四、实验分析与设计思路

1. 技术原理简析

DHCP(Dynamic Host Configuration Protocol)是一种应用层协议,用于自动向客户端分配 TCP/IP 参数。其工作过程遵循 DORA 模型:
  • Discover:客户端广播寻找可用 DHCP 服务器
  • Offer:服务器回应提供一个 IP 地址建议
  • Request:客户端选择该 IP,并请求正式使用
  • Acknowledge:服务器确认,完成分配
整个过程基于 UDP 协议,客户端使用端口 68,服务器监听端口 67。

2. 设计思路

  • 将 DHCP 服务器部署在稳定可靠的 Linux 平台(CentOS 7),保障服务连续性。
  • 划分独立的地址池(11.0.1.100~200),避免与静态 IP 冲突。
  • 设置合理的租约时间:默认 10 分钟(测试环境短周期便于观察),最大 2 小时。
  • 为主流设备(Linux/Windows)统一提供 DNS 服务器(Google + 国内公共 DNS),提高解析成功率。
  • 启用 authoritative; 指令,使服务器对本子网具有权威性,加快响应速度。
  • 对关键设备(如服务器、打印机)实施 MAC 绑定,保证其 IP 不变。
  • 通过防火墙策略控制访问权限,在安全性与功能性之间取得平衡。

五、实验准备

1. 软硬件准备

  • 虚拟化平台(VMware Workstation / VirtualBox)
  • CentOS 7 最小安装镜像
  • 已安装的 Windows 10 客户机虚拟机
  • 共享网络环境(推荐 Host-only 或自定义 NAT 网络)

2. 工具准备

  • 命令行工具:ip, nmcli, systemctl, journalctl
  • 文本编辑器:vim 或重定向写入配置
  • 日志查看命令:cat /var/lib/dhcpd/dhcpd.leases
  • Windows 命令提示符:ipconfig /renew, ipconfig /release

3. 关键依赖安装

确保安装包是 dhcp,服务名为 dhcpd

六、实验过程

步骤 1:安装 DHCP 服务

步骤 2:备份并编写主配置文件

⚠️ 修改说明:请根据实际服务器所在网段修改 subnetrangerouters。例如若服务器 IP 是 192.168.10.1,则需改为对应值。

步骤 3:确认监听网卡

查看网卡状态:
假设主网卡为 ens33,且处于 11.0.1.0/24 网段,则 DHCP 服务将自动为此子网提供服务。
✅ 注意事项:
  • DHCP 服务通常依据路由表和接口归属判断作用域;
  • 若存在多个网卡,请谨慎配置,防止服务冲突。

步骤 4:启动并设置开机自启

检查运行状态:
预期输出应包含:active (running)
如有异常,可执行语法检测:

步骤 5:配置防火墙规则

方法一:临时关闭(仅限测试)

方法二:放行 DHCP 服务(推荐)

DHCP 使用 UDP 端口:67(Server)、68(Client)

步骤 6:客户端测试

✅ CentOS 客户端测试

预期看到动态 IP 在 11.0.1.100~200 范围内,同时获得网关和 DNS。

✅ Windows 客户端测试

  1. 进入“控制面板” → “网络和共享中心”
  1. 更改适配器设置 → 右键属性 → IPv4 → 设置为:
      • ☑ 自动获得 IP 地址
      • ☑ 自动获得 DNS 服务器地址
  1. 执行命令:
成功后应显示来自 11.0.1.x 的 IP 地址。

七、实验结果及分析

1. 服务运行状态验证

✅ 输出状态为 active (running),表明服务已正常启动。

2. 客户端 IP 获取情况

客户端类型
是否成功
分配 IP
获取方式
CentOS
11.0.1.100
DHCP
Windows
11.0.1.101
DHCP
从日志可以看出两次成功的交互过程:
表明服务器正确识别了客户端请求,并成功返回 ACK 确认。

3. 租约文件验证

查看 /var/lib/dhcpd/dhcpd.leases 文件:
  • 显示客户机 MAC 地址、主机名、租约生效时间均完整记录。
  • 当前状态为 active,表示正在使用中。
💡 分析:租约机制有效运行,服务器能持久化管理 IP 分配情况,具备高可靠性。

4. 固定 IP 绑定测试(高级功能)

添加如下配置:
重启服务并释放/更新 IP 后,目标 Windows 主机稳定获取到 11.0.1.120
✔ 成功实现“一台设备永久使用一个 IP”,适用于服务器、打印设备等场景。

八、总结

本次实验成功在 CentOS 7 上部署并配置了 DHCP 服务器,实现了对 Linux 和 Windows 双平台客户端的自动化 IP 地址分配。

收获与体会:

  1. 掌握了 DHCP 的基本配置语法与典型应用场景,理解了 subnetrangeoptionhost 等核心指令的作用。
  1. 熟悉了企业级网络服务的部署流程:安装 → 配置 → 启动 → 防火墙处理 → 客户端验证 → 日志审计。
  1. 加深了对 DHCP 协议工作机制的理解,特别是 DORA 过程中的报文交互与广播特性。
  1. 学会了如何为关键设备保留固定 IP,增强了服务的灵活性与可控性。
  1. 实践了基础排错技能,如使用 dhcpd -t 校验配置、journalctl 查看实时日志。

存在问题与改进方向:

问题
解决方案
多子网环境下无法跨网段分配
需配合 DHCP 中继代理(如路由器)
租约时间较短导致频繁续约
生产环境中可延长至数小时甚至一天
未进行跨 VLAN 测试
后续可结合路由器模拟复杂拓扑
日志未做定期轮转
可引入 logrotate 管理日志增长

应用前景:

DHCP 作为现代局域网不可或缺的基础服务,广泛应用于学校、企业、数据中心等大规模网络环境中。掌握其配置与维护技能,为进一步学习 DNS、PXE 网络装机、自动运维打下坚实基础。

📎 附录:常见问题排查表

问题现象
原因分析
解决方法
客户机提示“正在获取 IP 地址…”
DHCP 服务未运行或不可达
检查 systemctl status dhcpd 和防火墙规则
获取到 169.254.x.x APIPA 地址
未收到 DHCP 响应,不在同一广播域
确保客户机与服务器在同一子网,交换机模式正确
启动失败,报错 No subnet declaration
dhcpd.conf 中 subnet 与服务器 IP 不匹配
修改 subnet 使其覆盖服务器所在的本地网络
客户端拿到 IP 但无法通信
网关或 DNS 配置错误
检查 option routersdomain-name-servers 是否正确
两台设备获取同一 IP
租约文件冲突或地址池不足
清空 .leases 文件并重启服务,扩大地址池
🔧 辅助诊断命令:
上一篇
添加work节点
下一篇
Bash & Shell 脚本编程