做了这么多年网络运维,你迟早会碰到这样一件事:新办公室一堆终端要上线,IP地址手动配到怀疑人生;或者临时加了几十台摄像头,一个个改地址、查冲突,折腾到半夜。这种时候,让华为交换机直接把DHCP这块活儿接下来,是最省心的做法。华为的中低端盒式交换机,比如S5700、S5720、S5735这些,以及框式核心设备,都能在VRP平台上直接配置DHCP,充当整个园区网的地址分配中心。这篇文章就围绕华为交换机DHCP怎么配置展开,从地址池规划、全局池和接口池选型,到多网段中继、疑难排错,把实际操作里会碰到的坑都过一遍。不管你是刚入行的网工,还是一直在网络岗上摸爬滚打的老手,照着这套思路和命令,基本可以少走不少弯路。
我先把话说在前头:DHCP配置本身不难,难的是配之前没有把地址段、租期、排除地址这些想清楚,导致后面排错排到怀疑人生。所以下面先花点篇幅讲思路,再上命令。
1. 动手配置前,先想清楚这几件事
1.1 交换机在DHCP场景里到底扮演什么角色
很多人上来就问“华为交换机怎么配DHCP”,其实这个问题得先反问一句:你的交换机是当DHCP服务器,还是当DHCP中继?
如果交换机本身直接给终端分配地址,它就是DHCP Server角色。这种情况下,地址池、网关、DNS都在交换机上配置,终端从VLAN接口拿到IP。这也是大多数中小型园区、办公室最常见的用法。
另一种情况是,公司有个独立的DHCP服务器(比如Windows Server、Linux主机),交换机只管转发客户端的DHCP请求,把广播报文从中继到服务器所在网段。这种角色叫DHCP Relay,也就是中继。华为的三层交换机或者支持IP路由的二层交换机都可以做中继,但配置方式完全不一样。
还有一类是DHCP Snooping,这是安全防护角色,用于防止私接小路由器乱发地址、防止伪造DHCP服务器。它不参与地址分配,但对网络稳定至关重要,后面我会专门讲。
搞清楚角色之后,再去看设备能力。华为的S5700、S5720、S5735这些主流接入/汇聚交换机,普遍支持DHCP Server功能;但个别老型号或者低规格设备,受限于硬件和VRP版本,可能只支持DHCP中继,不支持本地服务器。这一点在选型或接手旧设备时要先确认,别等到配置时才发现命令敲不进去。
1.2 地址池规划是整件事的重头戏
很多配置问题,根源不在命令,而在地址规划。DHCP地址池规划必须要回答这几个问题:
第一,VLAN和网段怎么对应。通常一个VLAN对应一个IP子网。办公网一个VLAN,监控一个VLAN,访客一个VLAN,各自独立网段,互访走三层网关。如果规划混乱,比如两个VLAN共用同一个网段,DHCP池就很难写清楚。
第二,哪些地址要排除。网关地址当然不能动态分配出去,交换机管理地址、打印机、门禁控制器、服务器、NAS这些需要固定IP的设备,都应该在地址池里排除掉,或者直接用静态绑定。实操中常见错误是网关地址落在动态分配范围里,一旦终端抢到网关IP,整网断的莫名其妙。
第三,租期怎么定。办公电脑通常建议1到3天,会议室临时终端、访客Wi-Fi可以设置2到6小时的短租期,这样地址能及时回收。监控摄像头、门禁这类设备长期在线,租期可以设置更长,减少续约请求的网络开销。租期长短还影响排查难度——租期太短,终端频繁续约,DHCP报文增多;租期太长,又容易造成地址浪费。
第四,地址池规模怎么算。一个VLAN里实际在线设备数,建议按1.2到1.5倍来规划地址数量。比如办公区预计80台终端,地址池至少留100个可用地址。不要只看现在在线数,要给临时接入的设备、新增工位留出余量。
1.3 全局地址池和接口地址池,到底选哪个
华为交换机的地址池有两种组织方式:全局地址池(Global Pool)和接口地址池(Interface Pool)。这两者的差别,配过一遍之后就会非常清楚。
全局地址池是在系统视图下用 ip pool 创建的,它独立于物理接口和VLANIF接口存在。你可以把地址池绑定到任意接口上,哪个接口选择 dhcp select global,哪个网段的终端就从对应的地址池拿地址。这种方式特别适合多网段集中管理,也方便DHCP中继场景下,服务器上统一维护地址池。
接口地址池则不一样,它不用单独创建,接口IP所在网段就是地址池范围,网关默认是接口IP。配置一个VLANIF接口,敲两行命令就能跑起来。适用于单一网段、结构简单的小网络,好处是配置飞快,不容易写错。
用个生活化的类比:全局地址池像物业统一管理的一串钥匙,每一层楼要用,都从物业那里登记拿钥匙;接口地址池则是每一层楼自己配了一把备用钥匙,自己楼层的房间自己管。全局池灵活但需要规划,接口池简单但管不了太复杂的场景。
我的建议是:新项目或者网段较多的场景,直接上全局地址池;临时环境、单网段实验、测试网络,用接口地址池快速搞定。下面的实操也以全局池为主,接口池和中继单独讲。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境准备:VLAN、三层接口和网络可达性
2.1 典型组网拓扑和VLAN怎么划
假设一个标准小园区:核心交换机做DHCP服务器,下联几台接入交换机,终端分别属于办公、监控、访客三个业务网段。这个结构很典型,配置DHCP之前先把VLAN建好。
办公VLAN 10,网段192.168.10.0/24,网关192.168.10.1;监控VLAN 20,网段192.168.20.0/24,网关192.168.20.1;访客VLAN 30,网段192.168.30.0/24,网关192.168.30.1。每个VLAN一个VLANIF三层接口,作为网关。
接入交换机上创建对应VLAN,连接终端的端口划分到相应VLAN,连接核心的上联口配置成Trunk并放行这些VLAN。这一层很多人会漏,比如VLAN建了、地址池配了、DHCP也开了,结果终端就是拿不到地址,一查发现接入交换机的Trunk口没放行VLAN,二层都不通,DHCP报文根本传不上去。
2.2 网关接口和路由配置不能省
在核心交换机上,每个VLAN都要有一个VLANIF接口并配置IP地址,这个IP就是终端获取地址后的网关。比如:
bash复制system-view
vlan batch 10 20 30
interface vlanif 10
ip address 192.168.10.1 255.255.255.0
interface vlanif 20
ip address 192.168.20.1 255.255.255.0
interface vlanif 30
ip address 192.168.30.1 255.255.255.0
VLANIF接口一定要是Up状态。很多终端“拿到地址但上不了网”,最后定位到网关接口down了,或者IP地址被人删了,甚至跟别的设备冲突。
如果网络还要出外网,核心交换机上需要写默认路由到出口设备,比如 ip route-static 0.0.0.0 0.0.0.0 10.0.0.1,同时确保互联接口和NAT、ACL这些没有阻断流量。DHCP本身不涉及这些,但排障时经常会发现真正的问题出在路由和NAT,所以提前确认一下总没错。
2.3 先把固定IP设备清单整理出来
配置DHCP之前,强烈建议先梳理一份“必须固定IP的设备清单”。打印机、扫描仪、NAS、门禁控制器、支付终端、视频会议终端,通常都需要固定的IP地址,因为它们要被其他设备访问,或者对端配置里写死了地址。
表格可以这样列:
| 设备名称 | MAC地址 | 固定IP | 所属VLAN |
|---|---|---|---|
| 财务打印机 | 5489-98A1-2B3C | 192.168.10.100 | 10 |
| 门禁控制器 | 5489-98A1-9D4E | 192.168.10.101 | 10 |
| NVR录像机 | 5489-98D2-5F6A | 192.168.20.100 | 20 |
| 文件服务器 | 5489-98F3-8C2D | 192.168.10.102 | 10 |
有了这份清单,地址池里就能准确排除这些地址,或者后面用静态绑定让设备自动获取固定地址。没有这一步,等设备上线出了问题,你是很难在短时间内想起来哪个设备用了哪个IP的。
3. 全局地址池模式:配置命令与验证
3.1 开启DHCP服务并创建地址池
先说一句关键的话:华为交换机上,如果不先执行 dhcp enable 打开DHCP服务,后面很多DHCP命令是敲不进去的。系统会提示你,先去开启DHCP功能。
开启服务后,创建全局地址池:
bash复制system-view
dhcp enable
ip pool office10
network 192.168.10.0 mask 255.255.255.0
gateway-list 192.168.10.1
dns-list 223.5.5.5 114.114.114.114
excluded-ip-address 192.168.10.1 192.168.10.60
lease day 3 hour 0 minute 0
quit
逐个解释一下每条命令在干嘛:
network 定义可分配的网段和掩码,这个范围要和VLANIF接口的网段一致,否则终端即使拿到地址也无法出网。gateway-list 指定分配给终端的默认网关,必须填VLANIF接口的IP,也就是192.168.10.1。dns-list 指定DNS服务器,建议至少填两个,避免单个DNS故障后终端无法解析域名。excluded-ip-address 把网关、交换机管理地址、打印机、服务器这些固定地址排除掉,不让DHCP分出去。lease 设置租期,办公场景三天比较合适,既能及时回收离线设备的地址,又不会频繁续约。
这里有个细节:地址池里还要特别注意,网络号和广播地址是无法分配的,这是协议层面的限制,不需要额外排除,但算可用地址时别把它们算进去。
3.2 在VLANIF接口上启用DHCP并验证
地址池创建好之后,还差最后一步:在VLANIF接口上告诉交换机“这个接口下的终端,从哪个地址池拿地址”。
bash复制interface vlanif 10
ip address 192.168.10.1 255.255.255.0
dhcp select global
dhcp select global 的意思是,本接口使用全局地址池分配地址。当接口上有DHCP请求上来时,交换机根据自己的判断,在全局地址池里找到与接口IP同网段的那个地址池分配地址。所以全局地址池不需要显式绑定接口,交换机自动匹配的。
验证命令是重点,比配置命令还重要:
bash复制display ip pool name office10 all
这条命令能看到地址池的网段、网关、DNS、租期、剩余地址数、冲突记录。如果剩余地址为0,基本可以断定是地址池耗尽或者租期过长。
bash复制display dhcp server statistics
这条命令看的是DHCP报文统计,包括收到的Discover报文数、发出的Offer/Ack数。如果Discover在涨,Offer没涨,说明交换机侧有问题;如果Discover本身是0,说明客户端的广播请求根本没到达交换机,要去查二层链路。
验证阶段,终端上执行 ipconfig /release 再 ipconfig /renew(Windows),或者断开Wi-Fi重新连接,观察能否在几分钟内拿到配置。也可以在交换机和终端之间的链路做抓包,能看到经典的DORA四步:Discover、Offer、Request、Ack,四条报文齐了,DHCP流程就是通的。
3.3 租期、保留地址和Option的细节处理
租期参数仍然建议在地址池里显式设置,不写则默认是1天。华为的 lease 命令可以精确到天、时、分,比如 lease day 1 hour 0 minute 0。我这里要补充一个关于续约的常识:客户端在租期过半时会尝试向原服务器单播续约,这个时间点叫T1;如果续约失败,到租期87.5%时会重新广播请求,这时任何可用的DHCP服务器都可能响应,这个时间点叫T2。如果你发现终端总是在某个固定时间点掉线重连,很可能是租期设置太短,或者DHCP服务器响应太慢导致T2阶段超时了。
排除地址除了用 excluded-ip-address 一段一段排,也可以在地址池里给特定设备做 static-bind,让某些MAC固定拿到指定IP。这个后面进阶部分会专门说。
至于Option,日常运维最常用的是给终端下发特殊配置,比如PXE引导服务器的 option 66 和 option 67,IP电话场景的 option 184,无线控制器场景的 option 138。华为VRP上可以定义Option模板再关联到地址池,但多数情况下默认的网关和DNS下发就够了,Option这块知道有这么个能力就行。
还有一个容易忽略的坑:全局地址池创建时,网段要和VLANIF接口IP严格同网段。例如VLANIF 10是192.168.10.1/24,地址池就必须是192.168.10.0/24。如果地址池写成192.168.11.0/24,接口下的终端会拿不到任何地址,因为交换机发现接口所在网段匹配不到地址池。
4. 接口地址池与DHCP中继:多网段场景怎么配
4.1 接口地址池的快速配置方式
如果网络只有一个网段,或者你只是临时调试,接口地址池会比全局池快得多。它的逻辑是:接口IP就是网关,地址池范围就是接口IP所在的网段。
配置更简单,直接在VLANIF接口下两行搞定:
bash复制interface vlanif 20
ip address 192.168.20.1 255.255.255.0
dhcp select interface
dhcp server dns-list 223.5.5.5 114.114.114.114
dhcp server excluded-ip-address 192.168.20.1 192.168.20.10
dhcp select interface 表示使用接口地址池,无需单独创建地址池。dhcp server excluded-ip-address 排除网关和固定设备地址,这个命令在接口池模式下使用时前缀跟接口相关,与全局池里的 excluded-ip-address 写法不一样,不要搞混。
接口池适合单网段小场景,但如果VLAN很多,每个VLANIF下都要配一遍DNS、租期这些参数,管理起来比较散。网段一多,建议还是回到全局池,集中管理。
4.2 DHCP中继配置:服务器在别处怎么办
有些企业已经部署了独立DHCP服务器,不希望交换机承担地址分配。但DHCP请求是广播报文,默认无法穿过三层设备。这时候就得在网关接口上做DHCP中继,把广播请求单播转发给服务器。
假设核心交换机上有个VLANIF 30(访客网段192.168.30.1/24),DHCP服务器在192.168.10.254。配置如下:
bash复制interface vlanif 30
ip address 192.168.30.1 255.255.255.0
dhcp select relay
dhcp relay server-ip 192.168.10.254
dhcp select relay 把该接口切换为中继模式,dhcp relay server-ip 指定真正的DHCP服务器地址。需要注意,中继模式下,交换机不再从本地地址池分配,而是把所有DHCP请求转发给服务器。
服务器那头不是省事的活。DHCP服务器必须能访问192.168.30.0/24这个网段,并且要在服务器上为这个网段创建对应的作用域,否则请求到了服务器也会被拒绝。中继链路还要保证UDP 67和68端口的报文能够正常转发,中间防火墙如果策略严格,需要放行这两条。
4.3 多个VLAN中继到同一台服务器
多VLAN中继的配置逻辑是完全一样的:每个需要动态获取地址的VLANIF接口,都配置 dhcp select relay 和 dhcp relay server-ip,指向同一个服务器。服务器上则为每个网段单独创建作用域。
这个方案的好处是地址池在服务器上统一维护,变更方便,设备压力小;坏处是依赖服务器,服务器挂了,整个网络都分不到地址。交换机本地做DHCP虽然也有单点风险,但设备数量少时影响面小。
实测中还有一个常见问题:多VLAN做中继后,发现有些VLAN的终端能拿到地址,有些拿不到。排查思路是先在交换机上看VLANIF接口是不是Up、接口下中继配置是否指对,然后用 display dhcp relay server-ip 确认中继地址,最后再去服务器上看作用域是否存在、地址池是否耗尽。大部分故障都不是中继链路本身断了,而是服务器作用域漏建。
5. 疑难杂症排查:获取不到、上不了网、地址冲突
5.1 终端一直获取不到地址,先按这个顺序查
“拿不到IP”是DHCP排障里最高频的问题,没有之一。我总结了一个固定的排查顺序,遇到问题按顺序过一遍,基本十分钟能定位:
先看 display dhcp server statistics,确认交换机有没有收到客户端的Discover报文。如果计数器不涨,说明客户端的广播请求压根没到达交换机。这时去查VLAN划分、Trunk放行、端口是不是在正确的VLAN里,甚至查查是不是中间还有二层隔离策略把DHCP报文给丢了。
如果Discover在涨,但Offer/Ack没涨,问题大概率在交换机或服务器侧。逐一检查:dhcp enable 是否开启,VLANIF接口是否Up,接口下 dhcp select global 是否配置,地址池是否还有剩余地址,地址池网段和接口IP是否同网段。这里我遇到过好几次,地址池网段写错一位,导致接口匹配不到池,所有请求全部石沉大海。
再看地址池剩余量,用 display ip pool name office10 all 查看。如果剩余地址为0,高负载环境下会持续分配失败。租期太短也容易引起瞬时地址被占满,可以试着缩短租期或者扩容地址池。
最后可以考虑用调试命令看报文交互细节:
bash复制debugging dhcp server packet
terminal monitor
terminal debugging
注意调试命令在生产环境要慎用,高流量下会对设备CPU造成冲击,建议在终端数量少的窗口期执行,用完及时 undo debugging dhcp server packet 关闭。
5.2 拿到地址了,但终端上不了网
这种“地址拿到了但出不去”的问题,故障范围其实已经缩小了很多,但也很容易误判。
先ping网关。如果网关不通,检查VLANIF接口是不是正常,IP是否冲突。曾经有个现场,终端能拿到192.168.10.66,但就是ping不通192.168.10.1,后来发现有人在电脑上手动配了192.168.10.1,直接把网关地址给占了,所有终端路由全乱。解决办法就是在地址池里排除地址后,全网排查静态IP。
网关通了但上不了外网,重点看路由和出口。核心交换机有没有默认路由、出口设备NAT是否正常、ACL是否放行了对应网段。还有一个常见坑:DNS地址配错了,终端能拿到IP,能ping通IP,但域名解析不了,表现就是“什么都打不开,微信也连不上”。检查 display ip pool 里的dns-list,确认DNS地址是否可达。
访客VLAN上不了网还有一个原因,有些网络做了严格的访问控制,访客网段只能通过特定ACL到出口,不认真核对ACL就会反复看到“拿到IP上不了网”的报障。这时反而是逻辑问题,不是DHCP问题,别在DHCP配置里钻牛角尖。
5.3 地址冲突和续约异常怎么处理
设备多起来之后,IP地址冲突几乎是必然遇到的。最常见的原因是有人手动设置了静态IP,而这个IP正好在动态地址池范围内。DHCP分配前会通过ARP探测类似机制检测冲突,但手动配置的地址有时躲过了检测,两边同时在线就冲突了。
华为交换机上可以查询冲突记录:
bash复制display dhcp server conflict
如果有冲突记录,能看到冲突的IP地址和对应MAC。简易处理方式是把这些IP段排到地址池之外,或者给冲突的设备做静态绑定。解决根本问题,还是要求所有固定IP设备都走DHCP静态绑定,而不是手填IP。
续约异常也值得注意。终端在T1时间点续约失败,到T2时间点重新广播请求,如果新请求被DHCP Snooping非信任口拦截,或者中继链路不通,终端就会在租期到期后被强制下线,表现为“每隔一段时间掉一次线”。解决办法是把租期调长,同时检查中继和Snooping配置。如果你发现网络里所有终端都在同一时间段掉线,那基本就是租期统一到期后,大量请求风暴导致交换机CPU处理不过来,这种场景下调长租期、错峰上线很重要。
5.4 模拟器里DHCP正常,重启设备后就失效
很多朋友在eNSP模拟器里做实验,配置保存前一切正常,但重启设备后终端就获取不到地址了,甚至 display current-configuration 里都找不到DHCP配置。原因很简单:配置没有保存。
华为交换机配置默认是不自动落盘的,所有命令行修改都存在内存里,一旦重启全部丢失。需要在配置完成后执行:
bash复制save
系统会提示确认文件名,默认是vrpcfg.zip,直接回车确认保存即可。只有保存过的配置,重启后才会生效。这不是DHCP本身的问题,但在这个环节踩坑的人真的非常多,包括一些刚接触命令行的新手。养成配完必保存的习惯,能省掉无数返工时间。
6. 进阶玩法:IP-MAC绑定、DHCP Snooping与防攻击
6.1 给关键设备做DHCP静态绑定
之前说的打印机、服务器、门禁这些固定IP设备,与其手填IP,不如用DHCP静态绑定:这些设备正常走DHCP流程,但交换机识别到它们的MAC地址后,会固定分配同一个IP。这样既保证地址固定,又能统一管理,比手动配IP更可控。
全局地址池下的静态绑定写法:
bash复制ip pool office10
network 192.168.10.0 mask 255.255.255.0
gateway-list 192.168.10.1
static-bind ip-address 192.168.10.100 mac-address 5489-98A1-2B3C
绑定之后,这个MAC的设备每次请求都会拿到192.168.10.100。要注意一个坑:做了静态绑定的地址,不能再出现在 excluded-ip-address 排除列表里,否则两条规则互相冲突,设备可能获取不到地址。另外,也不要手动在另一台设备上配置同一个IP,绑定只是约束DHCP分配行为,拦不住手动静态配置。
老款华为框式或部分盒式交换机上还有AM绑定的玩法,可以在接口下把IP和MAC都绑死:
bash复制interface gigabitethernet 0/0/1
am user-bind mac-address 5489-98A1-2B3C ip-address 192.168.10.100
这个方式更严格,不但DHCP时拿固定IP,普通手动配这个IP也不行。但注意版本兼容性,不同的VRP版本、不同系列对 am 命令的支持不一样,配置前先确认设备支持情况。对于不支持AM的新设备,建议用 static-bind 加DHCP Snooping组合,达到类似效果。
6.2 配置DHCP Snooping,防私接小路由器
园区网里最大的DHCP隐患之一,是有员工私接一个小路由器或者开了手机的USB共享网络,导致整个VLAN里出现一个“野生”的DHCP服务器,把终端全部分到错误网段,网络瞬间瘫痪。
配置DHCP Snooping可以限制这个风险。它的逻辑是:交换机监听DHCP报文,只信任特定端口收到的DHCP服务器响应,其他端口一律视为非信任,收到的DHCP Offer/Ack报文直接丢弃。
华为交换机上这样开:
bash复制system-view
dhcp enable
dhcp snooping enable
vlan 10
dhcp snooping enable
quit
interface gigabitethernet 0/0/1
port link-type trunk
port trunk allow-pass vlan 10
dhcp snooping trusted
上联口(接核心交换机或合法DHCP服务器的口)要配置 dhcp snooping trusted,其他面向终端的接口保持默认非信任状态即可。
有个细节很多人会搞混:如果交换机本身就是DHCP服务器,配置Snooping时同样要把服务器侧的上联口或者本设备自己出DHCP报文的路径理清楚,否则可能把合法响应给过滤了。正确的做法是把真正接收服务器报文的接口设为trusted,而不是把终端接口也设成trusted,否则伪造DHCP服务器的报文也能从终端口进来,防护就失效了。
Snooping开启后还能做用户表项绑定,display dhcp snooping user binding 能看到哪个接口、哪个VLAN、哪个MAC拿到了哪个IP,这是排查地址分配问题的利器。结合DHCP Snooping绑定表,还可以在接口上限制同时获取地址的用户数,防止有人私接小交换机拖垮地址池。
6.3 防止地址池耗尽的几个实用技巧
地址池耗尽不一定要等到告警才处理,日常运维中可以主动做几件事。
第一,合理控制租期。访客网络建议短租期,比如2小时到6小时,过期地址快速回收。办公网3天,稳定且续约开销小。不要一个租期走天下,要按场景区分。
第二,地址池容量留余量。规划时就按在线设备数的120%到150%预留,不要卡着算。我曾经就见过一个仓库,规划80个地址正好够80台扫码枪,结果多了两台临时设备后地址池直接爆了,新设备全部分不到IP。
第三,定期检查地址池使用情况。命令很简单:
bash复制display ip pool
能看到所有地址池的名称、网段、总地址数、已用数、可用数。建议监控脚本定期拉取这个输出,超过80%就要考虑扩容或者清理。
第四,排除地址要提前做。前面讲的打印机、服务器、门禁这些固定IP,要么排除,要么静态绑定,别让它们占用动态地址池。否则一个打印机长期占着一个动态地址,既容易冲突,又浪费地址空间。
最后再分享一个实操小技巧:每次在华为交换机上改完DHCP相关配置,我都会马上执行 display current-configuration | include dhcp 检查一遍,确认所有关键配置都生效,然后立刻 save。这不是小题大做,而是被“配置没保存,重启全丢”这个坑坑过太多次之后养成的习惯。DHCP配置看着简单,真正让你半夜爬起来处理的,往往是这些最不起眼的细节。
