今天下午总算把整套DHCP实验收尾了,趁着印象还新鲜赶紧记下来。起因是上午办公区传来一声“我上不了网”,过去一看网卡地址是169.254.23.11,Windows在DHCP请求失败后自动生成的APIPA地址,基本等于在喊“我没拿到地址”。查了一圈,有人手动把台式机IP填成了188,而路由器地址池恰好把这个地址分配给了另一台机器,冲突就这么发生了。
这种手工管理IP的方式在小网络里还能勉强维持,设备一多就完全靠碰运气。所以我决定在实验环境里把DHCP从服务器配置、地址池规划、冲突检测到跨网段中继完整跑一遍,不只在模拟器里点两下,而是真刀真枪把客户端、服务器、中继设备都配一遍,有问题当场解决。
1. 实验拓扑与这次要验证的三个问题
1.1 手工配置IP的老毛病
很多刚入行的朋友觉得DHCP简单,不就是“给电脑自动分配IP吗”?其实真正在生产环境里踩过坑才知道,手工IP管理到了几十上百台设备的规模,几乎必然出问题。我自己就遇到过:
- 两台设备被填了同一个IP,后开机的把先开机的踢下线,查半天找不到是谁干的;
- 有人把子网掩码从255.255.255.0填成了255.255.0.0,短时间内看起来能上网,实际已经跨到了另一个广播域,排查时隐蔽性极强;
- 部门调整来了新设备,地址表上全是过期记录,临时给一个“看着没人用”的IP,过几天又冲突。
DHCP的价值不在于“自动分配”这四个字,而在于把地址的管理权收回到网管手里。谁拿到了什么地址、什么时候拿的、租约还剩多久,服务器上一查就清楚。这台设备该用什么网关、什么DNS,也都在服务器上统一下发,不用一台台去改。这就是这次做实验的核心动机:验证清楚之后,把生产环境迁移到DHCP方案上。
1.2 实验台架与设备角色
这次实验用的是eNSP模拟器加真实虚拟机客户端,拓扑不复杂但覆盖了主要场景:
| 设备 | 角色 | 关键配置 |
|---|---|---|
| 华为AR路由器 | DHCP Server + 跨网段中继服务端 | 启用DHCP服务,配置全局地址池 |
| 锐捷RG-S5750三层交换机 | VLAN20网关 + DHCP中继 | 配置ip helper-address指向DHCP服务器 |
| 华为S5700二层交换机 | 接入层设备 | 透明转发二层报文 |
| Windows 10客户端 | 广播域内自动获取 | 验证同网段DORA流程 |
| CentOS虚拟机 | Linux客户端 | 复现dhclient already running报错 |
| Ubuntu虚拟机 | 跨网段客户端 | 验证DHCP中继效果 |
实际连接关系是:华为AR的G0/0/1接口作为VLAN10的网关和DHCP服务器,连接S5700,S5700下挂Windows和CentOS;AR的G0/0/2接口接锐捷交换机,锐捷上划分VLAN20并配置中继,Ubuntu客户端接在VLAN20下面。
1.3 三个必答题:地址池、冲突检测、跨网段
做实验之前,我给这次验证列了三个问题,不是随便点点命令,而是每个都要有明确结论:
- 地址池怎么规划才不容易踩坑——办公网的终端动态获取没问题,但打印机、门禁控制器、无线AP这些设备如果也混在动态池里,迟早出问题。需要明确排除哪些地址、保留哪些地址、租期设多长。
- 服务器怎么避免把已经占用的地址再分配出去——这就是后来实验里重点验证的
dhcp server ping packet参数,很多人根本没注意过它。 - 跨网段的终端怎么才能拿到地址——广播报文过不了三层,这是TCP/IP的基础常识,但实际配置中继时,还是有人会忘了指定服务器地址或者放行UDP 67/68端口。
这三个问题全部跑通之后,我才有底气把它迁移到生产环境。下面按实验顺序记录。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 地址池规划:哪些地址必须提前圈出去
2.1 先把服务器、打印机和网络设备“圈”出动态池
很多第一次做DHCP的人,最多的想法是“动态池越大越好,反正有地址就分配”。这个思路在纯终端环境没问题,但生产网络中设备类型很杂。打印机、门禁控制器、考勤机、IP电话、无线AP的AC管理地址、摄像头NVR,这些设备要么不支持DHCP,要么需要固定IP保证访问连续性。
这些设备如果也靠在DHCP排除列表里,地址池规划就得提前算好。我见过一个案例,公司新装了一批IP摄像
