
1. 实验整体设计与思路拆解搞网络的朋友不管你是准备思科、华为认证还是日常维护公司网络DHCP实验绝对是一个绕不开的基础实操。这东西说简单也简单就是给终端自动分配IP地址但说复杂也复杂里面涉及协议交互流程、地址池规划、冲突检测、跨网段中继转发等各种设计逻辑。我早期带过不少新人很多人一上来就照着命令敲敲完能通就觉得完事了结果真到生产环境遇到地址分配慢、租约反复续租、某些设备拿不到地址这类问题就完全没排查思路了。这次想分享的DHCP实验不是简单教你在路由器上敲几条命令而是把整个实验从设计、配置到排障做一个完整的梳理。我会用一套典型的模拟环境来演示确保你照着做就能复现同时把每一步背后的原理和选型逻辑讲清楚。适合刚接触网络工程的学生、准备考取网络认证的考生以及刚入职需要接手公司网络运维的初级工程师参考。先说这个实验的设计思路。在我做过的所有网络实验里DHCP实验属于那种“入门门槛低、天花板却很高”的类型。你只跑通一个地址池分配很简单但你得想清楚为什么这么做。我给自己定的实验目标是四点第一能独立完成DHCP服务的配置理解地址分配全过程第二能合理规划地址池避免地址冲突和浪费第三能处理简单的跨网段分配问题也就是DHCP中继的配置第四遇到终端无法获取地址的情况能通过日志和抓包快速定位原因。这四个目标基本覆盖了实际工作中80%以上的DHCP相关场景。关于环境选型这里多说一句。市面上能做的方案挺多比如直接用模拟器或者用某平台搭一组虚拟机。我的建议是优先选择模拟器原因在于它自带很多排障工具而且可以轻松抓包查看交互细节。你用物理机做当然更接近生产但成本高、链路复杂出了问题往往分不清是环境问题还是配置问题对新手很不友好。而用模拟器做实验你能很清楚地观察协议运行过程构建针对性故障场景复现网络问题这是在物理环境里很难做到的。另外实验拓扑的设计也有讲究。我见过有些人做DHCP实验就拉一台路由器一台PC能拿到地址就算完事。这太局限了。我采用的拓扑是经典的一台路由器、一台核心交换机、两台终端设备的结构。为什么要加入核心交换机因为实际环境里DHCP服务通常不在PC的直连网段必须要通过交换机做中继或者配合VLAN规划这样才能把“二层广播被隔离”这个核心问题暴露出来。这点搞不明白以后接真实项目必踩坑。地址规划方面我预留了两个网段来模拟日常办公环境比如终端网络和服务器区域各一个。这样既能测试普通地址分配又能测试基于不同网段的中继转发覆盖的场景更全面。下面我把完整的地址规划方案列出来方便你对照。区域网段网关地址池范围作用终端区域192.168.10.0/24192.168.10.1192.168.10.100 - 192.168.10.200模拟办公终端自动获取地址服务器区域192.168.20.0/24192.168.20.1192.168.20.100 - 192.168.20.150模拟服务器或有固定IP需求区域网段划分这里有个细节值得注意我把地址池范围和网段范围刻意设计成不一致。终端区域整个网段有254个可用地址但我只分配了100个给动态地址池。这是刻意为之目的是保留一部分地址给打印机、门禁控制器这类需要手动设置静态IP的设备。真实环境里你要是把整个网段都做成DHCP池后面想给某个设备指定一个固定的IP就得想尽办法做地址池排除非常麻烦。1.1 实验环境的搭建与准备开始配置之前得先把环境准备好。我用的是某主流网络模拟器软件这个软件在各高校网络实验室和自学圈子里用得非常多优点是占用资源少、启动快、拓扑搭建方便。安装什么的就不多说了重点讲一下启动模拟器之后先要做的三件事。第一关掉“全局设备自动启动”选项。有些版本默认会把设备全部启动导致加载速度慢而且你还没配完设备就开始发包了容易干扰观察。第二给每台设备设置好主机名。这是一个很基础但极其重要的习惯尤其是设备数量多的时候。你试想一下一堆设备全叫“路由器”“交换机”怎么排查问题主机命名规则通常是“设备类型-区域-编号”这样的格式。第三把PC终端的IP配置方式默认改为DHCP。模拟器里的PC默认是静态IP你要是不改实验开始后设备拿不到分给你的地址你会以为配置出错了其实只是PC端没调成自动获取。做完这三步就可以开始搭拓扑了。设备选型上我没有用太复杂的型号路由器选了一台支持中继功能的交换机选了一台三层交换机两台PC终端外加一台服务器作为固定地址业务设备的替代。这里可能有人会问为什么要用三层交换机因为实验里要有VLAN间路由和DHCP中继转发二层交换机实现不了这个功能。不过这里我不得不提一个很多教程不会讲的硬件猜谜点。模拟器里不同型号的路由器默认开启的接口数量、支持的功能模块差别很大。有次我带一个同学做实验他选的是一款老式路由器只有两个以太网接口配完一个WAN口一个LAN口之后发现没有多余的接口接核心交换机了。所以搭建实验环境之前你先确定好设备型号或者干脆先加好接口模块再连线不然到后面还得推翻重来。我这套拓扑里路由器至少需要三个接口分别用于连接核心交换机、模拟外网以及预留一个管理接口这个选型是经过验证的。最终拓扑结构为路由器通过千兆以太网接口与核心交换机互联核心交换机下联两台PC终端同时预留了一个服务器接口区。所有设备之间用模拟的以太网线缆连接链路带宽统一设置为千兆避免带宽瓶颈干扰后续实验观察。1.2 为什么这个实验适合用模拟器而非物理机说实话如果你是第一次接触DHCP协议我强烈建议你直接从模拟器入手。物理机做这个实验不是不行但你会被大量与实验本身无关的问题消耗掉精力。举个例子物理机上你要自己搭DHCP服务器可能用Windows Server也可能用某套Linux发行版你得先搞定操作系统安装、网络服务配置、防火墙放行规则、物理交换机VLAN划分……这一套下来半天过去了DHCP协议本身你可能还没摸到。而且物理环境下排查故障的方式相对有限抓包、模拟故障场景都很受限。模拟器里就完全不一样你可以随时查看接口状态可以开启协议调试开关观察DHCP协议交互的每个步骤甚至可以通过抓包工具直接看到客户端与服务器之间的四步交互报文。这些能力在物理环境里不是没有但门槛高得多对于学习和理解协议来说模拟器无疑是最高效的路径。当然我承认物理机实验也有它的价值比如可以验证跨厂商设备之间的兼容性测试真实硬件在异常流量下的表现这些是模拟器替代不了的。但那些属于工程验证范畴不是我们今天这个实验的重点。做实验先把原理吃透后面上了真机再去做验证效率会高很多。2. 核心细节解析与协议工作原理解读既然要深入做DHCP实验就不能只停留在“敲命令能通”的层面。我见过太多人配置完DHCP问他是怎么从客户端请求到服务器回应完成分配的他答不上来。这不行一个搞网络的人如果不理解协议交互过程出了问题连排查方向都没有。DHCP全称是动态主机配置协议它基于UDP协议工作客户端使用端口68服务器使用端口67。它解决的核心问题就是让终端设备在接入网络时自动获取到合法的IP地址、子网掩码、默认网关和DNS服务器等网络参数省去手工配置的麻烦同时避免因人为配置错误导致的地址冲突。整个地址分配过程就是我们常说的“四步握手”这四个步骤一定要烂熟于心。第一步客户端在网络中发送DHCP发现报文这是一种广播报文目的地址是255.255.255.255源地址是0.0.0.0因为它此刻还没有合法的IP地址。第二步服务器收到发现报文后回应一个DHCP提供报文同样采用广播形式报文中包含了拟分配给客户端的IP地址、掩码、租期等信息。第三步客户端从收到的多个提供报文中选择一个通常是第一个到达的然后发送DHCP请求报文再次用广播形式通知服务器“我选定了这个地址”。既然已经选定了IP为什么还需要广播呢因为要告知其他可能响应的服务器收回它们提供的地址。第四步服务器收到请求报文后发送DHCP确认报文确认租约生效客户端随即配置网络参数地址分配完成。这里我必须强调一个特别容易引起误解的细节客户端的请求报文和服务器最终确认的报文在不同场景下可能是广播也可能是单播。当客户端还没有确定IP地址时无法建立单播通信所以第三步和第四步通常是广播。但客户端如果已经拥有一个IP地址只是在进行续租那么它可以采用单播方式直接发送请求报文给服务器。这个细节在我排查真实故障时帮了不少忙你看日志时如果只盯着广播交互遇到续租场景就会一头雾水。还有一个核心概念必须搞清楚就是租约机制。DHCP分配给客户端的IP地址不是永久的而是有使用期限的这个期限叫做租约时间。在实验里我通常把租约时间设置为比较短的值纯粹是为了方便观察续租过程。但在生产环境中租约时间的长短直接影响网络性能设置过短会造成广播报文频繁刷屏设置过长又会导致IP地址回收不及时。一般办公网络设置为8到24小时比较常见具体要结合网络规模和终端在线率来定。2.1 租约续租机制与实时在线观察实验里最值得花时间观察的就是租约续租过程。DHCP客户端不会等到租约彻底过期才重新申请地址而是在租期到达50%的时候主动向分配地址的服务器发起单播续租请求。如果这个请求没有得到响应它会在租期到达87.5%的时候再次尝试。这种设计非常巧妙保证了网络波动时客户端仍然能尽量保持原地址不至于频繁断开重连。我在做这个实验的时候专门把租约时间调短记为T150%和T287.5%两个时间点观察客户端的行为变化。第一次实验时因为没理解这个机制我看到客户端日志一直显示续租失败以为是配置有问题排查了半天才发现是模拟器时间流速设置导致的。所以提醒大家用模拟器观察续租过程记得把实时时间显示功能打开不然你很难精确判断T1和T2的触发时刻。具体的租约参数逻辑我们可以拿一个实际配置来演算。假设租约时间设置为600秒那么到达300秒时客户端就会尝试第一次续租发送单播请求。如果服务器未响应直到522秒左右也就是租期的87.5%客户端会切换为广播请求。到了600秒租约还没成功续约客户端就会释放IP地址并重新走完整的四步申请流程。理解了这套时间表你在看日志时就能准确判断当前客户端处于“正常续租”“紧急续租”还是“重新申请”哪个阶段了。2.2 地址池规划与参数设计的避坑指南第二个核心细节是地址池规划。我发现很多人做实验时对地址池的参数设置相当随意掩码跟网段对不上、网关填错、租期设成0各种幺蛾子都能出现。这里我整理了一个配置参数清单算是实验前要确认好的规范。网段和掩码必须严格匹配例如192.168.10.0/24掩码必须是255.255.255.0。地址池范围必须在网段范围内不能超出。网关地址必须真实存在于该网段且是路由器或三层交换机上实际配置的接口地址。DNS服务器参数可以根据实验需要填写如果模拟的是办公环境填一个真实可用的DNS即可。租约时间建议实验阶段设置为较短时长方便观察续租机制。参数项推荐配置注意事项网段192.168.10.0/24与接口地址保持同网段地址池192.168.10.100 - 200预留静态地址段避免与网关冲突网关192.168.10.1必须与三层接口地址一致DNS按实验需求填写可模拟外网DNS或内网DNS服务器租约时间实验期600秒/生产8-24小时实验期调短便于观察这里有个关键点要特别拎出来讲就是网关地址。网关地址必须同时满足两个条件第一它必须是地址池所在网段内的合法地址第二它必须是对应三层接口上实际配置的地址。很多人配置的时候只在DHCP服务里填了网关但三层接口上根本没配置这个地址结果终端拿到IP后完全无法上网因为数据包根本没有路由出口。这个错误在初学者中极其常见一定要检查两边的配置是否一致。2.3 全局地址与接口地址池的区别关于动态地址池的两种配置形态全局地址池和接口地址池这也是实验里的一个分水岭。我见过不少人在实际项目里把两种方式混用结果优先级混乱分配出去的地址完全不符合预期。全局地址池是在设备的全局配置模式下创建的适用于多个接口共用同一个地址池的场景。在思科设备里创建一个全局地址池后所有启用了DHCP服务的接口在收到客户端请求时都可以从这个池子里分配地址。但要注意如果多个接口都使用同一个全局池就必须通过地址池的网关参数来区分或者用地址池划分不同的地址段否则客户端拿到的网关可能是错误的。接口地址池则不同它绑定在特定的接口上只服务于通过该接口接入的客户端。它的优先级高于全局地址池也就是说当一个接口同时匹配到接口地址池和全局地址池时设备会优先从接口地址池分配。这种方式更灵活尤其适合需要给不同VLAN分配不同地址段的场景。在我的实验里终端区域和服务器区域分别配置了独立的地址池实际上就是接口地址池的应用。理解这两种方式的差异还有一个实际层面的用处当你排查“为什么这个设备拿到的IP地址跟我预期的不一样”时可以先检查是否同时配置了全局池和接口池接口池的网关是否跟客户端所在网段匹配。很多时候问题就出在这里。3. 实操过程与完整配置命令走读好了前面把设计思路和原理讲透了现在正式进入实操环节。我会按照拓扑结构从底层往上逐层配置每一步都给出完整的命令并且讲清楚每个参数的作用。3.1 基础网络配置接口与VLAN在配置DHCP服务之前必须先把底层的网络打通否则后面所有操作都是空中楼阁。顺序很重要先配接口地址和VLAN再配置路由最后才是DHCP服务。很多人习惯一上来就敲DHCP配置结果排查问题时发现底层接口都没通等于白忙活。路由器那边三个接口分别配置地址。连接核心交换机的接口作为内网主干接口配置终端网段的网关地址连接外网模拟区域的接口随意配一个公网网段的地址用于模拟互联网出口管理接口单独配置。这里只配置IP地址和开启接口路由协议部分用静态路由就能满足实验需求。核心交换机这边重点是创建两个VLAN分别对应终端区域和服务器区域。然后将连接终端的接口划入对应VLAN连接路由器的接口配置为Trunk模式允许这两个VLAN的流量通过。这里有个容易忽略的点三层交换机上必须为每个VLAN创建对应的虚拟接口也就是SVI接口并配置IP地址作为该VLAN内终端的网关。这一步不做DHCP配置好了终端也拿不到地址因为广播域在交换机这里就被隔离了没有三层接口终结请求根本到不了路由器。来看核心交换机这部分的关键配置# 创建VLAN vlan 10 name TERMINAL vlan 20 name SERVER # 配置VLAN虚拟接口SVI作为网关 interface vlan 10 ip address 192.168.10.1 255.255.255.0 no shutdown interface vlan 20 ip address 192.168.20.1 255.255.255.0 no shutdown # 接入端口划分VLAN interface ethernet 0/0/1 switchport mode access switchport access vlan 10 interface ethernet 0/0/2 switchport mode access switchport access vlan 10 interface ethernet 0/0/3 switchport mode access switchport access vlan 20 # 与路由器互联接口配置Trunk interface ethernet 0/0/24 switchport trunk encapsulation dot1q switchport mode trunk switchport trunk allowed vlan all这一段配置里最核心的是vlan 10和vlan 20的虚拟接口。为什么要在这里配网关地址而不是在路由器上给终端网段配地址在生产项目中网关优先放在三层交换机上可以就近转发减少跨设备流量。实验里为了让拓扑简单也可以把网关放在路由器上那你就不需要配置交换机的SVI接口改成在路由器上配子接口并封装VLAN即可。两种方式都能实现实验目标但真实网络里我倾向于“网关下移到接入层或汇聚层”的思路这样可以降低核心设备负载也便于排障。路由器上的基础配置如下注意接口编号根据你实际拓扑来调整# 核心侧互联接口 interface gigabitethernet 0/0/1 description Link-to-SW-Core ip address 192.168.0.1 255.255.255.252 no shutdown # 模拟外网侧接口 interface gigabitethernet 0/0/2 description Link-to-WAN ip address 200.100.1.1 255.255.255.0 no shutdown # 管理接口独立网段便于远程管理实验设备 interface gigabitethernet 0/0/3 description Management ip address 10.10.10.1 255.255.255.0 no shutdown这时你可以在PC终端上手动配置一个静态IP测试一下同一VLAN内终端之间能否互通。如果通了说明基础链路没问题再进入DHCP配置。这里测试互通不要用Ping命令而是先Ping网关网关通了再Ping其他终端。一步一步验证能帮助你快速隔离故障是出在链路层面还是配置层面。3.2 DHCP服务配置与地址池创建基础网络通了之后正式进入DHCP服务配置环节。我在路由器上启用DHCP服务因为我希望它同时给两个网段分配地址模拟的是一台集中式DHCP服务器的角色。当然你也可以在核心交换机上启用DHCP服务很多企业网络中就是这么做的原理一样。先配置全局地址池为终端网段创建地址池# 终端地址池 ip dhcp excluded-address 192.168.10.1 192.168.10.99 ip dhcp excluded-address 192.168.10.201 192.168.10.254 ip dhcp pool TERMINAL_POOL network 192.168.10.0 255.255.255.0 default-router 192.168.10.1 dns-server 114.114.114.114 lease 0 0 10第一行和第二行是配置保留地址也就是从动态分配中排除的地址段。我把从.1到.99和.201到.254这两段都排除了前者预留给网关、交换机管理地址、打印机等静态设备后者留作未来扩展。这样做之后实际可用于动态分配的地址就是100到200和前面规划一致。不要小看这一步很多人在做实验时图省事把所有地址一股脑丢给DHCP后面要配置静态设备时就得被迫改地址池或做排除反而更麻烦。network命令指定了地址池的网段default-router指定客户端拿到的默认网关dns-server指定DNS服务器。lease命令设置租约时间这里是“0天0小时10分钟”也就是600秒。实验阶段我喜欢用这个时长刚好能观察到续租过程又不至于因为租期太短导致频繁重新分配影响观察。再配置服务器区域地址池ip dhcp excluded-address 192.168.20.1 192.168.20.99 ip dhcp excluded-address 192.168.20.151 192.168.20.254 ip dhcp pool SERVER_POOL network 192.168.20.0 255.255.255.0 default-router 192.168.20.1 dns-server 114.114.114.114 lease 0 0 10这里有一点要注意由于两个地址池是配置在同一台路由器上的而路由器只有一个三层接口与交换机互联所以客户端在VLAN 10里发出的广播请求经过交换机Trunk链路到达路由器时路由器必须能够区分这个请求是来自VLAN 10还是VLAN 20。这时候就需要在路由器的互联接口上划分子接口用VLAN封装来区分不同广播域。如果省略这一步路由器收到广播请求后不知道该从哪个地址池取地址分配就会出现错误。所以路由器与交换机互联的那个接口需要把物理接口关掉直接配置IP的模式改成子接口模式每个子接口对应一个VLAN并配置对应的网关地址interface gigabitethernet 0/0/1.10 encapsulation dot1q 10 ip address 192.168.10.1 255.255.255.0 interface gigabitethernet 0/0/1.20 encapsulation dot1q 20 ip address 192.168.20.1 255.255.255.0这里我同时使用了两个方案思路一种是交换机上用SVI终结客户端网关另一种是路由器上用子接口终结网关。你要理清楚在真实项目里网关位置要么在交换机上要么在路由器上二选一不会两头都配。实验里为了帮你建立更完整的理解我会把VLAN间路由放在路由器上做演示而之前交换机SVI的配置可以作为对照参考。你在实际做实验时如果选择了路由器子接口方案交换机上就不用配SVI接口地址如果你把网关放在三层交换机上那么在交换机上配好VLAN网关后只需要交换机与路由器之间跑一个静态路由或动态路由协议即可。为了避免实验混乱篇幅所限我下面统一采用“路由器子接口终结VLAN网关”的方案来完成本次实验。3.3 验证地址自动获取与协议交互过程配置都完成之后就该验证效果了。先把PC1的IP配置方式改成DHCP然后在命令行里执行地址获取命令。如果是模拟器里的PC通常在命令行输入相关命令完成IP配置。配置完成后先用查看命令确认获取到的IP地址然后Ping网关地址验证连通性。如果一切正常PC1应该获取到192.168.10.100到192.168.10.200之间的某个地址。这里多说一句你在实验时第一次获取到的往往是地址池中前面的IP因为服务器是从池子起始地址开始分配的。而且只要PC1在线并继续持有这个地址服务器不会把它分配给别的设备除非租约过期或被手动释放。这一点在后续排查地址冲突时非常重要。验证协议交互过程我建议你打开路由器上的DHCP调试功能查看分配过程的实时日志。在模拟器里命令是调试DHCP事件的开关开启后路由器会打印出收到发现报文、分配地址、发送确认报文等过程的详细信息。我在实验里看到过类似这样的输出片段记录着客户端MAC地址、分配的IP地址和租约时长。这些日志就是排查问题最直接的证据。接着把PC1释放掉再重新获取一遍观察日志变化。你会发现释放后服务器会把地址回收重新获取时分配给同一个客户端还是同一个地址的可能性很高因为服务器倾向于给同一个客户端分配它之前用过的IP这叫做客户端亲和性。这种机制对真实网络很重要可以减少因IP变化导致的连接中断。在PC2上重复同样的操作确认它能从192.168.20段获取地址。到这里基础实验目标已经达成。但我建议你不要急着收工接着做下面两个更深入的验证。第一验证跨网段的中继转发。把PC1获取的地址记下来关掉PC1的DHCP获取改为手工配置一个192.168.20段的地址然后在PC1上Ping PC2获取的地址。如果通了说明这两个VLAN之间的路由配置正确。如果不同不要急着改DHCP配置先查路由表和接口状态。第二验证地址冲突检测。手工把一台PC的IP地址设为和DHCP地址池里某个已分配地址相同的值观察路由器日志是否出现冲突信息。DHCP服务器在分配地址前通常会发送探测报文来确认地址是否被占用如果检测到冲突服务器会跳过这个地址分配池子里下一个可用地址。这个机制在真实网络里能有效减少IP冲突但也意味着如果你在网络上手工配置了一堆静态IP且恰好落在地址池里DHCP服务器会消耗更多时间来逐一探测导致分配变慢。当然如果拓扑中有实际运行的真实服务器或设备建议使用抓包软件更直观地观察DHCP四步交互发现、提供、请求、确认。不过在模拟器里也能通过调试日志看到足够信息不必非抓包不可。下面这个表格是一个快速的自我检查清单配置完以后一条一条过一遍能帮你提前发现80%的潜在问题检查项正确状态错误示例三层接口/VLAN子接口地址与地址池网关一致网关填了但接口未配置或地址不同地址池网段与客户端所在网段一致地址池写成了另一个网段地址池排除范围预留给静态设备的地址已排除网关地址落在动态分配范围内VLAN划分终端在VLAN 10服务器区在VLAN 20所有端口都在VLAN 1中继/子接口封装子接口VLAN编号与交换机一致子接口封装VLAN 10但交换机划的是VLAN 20客户端模式PC设置成DHCP自动获取PC保持静态IP导致不发起请求4. 常见问题与排查技巧实录做实验时踩坑是免不了的关键是踩了坑要能快速找到原因。我把这些年做DHCP实验和真实网络运维中遇到的高频问题整理出来一条条说清楚现象、原因和解决办法。这份速查表我建议你保存下来以后线上遇到类似问题直接按图索骥。现象可能原因排查方法终端获取不到IP地址DHCP服务未启用或接口未开启检查服务状态、接口状态、路由日志获取到的IP不在预期网段地址池与网关配置不匹配或存在多个地址池争抢检查地址池配置和接口绑定关系能获取IP但Ping不通网关网关地址与三层接口不一致或网关不存在用查看命令比对地址池网关与接口地址获取IP非常慢地址池过小或大量地址被保留服务器探测报文耗时优化地址池范围排查静态IP冲突部分设备能获取、部分不能设备MAC过滤或VLAN划分错误检查客户端所在VLAN查看日志中是否有拒绝记录获取到IP但无法上网路由配置缺失或DNS配置错误检查去往外网的路由、DNS是否可达下面挑三个最典型的场景展开讲讲排查思路。第一个场景终端一直拿不到IP显示“DHCP请求超时”或“未找到DHCP服务器”。这种问题百分之九十出在广播域被隔离了。客户端发送的发现报文是广播如果它所在的VLAN没有三层接口来终结这个广播或路由器上没有配置对应的子接口这个广播报文就永远传不到DHCP服务器那里自然不会有任何响应。排查时先确认客户端所在VLAN是多少再对照路由器和交换机的配置看看这个VLAN是否有对应的三层网关或子接口存在。这一步能解决大多数“拿不到IP”的问题。第二个场景比较隐蔽就是“拿到了IP但网关不对”。常见于在路由器上同时配置了全局地址池和接口地址池一个VLAN的请求被错误的地址池匹配到了。比如终端在VLAN 10请求却被VLAN 20的地址池响应分了个192.168.20段的地址给它。排查方法是把接口上绑定的地址池配置检查一遍确认每个接口只匹配自己网段的地址池。如果是全局池必须确认地址池的网段和网关参数与接口所在网段一致。这个问题在实验环境里常见是因为模拟器支持多个地址池并存配置命令稍有疏忽就会互相覆盖。第三个场景是“IP地址冲突”终端获取的地址和另一台手工配置的静态设备冲突导致网络时断时续。排查时需要先找出冲突的双方一个看DHCP日志一个看终端网卡状态然后决定是修改静态设备的地址还是在DHCP地址池里增加排除范围。我强调过多次提前规划好地址池范围和保留地址是避免这类问题的最有效手段。凡是网络里存在打印机、门禁、摄像头这类喜欢用静态IP的设备都要帮它们规划好保留地址段不让DHCP碰。4.1 模拟器环境特有的坑最后一个部分说说模拟器环境特有的问题这些坑你在物理机上可能碰不到但在模拟器里经常遇到。第一个是模拟器时钟问题。DHCP协议非常依赖时间租约的长短、续租的时间点、报文的重传间隔全都要靠设备时钟来驱动。有些模拟器默认时钟走得比真实时间快很多倍你以为过了几分钟设备内部已经过了几十分钟租约早就到期了。这时你看到的日志里会大量出现租约到期重新分配的记录而不是你预期的续租成功记录。遇到这种情况先把模拟器的实时时间显示打开观察设备内部时钟和真实时间的比例关系再决定是否需要调整模拟速度。第二个坑是模拟器设备的接口状态。很多模拟器里接口默认是关闭的你没敲no shutdown之前接口协议都是管理的Down状态。DHCP配置再好接口是Down的请求根本进不来。所以排查问题时第一步永远是看接口状态看看物理和协议层是否都是Up这能省掉大量无意义的配置检查。第三个坑是不同模拟器命令风格有差异。思科风格的模拟器和华为风格的模拟器DHCP配置命令几乎完全不同。如果你习惯了某一家的命令语法突然换到另一家环境很容易在细节上出错。我个人的建议是做实验前先认准你要用的设备风格把自己代入进去查找对应厂家的命令手册千万不要用A家的命令去配置B家的设备。这个道理说出来简单但我见过太多在模拟器里混用命令导致实验失败的人提前打个预防针。最后一个经验是关于实验记录的。做DHCP实验我强烈建议你专门开一个文本文档把配置过程、遇到的坑、排查思路全部记下来。不要等到实验做完了再回头补记那样细节会丢很多。这个记录习惯在工作以后价值极大因为生产网络里的排障笔记就是你的财富很多问题隔一段时间再遇到翻笔记比重新排查快得多。我自己现在排查线上网络问题时还会经常翻出早年实验时记录的笔记很多思路都相通。关于DHCP的实验内容其实可以扩展很多比如结合DHCP snooping做安全防护实验、结合PPPoE拨号做地址分配实验、结合无线控制器做漫游场景下的地址保持等等。每一步扩展都会让你对DHCP的理解更进一步。希望这份实验记录能帮你在网络这条路上少走一些弯路如果你在实验过程中遇到这篇文章里没提到的问题不妨多看看协议日志再对照着拓扑一步步排查大多数谜题都会有答案。