资讯动态

华为交换机DHCP多网段配置与排错实战

发布时间:2026/10/9 6:07:42 来源:尧图企业网站定制
公司要搭一套带多网段的办公模拟环境我顺手把 DHCP 实验整个过了一遍。结果发现一个挺有意思的现象不少人以为 DHCP 就是个自动发 IP 的小功能真要动手配置时卡住的点五花八门——有搞不清一个 DHCP 服务器到底能发几个网段的有面对华为交换机一堆 display 命令不知道从哪查起的还有内网明明已经有一台物理 DHCP 服务器、结果交换机一接就偶发获取失败的。这篇就围绕这几个高频问题把实验过程、配置逻辑和排错链路完整拆开聊一遍。适合正在学网络基础、准备 HCIA 实验或者在企业里维护局域网的同学参考。1. 实验前置先把一个DHCP服务器能发几个网段这件事讲透1.1 DORA四次握手在实验中的实际表现做实验之前我习惯先把协议流程过一遍不然配置出来的东西出了问题根本无从下手。DHCP 最核心的就是四次交互简写为 DORADiscover客户端以广播形式发出源 IP 是 0.0.0.0目的 IP 是 255.255.255.255MAC 是自己的网卡 MAC。它其实是在喊网段里有没有 DHCP 服务器给我个地址。Offer服务器收到后从地址池里挑一个可用地址回应一个 Offer 报文携带候选 IP、租期、网关、DNS 等信息。如果服务器和客户端不在同一个广播域这一步就需要中继帮忙。Request客户端收到 Offer 后会再广播一个 Request相当于说我就要这个地址。Ack服务器确认租约正式生效。客户端拿到完整的网络配置参数然后开始正常通信。我在实验里喜欢抓包看这四个过程。只要在客户端网卡上跑 Wireshark过滤dhcp关键字就能很直观地看到 Discover、Offer、Request、Ack 的先后顺序。有一个容易忽略的细节如果同时存在多台 DHCP 服务器客户端只会接受第一个到达的 Offer但会在 Request 里带上它选中的服务器标识选中的服务器才会回 Ack。这也是内网有物理 DHCP 服务器时交换机如果配置不当会出现分配混乱的原因之一。1.2 多网段分配的两种主流思路一个 DHCP 服务器发几个网段这个问题的本质是 DHCP 请求大多基于广播。普通广播过不了三层所以要么让交换机或路由器直接充当 DHCP 服务器要么让网关设备把广播转成单播转发给真正的服务器。对应到华为设备上实验里最常用的是两条路交换机作为 DHCP Server直接在设备上建多个地址池每个地址池对应一个网段VLANIF 接口作为网关。这是中小型网络最省事的做法不用额外服务器硬件。DHCP 中继内网已经有一台物理 DHCP 服务器各网段的网关设备配置中继功能把客户端的 Discover 报文封装成单播发给服务器服务器根据报文里的 giaddr 字段判断该从哪个地址池分配。这样一台服务器就能服务整个园区IP 地址统一管理。这两个方案我在实验里都做了。如果只是练手学原理推荐先做交换机直接分配如果是为了贴近企业实际环境强烈建议做一遍中继因为大部分公司都是物理服务器集中管理地址的模型。2. 华为交换机当DHCP Server全局地址池与接口地址池的实战配置2.1 实验拓扑与参数规划我用一台华为交换机型号无所谓S5700、CE 系列都行命令基本一致划分了两个 VLAN 做验证VLAN 10办公网段 192.168.10.0/24网关 192.168.10.1VLAN 20监控网段 192.168.20.0/24网关 192.168.20.1交换机上创建对应的 VLANIF 接口作为各网段的网关。客户端分别接在 Access 口下通过 VLAN 划分进入不同网段。实验前先把 VLAN 和接口放通搞定创建 VLAN、把接口改成 Access 并加入指定 VLAN、给 VLANIF 配 IP。这一套基础配置做完两台客户端能各自 ping 通网关再开始开 DHCP这样出了问题能知道是 DHCP 的事还是二层链路的事。2.2 全局地址池配置多网段场景首选华为交换机上开 DHCP 全局服务用dhcp enable开启。然后创建地址池我推到实验里是这么写的[HUAWEI] dhcp enable [HUAWEI] ip pool vlan10 [HUAWEI-ip-pool-vlan10] network 192.168.10.0 mask 255.255.255.0 [HUAWEI-ip-pool-vlan10] gateway-list 192.168.10.1 [HUAWEI-ip-pool-vlan10] dns-list 114.114.114.114 [HUAWEI-ip-pool-vlan10] lease day 1 hour 0 minute 0 [HUAWEI] ip pool vlan20 [HUAWEI-ip-pool-vlan20] network 192.168.20.0 mask 255.255.255.0 [HUAWEI-ip-pool-vlan20] gateway-list 192.168.20.1 [HUAWEI-ip-pool-vlan20] dns-list 114.114.114.114 [HUAWEI] interface Vlanif10 [HUAWEI-Vlanif10] ip address 192.168.10.1 255.255.255.0 [HUAWEI-Vlanif10] dhcp select global [HUAWEI] interface Vlanif20 [HUAWEI-Vlanif20] ip address 192.168.20.1 255.255.255.0 [HUAWEI-Vlanif20] dhcp select global有几个点我在实验里反复确认过全局地址池模式下gateway-list必须和 VLANIF 接口的 IP 完全一致。我曾经把网关写错成 192.168.10.254结果客户端能拿到 IP但 ping 不通网关排查了好一会儿才发现是网关参数写错了。dhcp select global如果漏配接口就不会调用全局池客户端会一直拿不到地址。这个命令要逐个 VLANIF 都写上。地址池里的network网段必须包含网关地址所在的网段否则地址池不可用。如果规划了两个网段就要建两个池一个池对应一个网段。这种方式的优点是配置集中所有网段的地址池都放在一台交换机上后续新增网段只需要建池、配网关 IP、加dhcp select global三步。缺点也明显如果这台交换机挂了全网都拿不到地址所以生产环境中一般用双机做冗余实验里不用纠结这个。2.3 接口地址池配置单网段场景更轻量还有一种方式是接口地址池直接在 VLANIF 接口下配不需要单独建全局池[HUAWEI] interface Vlanif10 [HUAWEI-Vlanif10] ip address 192.168.10.1 255.255.255.0 [HUAWEI-Vlanif10] dhcp select interface [HUAWEI-Vlanif10] dhcp server gateway-list 192.168.10.1 [HUAWEI-Vlanif10] dhcp server dns-list 114.114.114.114接口地址池的网段自动继承接口 IP 所在的网段所以不用写network这比全局池省一步。但它只适用于一个接口对应一个网段、且只需要一个地址池的简单场景。如果这台交换机还要给别的接口分配地址就得在多个接口上重复配置后期维护比较碎。我的建议是实验题、单网段小环境用接口池多网段、需要统一管理时用全局池。这里有个容易踩的坑旧版华为设备上接口池配置命令是dhcp select interface后跟dhcp server开头的一系列参数新版 VRP 版本有些改动但大体一致。实验前最好先display version看一下版本再决定用哪种写法。3. 内网已有一台物理DHCP服务器交换机怎么做3.1 二层直连看似不用配其实有三个隐藏前提很多人的第一反应是物理 DHCP 服务器和客户端在同一个二层网络里交换机啥都不用配服务器自己会响应。这个方向没错但实验做下来发现有三个前提容易被忽略客户端和服务器必须真的在同一个广播域。如果中间隔着 VLAN广播到不了服务器DHCP 必然失败。所以要么把服务器接在同一个 VLAN 的接口下要么把这个 VLAN 的广播域打通。交换机上如果有 DHCP Snooping默认情况下非信任端口的 DHCP 响应会被丢弃。启用 snooping 后必须把接服务器的端口设置为信任端口否则服务器发回来的 Offer 和 Ack 全部被设备拦截客户端一直卡在 Discover 状态。交换机如果开启了 IP Source Guard 之类的防欺骗功能也会影响 DHCP 流程。实验环境一般是关掉的生产环境要结合具体情况评估。在企业真实环境里偶发获取失败或者只有某些终端拿不到地址的案例很多就是这三条里出的问题而不是 DHCP 本身坏了。3.2 跨网段接入DHCP中继配置与完整验证流程如果物理服务器在 VLAN 100比如 192.168.100.10客户端的 VLAN 10 在另一个网段那就必须做中继。华为交换机上的配置其实很短[HUAWEI] dhcp enable [HUAWEI] interface Vlanif10 [HUAWEI-Vlanif10] ip address 192.168.10.1 255.255.255.0 [HUAWEI-Vlanif10] dhcp select relay [HUAWEI-Vlanif10] dhcp relay server-ip 192.168.100.10 [HUAWEI] interface Vlanif20 [HUAWEI-Vlanif20] ip address 192.168.20.1 255.255.255.0 [HUAWEI-Vlanif20] dhcp select relay [HUAWEI-Vlanif20] dhcp relay server-ip 192.168.100.10中继的原理一句话说就是客户端广播 Discover 到达网关接口接口把广播包转成单播转发给指定的服务器 IP并且在这个报文里填上接口的 IP 地址作为 giaddr。服务器收到后看到 giaddr 是 192.168.10.1就知道哦这是 192.168.10.0/24 网段的请求从而从对应的地址池里分配地址。这就是为什么一台物理 DHCP 服务器能发多个网段——靠的不是服务器上的广播监听而是中继给它的上下文信息。验证中继是否生效我最常用的命令是display dhcp relay statistics看转发和接收的报文计数。如果从发现报文到中继转发的计数都在涨说明广播确实到了网关网关也成功把它单播给了服务器。如果转发计数为零先检查dhcp select relay和dhcp relay server-ip是不是都配上去了再看交换机到服务器的路由通不通。3.3 虚拟化环境里的vNIC与服务器部署思路现在不少环境里客户端并不都是物理机云平台里虚机的 vNIC 同样走 DHCP 拿地址。实验里我用一台 VMware 虚机模拟过vNIC 的网卡类型选 e1000 或者 vmxnet3 都行重点是虚拟交换机的 VLAN 配置如果 vNIC 要拿 VLAN 10 的地址那么端口组要划到 VLAN 10 里否则客户端发出的报文会被交换机当成本地 VLAN 的流量服务器根本收不到。反过来如果 DHCP 服务器本身也是虚机接在 vSwitch 上同样要考虑端口组 VLAN 和信任关系。其实把 vNIC 理解成一块物理网卡就行——它有好几个虚拟网卡时对应到交换机上就是好几个接口每个接口属于哪个 VLAN就决定了它能收到哪个广播域的 DHCP 请求。服务器为 vNIC 分配地址的逻辑和给物理机分配地址完全一致没有任何特殊之处所以排错思路也能复用。4. 验证与排错华为交换机上的查看命令和真实翻车现场4.1 查看DHCP配置与运行状态的命令组合华为交换机查看 DHCP 配置是搜索热度很高的关键词我在实验里实际用得最多的命令有下面这些整理成一张表方便对号入座需求命令输出里重点看什么看全局开关和接口选用的模式display dhcp enable、display current-configuration configuration dhcp确认dhcp enable已开、VLANIF 下选的是 global 还是 relay看地址池配置和分配情况display ip pool地址池总数、每个池的网段、已分配地址数、空闲地址数看某个池的详细信息display ip pool name vlan10起始地址、结束地址、网关、DNS、租期、冲突地址看全局服务器统计display dhcp server statisticsReceive/Request、Send/Reply 计数确认有没有收到请求、有没有回包看中继统计display dhcp relay statistics中继转发数、接收数排查中继链路看接口下的地址绑定display dhcp server conflict、display dhcp server expired冲突和过期地址这类地址最容易造成换了个终端还是拿不到地址有个小技巧如果客户端拿不到地址最简单的第一步是先在客户端上执行ipconfig /release和ipconfig /renewWindows同时用display dhcp server statistics刷新两次看计数是否变化。计数涨了说明请求已到设备计数不涨问题在二层链路或者 snooping 拦截。4.2 抓包与日志定位拿不到地址的三类原因实验里最让人抓狂的就是终端一直显示获取中。抓包是最终极的手段我一般在 DHCP 服务器侧和客户端侧同时抓对比两端能否互相看到报文。归纳下来拿不到地址基本就三类原因广播根本没到达服务器。客户端发 Discover但中间链路不通、VLAN 不对、服务器接错接口或者 snooping 把报文丢了。现象是客户端侧有 Discover服务器侧什么都收不到。服务器回了 Offer但客户端收不到。最常见的是中继配置有问题dhcp relay server-ip配错了或者 relay 模式没开。还有 snooping 把服务器的 Offer 当成攻击报文丢弃。双方报文都在走但分配失败。比如地址池耗尽、地址冲突、池里的网段跟网关不在同一网段。这种现象在统计里能看到 Request 增加但 Ack 不增加。用华为设备时还可以开 debug 看实时日志debugging dhcp server packet但这个命令输出量很大生产环境慎用实验环境没问题。开 debug 的好处是能直接看到设备收到哪种报文、失败在哪一步。4.3 故障排查链路复现一个典型的分配失败实例我在实验里故意制造过一次故障用全局池给 VLAN 20 分配地址客户端一直拿不到。当时的排查链路是这样的第一步在客户端上ipconfig /renew同时打开display dhcp server statistics发现 Receive 的 Discover 在涨但 Send 的 Offer 没涨。第二步怀疑地址池没匹配上执行display ip pool发现 VLAN 20 的池确实存在但详情里显示该网段与接口网段不一致之类的状态。仔细一看VLANIF20 的 IP 配的是 192.168.30.1而地址池写的是 192.168.20.0/24两边不匹配。第三步把 VLANIF20 和地址池统一成 192.168.20.0/24再ipconfig /renew一次成功统计里 Send 的 Offer 和 Ack 都开始涨了。这类接口 IP 和池网段不一致的问题其实非常常见。很多教程只会写配置不提醒这层对应关系导致实验照抄都能错。后来我凡是做完一个 VLAN 的配置都会主动核对两样东西display ip interface brief看接口 IPdisplay ip pool看池网段确保一一对应。5. 实验收尾误区对照和个人体会5.1 常见误区对照表实验做完我把最容易翻车的地方整理成了对照表方便以后照着检查误区正确做法翻车现象只建地址池忘了在 VLANIF 下写dhcp select global每个需要分配地址的接口都要选模式客户端收不到 Offer全局池的网关跟接口 IP 不一致gateway-list 必须等于 VLANIF 的 IP能拿到 IP 但无法通过网关通信一个网段建了多个池地址冲突每个网段只保留一个有效池IP 分配不稳定周期性掉线有 DHCP Snooping 但没配信任端口接服务器的端口配置dhcp snooping trusted服务器回包被丢弃获取失败中继模式下忘配dhcp relay server-iprelay 模式必须指定服务器 IPDiscover 到网关后无后续地址池范围过大把网关地址也包含进去分配用excluded-ip-address排除网关和服务器终端抢到网关地址全网中断前三条是配置层面的后三条是安全特性或细节层面的实验环境最容易漏掉的是第一条和第二条。尤其是用华为设备做实验时不少人把dhcp enable一敲、池一建就以为完事了结果接口没选模式折腾半天。5.2 一点个人体会这个实验做完我的核心感受是DHCP 本身不难难的是请求从客户端走到服务器的整条链路上每一环都可能出问题。很多初学者配完一遍能通就觉得会了一旦遇到获取失败就不知道该从哪里看起。我现在的做法是固定一套排查顺序先确认链路二层通不通再查设备统计看报文走向然后核对地址池和接口网段的对应关系最后才上抓包。这套顺序在实验里帮我把排错时间从半小时压到了几分钟。如果还想继续深入可以在这个实验基础上加一个 DHCP Snooping 的安全实验做一做非信任端口丢弃非法 DHCP 服务器的报文看看拓扑里出现野 DHCP 服务器时会发生什么。那部分玩明白之后基本就能理解企业网管为什么总说要管住 DHCP了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑