资讯动态

华为交换机DHCP Snooping配置实战:信任端口、VLAN与速率限制全解析

发布时间:2026/10/14 7:24:15 来源:尧图企业网站定制
1. 项目背景与前期准备1.1 为什么我需要配置 DHCP Snooping先说背景。我手头管理的某公司办公网络规模不算特别大核心交换机加接入交换机一共二十来台终端设备大概几百台。之前网络一直不算太平时不时的有人反馈说上不了网IP地址老冲突莫名其妙的被分配到奇怪的网段。一开始我以为是DHCP服务器的问题翻来覆去查配置、看日志都没发现异常。直到有一次用排查工具抓包才发现内网里有一台私自接进来的小路由器它自带的DHCP服务在跟我们的正式DHCP服务器抢生意。这种场景做网络的人应该都熟——用户自己带了个家用路由器把网线插到了LAN口路由器默认开启了DHCP服务结果整个广播域里的终端全被它分配了错误的IP、网关和DNS轻则上不了网重则全网瘫痪。要彻底解决这类问题最直接有效的手段就是在交换机上开启 DHCP Snooping——让交换机学会监听DHCP交互过程只信任合法的DHCP服务器其他来源的DHCP响应一律丢弃。配置本身不难但有不少细节容易踩坑本文把我实际配置过程中的步骤、思路和踩过的坑完整记录下来。1.2 基础拓扑与设备信息先说清楚我这次配置的环境方便你对照核心交换机1台型号为某款企业级三层交换机作为DHCP服务器的接入点同时承担网关角色接入交换机若干台下联终端PC和AP合法DHCP服务器独立服务器接在核心交换机上地址池规划好了服务正常终端设备PC、笔记本、打印机、无线AP等全部通过DHCP获取地址拓扑上DHCP服务器接在核心交换机所以核心交换机连接服务器的端口需要设置为信任端口而所有面向终端的接入端口都设置为非信任端口。这样配置的逻辑很简单DHCP响应包只有从信任端口进来才放行非信任端口收到的DHCP响应一律丢弃。这里还要强调一个概念DHCP Snooping 本质上是一种安全特性而不是高可用或地址分配功能。它的职责是建立一张信任表记录哪些端口是合法的DHCP服务器来源然后基于这张表过滤所有DHCP报文。很多人一上来就配置却忽略了它的核心思路导致后面排查问题没有方向。1.3 你没有看错全局加VLAN双开关华为设备的DHCP Snooping 配置有一个非常容易忽略的点它需要同时开启全局开关和对应VLAN的开关两个都开了才真正生效。我第一次配置的时候只开了全局结果发现终端该被乱分配还是被乱分配排查了很久才意识到问题所在。配置命令如下# 开启全局DHCP Snooping功能 [Huawei] dhcp snooping enable # 进入需要保护的VLAN开启该VLAN下的DHCP Snooping [Huawei] vlan 10 [Huawei-vlan10] dhcp snooping enable刚开始我不理解为什么要设计成两层开关。后来想明白了全局开关是总闸VLAN开关是分闸。总闸拉了如果某个VLAN没开分闸这个VLAN依然不受保护。华为这种设计是为了让管理员可以灵活控制保护范围但在实际使用中很容易踩坑尤其是当你有几十个VLAN的时候漏配一个VLAN就意味着那个VLAN依然暴露在风险之下。这里要特别提醒配置完成后不是看一眼就完事必须用命令确认两个开关都处于开启状态[Huawei] display dhcp snooping输出的结果里能看到全局状态和VLAN状态。正常情况下应该是 Global DHCP snooping status: Enable 以及对应VLAN下也是Enable。如果只有全局开启而VLAN没开那就是白配。2. 核心配置要点详解2.1 信任端口与非信任端口DHCP Snooping 的信任体系是整个功能的核心。简单说你必须在合法DHCP服务器所在的链路上设置信任端口而其他所有端口保持默认的非信任状态。信任端口和非信任端口的区别在于信任端口允许接收和转发DHCP响应报文DHCP Offer、DHCP ACK等非信任端口只允许接收DHCP请求报文DHCP Discover、DHCP Request等收到DHCP响应报文直接丢弃在我这个场景里DHCP服务器接在核心交换机上所以需要把核心交换机上连接服务器的端口设置为信任端口。接入交换机上联核心的端口不需要设置为信任端口因为接入交换机上联口收到的是DHCP请求而非响应至少在这个场景里不需要。核心交换机配置# 进入连接DHCP服务器的接口 [Huawei] interface GigabitEthernet0/0/24 [Huawei-GigabitEthernet0/0/24] dhcp snooping trusted这个命令看起来简单但有一个细节信任属性是接口级别的所以必须逐个接口去设置。如果有多个合法DHCP服务器或者DHCP服务器通过中继方式跨越了三层那么情况会稍微复杂一些不过本次我的是直连场景一条命令即可解决。配置完成后建议用以下命令验证信任端口是否生效[Huawei] display dhcp snooping interface GigabitEthernet0/0/24输出会明确显示该接口是Trusted还是Untrusted。我见过有人在接口下配了 trusted但实际配置在了错误端口上排查问题时才发现信任给错了口导致合法的DHCP响应也被丢弃全网终端拿不到地址。2.2 接入端口的速率限制配置信任端口和非信任端口配置好之后还有一个容易被忽略但非常实用的配置项对非信任端口的DHCP报文做速率限制。为什么需要速率限制因为DHCP Snooping 本身只做信任判断但如果某个终端被攻陷它可以疯狂发送伪造的DHCP请求报文消耗交换机CPU资源。这在大型网络中是一个真实存在的风险。华为设备的配置命令# 进入接入端口 [Huawei] interface GigabitEthernet0/0/1 [Huawei-GigabitEthernet0/0/1] dhcp snooping rate-limit 30这里我设置的速率是每秒30个报文。实际环境中这个值需要根据你的网络规模进行调整。如果是终端密集的区域比如一个接入端口下挂了多个终端通过Hub扩展那么速率限制要适当放宽否则会把正常请求也丢掉。如果每个接入端口只接一台PC默认的速率就够用了。踩坑提示速率限制太严格会导致终端偶尔获取不到IP地址表现为重启电脑就能上网过一会儿又不行。这个现象特别容易误判为DHCP服务器问题或者网线问题。我一开始把速率限制设置为5个每秒结果某台开启了多个虚拟机的测试机老是上不了网后来把速率提升到20以上就恢复了。2.3 DHCP Snooping 绑定表与IP防欺骗开启DHCP Snooping后交换机会自动构建一张绑定表这张表记录了每个非信任端口学习到的IP地址、MAC地址、VLAN和端口信息。这张表的作用非常关键它不只是用来做DHCP报文过滤的还能配合IP Source Guard 做更严格的防欺骗。虽然本次配置的核心是 DHCP Snooping 本身但如果你手头同时有防御IP/MAC欺骗的需求我强烈建议在接入交换机上把IP Source Guard 也打开。它们两个配合起来效果远好于只开一个。绑定表默认会自动生成也可以通过命令查看[Huawei] display dhcp snooping user-binding正常情况下这条命令会输出一张表格包含IP地址、MAC地址、VLAN、接口等信息。如果某个终端频繁更换IP或者有人手动配置了静态IP与DHCP分配的地址冲突这张绑定表就是你排查问题的最好依据。需要强调的是绑定表的学习依赖DHCP交互过程。也就是说终端必须通过DHCP获取到IP交换机会记录这条绑定关系。如果终端手动配置了静态IP且这个IP恰好与绑定表冲突那你需要检查是不是有人在私设IP。IP Source Guard 可以防止这种情况但如果只做本项目标题下的配置那么在网络中规范终端上网方式同样很重要。3. 实战配置过程与验证3.1 配置前的现场检查与记录在实际动手配置之前我习惯先做一轮完整的状态记录。这一步非常重要因为启用DHCP Snooping 后网络的DHCP行为会发生变化如果出现问题你需要有基线数据来对比排查。我做的第一件事是查看当前所有VLAN的配置和接口状态[Huawei] display vlan [Huawei] display interface brief第二步是查看当前DHCP相关配置确认没有历史上遗留的冲突配置[Huawei] display dhcp snooping [Huawei] display current-configuration | include dhcp如果没有历史残留当前的输出会是空的或者显示全局关闭状态。第三步是记录所有终端的正常获取地址情况。我在开启DHCP Snooping前特意挑了几台PC和一台打印机记录下它们的MAC地址、获取到的IP地址和网关方便后续对比。这些准备工作看似繁琐但在问题排查的时候价值巨大。尤其是当你面对的是一个正在运行的现网环境任何一个操作都可能引起终端上网中断。所以我的习惯是能在线下模拟环境测试的先在测试环境验证测试不了的就从接入交换机上小范围试点而不是全网一次性铺开配置。3.2 统一配置脚本的执行步骤以下是我这次实际操作中执行的完整配置流程按步骤列出每一步都附带说明为什么这么做第一步进入系统视图[核心交换机] system-view第二步开启全局DHCP Snooping[核心交换机] dhcp snooping enable执行完这条命令后全局开关打开但注意这时候VLAN里还没启用所以实际上还不生效。第三步为需要保护的VLAN逐个开启DHCP Snooping[核心交换机] vlan 10 [核心交换机-vlan10] dhcp snooping enable [核心交换机-vlan10] quit [核心交换机] vlan 20 [核心交换机-vlan20] dhcp snooping enable [核心交换机-vlan20] quit这里我特意强调了VLAN的逐个配置。如果你的网络里VLAN很多建议写一个批处理脚本或者用华为的视图批量配置功能。但即便批量操作配置完成后也一定用display命令核对每个VLAN的状态。我见过有人在批量配置时漏了几个VLAN结果这几个VLAN下终端还是会被私接路由器干扰。第四步设置信任端口[核心交换机] interface GigabitEthernet0/0/24 [核心交换机-GigabitEthernet0/0/24] dhcp snooping trusted [核心交换机-GigabitEthernet0/0/24] quit这里对应的就是连接合法DHCP服务器的上联端口。如果你有多台合法DHCP服务器或者DHCP服务器是通过接入交换机接入的你的信任端口设置点会不同但原则不变——合法DHCP服务器所经路径上的端口必须设置为信任端口。第五步在接入交换机上为非信任端口配置速率限制。接入交换机的配置也是在系统视图下开启全局DHCP Snooping和对应VLAN再对每个接入端口做速率限制。这里以接入交换机1为例[接入交换机1] dhcp snooping enable [接入交换机1] vlan 10 [接入交换机1-vlan10] dhcp snooping enable [接入交换机1-vlan10] quit [接入交换机1] interface GigabitEthernet0/0/1 [接入交换机1-GigabitEthernet0/0/1] dhcp snooping rate-limit 30 [接入交换机1-GigabitEthernet0/0/1] quit接入交换机不需要配置信任端口因为合法DHCP服务器在核心侧DHCP响应会从聚合口或上联口转发下来接入交换机对上联口默认按非信任处理。但这里有一个重要细节如果DHCP响应报文是从上联口进来的而在接入交换机上该上联口是非信任端口那么DHCP响应会被丢弃终端就永远拿不到地址。我实际环境中的处理方式是把接入交换机的上联口也设置为信任端口。原因很简单——DHCP服务器发出来的响应报文经过核心交换机后会从核心交换机的下行口转发到接入交换机的上联口接入交换机如果把这个上联口视为非信任端口响应包就会被丢弃。配置命令[接入交换机1] interface GigabitEthernet0/0/24 [接入交换机1-GigabitEthernet0/0/24] dhcp snooping trusted [接入交换机1-GigabitEthernet0/0/24] quit这是一个特别容易踩的坑很多教程或手册都只提核心交换机配置信任端口却没提接入交换机上联口的情况。我一开始也漏了这一条导致接入交换机下联的终端全部无法获取IP地址排查了很久才找到原因。这里我建议你对照自己的拓扑仔细想想你的DHCP响应报文从服务器出发经过哪些交换机、从哪些端口进入接入交换机。凡是DHCP响应报文进入交换机的端口如果它不是合法服务器的直连端口那么是否需要设置为信任端口就需要结合具体场景判断。如果DHCP服务器接在核心上响应经过核心后再发向接入侧那么接入交换机上联核心的端口应该被设置为信任端口否则响应会被丢弃。但也有相反的情况——如果你在接入交换机上联口配置了DHCP Snooping 和信任端口而你的DHCP请求是从这个口出去的这个口其实是双向的入方向收到响应出方向发请求。所以配置信任不会影响请求的正常发送。第六步配置完成后保存配置[核心交换机] save [接入交换机1] save保存非常重要华为设备重启后如果不保存配置就会丢失。我习惯每完成一个阶段的配置就立即保存一次防止中途断电或误操作导致配置丢失。3.3 配置后的验证流程配置完成后验证环节不能省。我的验证流程包括以下几项第一项查看全局和VLAN状态[核心交换机] display dhcp snooping此时输出里应该看不到报错信息全局和VLAN都是Enable状态。第二项查看信任端口[核心交换机] display dhcp snooping interface这个命令会列出所有接口及其信任状态。你需要重点核对已经设置的信任端口是否正确有没有把不该信任的端口也设置成了信任。第三项查看绑定表[核心交换机] display dhcp snooping user-binding绑定表应该包含当前已经通过DHCP获取地址的终端。如果网络刚重启绑定表可能还不完整等一段时间再查看。如果一个终端已经成功获取到IP但没有出现在绑定表里说明配置可能有问题。第四项实际测试终端获取IP。我挑了几台不同位置的终端将网线拔掉重新插上或者直接重启网络连接。观察它们能否正常获取到IP并且获取到的IP是否来自合法DHCP服务器的地址池。如果一切正常说明DHCP Snooping 没有误伤合法流量。第五项模拟非法DHCP响应测试。这一步需要谨慎操作如果你有一台备用设备或可以临时搭建的小路由可以把它接入非信任端口并开启DHCP服务观察新接入的终端是否还能正常从合法服务器拿到地址。正常情况是终端的DHCP请求会被交换机转发给合法服务器非法路由器的DHCP响应会在非信任端口被丢弃所以终端依然能从合法服务器获取IP。这个模拟测试非常直观能确认DHCP Snooping 确实在生效而不仅仅是配置了但没效果。如果模拟测试发现终端还是被非法路由器分配了地址那就要回头查信任端口和VLAN配置了。我当时模拟测试时用的是办公区一台闲置的小路由器接入到接入交换机的某个业务端口然后让一台测试笔记本去获取IP。结果笔记本正常从合法DHCP服务器拿到了地址非法路由器发的Offer没有生效说明防护机制工作正常。3.4 关键参数的计算与选型说明关于速率限制参数我上面写了30这里解释一下这个数字是怎么来的。先估算一下正常场景下每个接入端口可能出现的DHCP报文峰值。假设一个接入端口下挂了一台PC加一台打印机PC重启时会发送DHCP Discover打印机偶尔唤醒也会发送。正常情况下每秒可能只有几个报文甚至更少。如果把多台终端的请求都集中在一瞬间比如断电恢复后所有设备同时开机那么一瞬间的报文数确实会升高。但一般不会超过每秒20个。所以我把速率限制设置为30留了一定的余量既能防止绝大多数攻击又不会误杀正常的批量开机场景。如果你的环境里一个端口下挂了很多设备我建议把速率调整到50或更高。这个值的设定没有绝对标准核心思路是在正常业务最高峰值之上留一些余量同时不要大到失去防护意义。另一个参数是DHCP Snooping 的MAC地址学习数量限制华为设备上可以通过接口下的命令做限制不过我这次没有配置。如果你管理的网络安全性要求较高可以关注一下这个参数但普通办公网里使用默认值即可。4. 实际踩坑记录与问题排查方法4.1 坑一接入交换机上联口未被设置为信任端口这是我这次配置过程中遇到的最严重的问题也是让我花了最多时间排查的问题。现象配置完成核心交换机后接入交换机下联的所有终端都无法获取IP地址。终端一直显示正在获取IP地址然后超时手动配置静态IP可以上网。排查过程第一步我先在核心交换机上查看DHCP服务器的状态确认服务器本身工作正常。用抓包工具在核心交换机连接服务器的端口上抓包能看到终端发来的DHCP Discover 请求已经到达服务器服务器也确实回复了DHCP Offer 和ACK。这说明核心侧没有问题。第二步在接入交换机上抓包。这里不要直接在终端上抓包因为终端收到响应与否需要看交换机是否转发了响应。于是我在接入交换机的上联口抓包发现核心交换机已经把DHCP响应报文转发给了接入交换机也就是说响应报文已经到了接入交换机的上联口。第三步在接入交换机下联终端端口抓包。奇怪的是这里没有看到任何DHCP响应报文。这说明接入交换机把上联口收到的DHCP响应报文给丢弃了。第四步查看接入交换机上的DHCP Snooping 配置发现我没有把上联口设置为信任端口所以接入交换机按照非信任口处理把来自核心侧合法DHCP服务器的响应报文直接丢弃了。解决方法在接入交换机上将上联核心的端口设置为信任端口[接入交换机1] interface GigabitEthernet0/0/24 [接入交换机1-GigabitEthernet0/0/24] dhcp snooping trusted配置完成后终端立马就能正常获取IP了。这个坑的根源在于DHCP Snooping 的信任端口不只是针对合法DHCP服务器直连端口而是针对合法DHCP响应报文进入交换机的所有端口。如果你的DHCP服务器在核心侧那么接入交换机收到该响应的上联口也应该被视为信任端口。你可以把信任端口理解为合法DHCP响应的合法入口。4.2 坑二全局开关和VLAN开关的配合问题第二个坑是我在另一批VLAN上碰到的。当时我为了图省事只开启了全局DHCP Snooping然后就直接测试以为已经生效了。结果发现那些VLAN下的终端还是能被非法路由器分配IP地址。排查时用display dhcp snooping 一看发现Global状态是Enable但VLAN10和VLAN20的状态全是Disable。这才想起需要在每个VLAN视图下单独开启。这个坑的解决方法很简单就是挨个VLAN配置。但更值得说的是经验教训配置完成后第一件事就是核对每个VLAN的状态不要想当然地认为全局开关打开就算配好了。华为设备的这种双层开关设计在只有几个VLAN的场景下不算麻烦但如果你有几十上百个VLAN就非常容易漏配。建议把VLAN清单列出来逐条核对。4.3 坑三速率限制设置过严导致异常掉线第三个坑是在速率限制参数上踩的。最初我把非信任端口的速率限制设置为5个每秒想着防止攻击应该越严格越好。结果运行一段时间后有用户反馈上网断断续续重启电脑能好一会儿过一会儿又不行。排查过程比较曲折。一开始以为交换机端口有环路检查了STP状态没发现问题。又怀疑DHCP服务器的地址池快满了查了使用率也没异常。最后偶然在某台终端上抓包发现终端的DHCP Discover 发出去了但没有收到响应。而核心交换机上查看会话日志也没看到异常。后来想到是速率限制的问题。在接入交换机上把那个端口下的速率限制从5改到30问题立刻消失。原因是那台终端装了多款虚拟化软件每次网络状态变化时多个虚拟网卡会同时发起DHCP请求瞬间报文数超过了5导致交换机把后续的正常请求也丢掉了。这个坑的教训是速率限制不是越小越好必须在抑制攻击和保障正常业务之间取平衡。配置前最好了解你环境下终端的类型和数量。一般办公场景下30这个数值我实测下来比较稳妥。4.4 坑四开启DHCP Snooping后部分老设备获取IP异常最后一个坑比较隐蔽。开启DHCP Snooping后有几台老型号打印机无法获取IP地址。抓包发现这些打印机发出DHCP Discover 后服务器回应的Offer 没有得到打印机的回应打印机也没有再次发送Request。排查了很久最终发现是打印机网卡驱动或协议栈对DHCP Offer中的某些字段处理有问题。实际上这个不是交换机配置的问题而是老设备兼容性问题。解决思路不是调整DHCP Snooping而是给这些打印机设置静态IP地址或者将所在端口在特定情况下做处理。这种情况在实际环境中比较常见。升级安全特性时难免碰到老设备兼容性问题。排查时先确认交换机侧没有丢弃报文的记录再看看设备自身的日志。如果确认是设备兼容性不用纠结直接静态分配地址或者更换网卡驱动更省心。4.5 通用排查命令速查我把自己这次问题排查过程中用到的命令整理成一张速查表供你参考。排查目标使用命令关键看点查看全局及各VLAN的DHCP Snooping状态display dhcp snoopingGlobal和VLAN都应为Enable查看各端口信任状态display dhcp snooping interface确认信任端口是否正确查看DHCP绑定表display dhcp snooping user-binding检查终端是否已建立绑定IP和MAC是否正确查看接口收到的DHCP报文统计display dhcp snooping statistics观察丢弃报文数量是否持续增长检查配置是否有误display current-configuration | include dhcp快速查看所有DHCP相关配置查看接入端口丢包计数display interface GigabitEthernet0/0/1看是否有异常丢弃对比速率限制配置其中 display dhcp snooping statistics 是我最喜欢用的。它能按接口统计收发的DHCP报文数如果发现某个非信任端口有大量报文被丢弃同时又没有对应的DHCP请求进来那就基本可以断定该端口要么正在被攻击要么配置上有问题。5. 常见问题速查表与最终建议5.1 常见问题速查表实际运维中你可能会遇到类似问题。下面这个表格是我从多个项目的经验里整理出来的覆盖面比较广现象可能原因解决方法终端获取不到IP地址接入交换机上联口未设置为信任端口在上联口执行 dhcp snooping trustedDHCP Snooping配置了但无效果只开启了全局开关VLAN未启用逐个VLAN执行 dhcp snooping enable终端间歇性掉线速率限制过小调大非信任端口的rate-limit值合法DHCP服务器响应被丢弃连接服务器的端口没有被设置为信任端口检查并配置信任端口绑定表为空DHCP Snooping 未生效或者终端是静态IP先确认VLAN状态再看终端是否走DHCP配置后保存重启丢失未保存配置执行 save 命令确认保存完成交换机关联ACL导致静态IP用户继网异常IP Source Guard 与静态IP冲突如需严格防欺骗需要为静态IP用户配置对应表项或单独规划5.2 配置流程精简模板如果你正在准备配置可以参考下面这个精简流程它是从我的实际操作中提炼出来的规划VLAN列表明确哪些VLAN需要启用DHCP Snooping在所有相关交换机上开启全局DHCP Snooping逐个VLAN启用DHCP Snooping并记录核对将与合法DHCP服务器相连的端口设置为信任端口在接入交换机上将上联口设置为信任端口为非信任端口配置合理的速率限制保存配置逐项验证全局状态、VLAN状态、端口信任状态、绑定表5.3 最后的个人建议在多个项目里配置过DHCP Snooping之后我最大的感受是这项技术配置难度不高但它对网络拓扑的理解要求比较高。很多人配置失败不是命令敲错了而是没想明白信任端口到底应该设在哪些位置。你把连接服务器的口设为信任这只是第一步如果DHCP响应报文还要经过其他交换机那么这些交换机的对应入端口同样要考虑信任问题。另外接入交换机的上联口这处配置是我见过被提到最少但实际最容易出问题的地方。你可以用一条简单的方法自我验证从终端的角度出发沿着DHCP响应报文的传输路径经过的每一个交换机端口都要问自己一个问题——这个口是不是合法DHCP响应的入口如果是且交换机启用了DHCP Snooping那么这个口大概率需要设置为信任端口。还有一点想特别强调不要在一个环境里盲目套用另一个环境的配置脚本。不同公司的网络拓扑、VLAN划分、DHCP服务器位置都不一样信任端口的设置点自然不同。先画清楚你的拓扑图想明白响应报文路径然后配置和验证才有效率。最后配置DHCP Snooping后我建议你持续观察几天。看绑定表是否正常增长看交换机上有没有持续的DHCP报文丢弃记录看用户有没有异常反馈。安全功能不是配置完就完事的它需要你结合运行数据持续调整和优化。我自己就在上线后的第二天根据绑定表的增长速度发现了一个接入端口下的异常流量顺着排查又清理了一台私接的小Hub算是配置这个功能带来的又一层额外收获。

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

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

免费获取报价 →
↑