ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

华为交换机DHCP配置实战:从DORA流程到中继与Snooping

华为交换机DHCP配置实战:从DORA流程到中继与Snooping 1. DHCP到底在解决什么问题1.1 没有DHCP的世界有多痛苦回想一下没有DHCP的年代。新入职一台电脑你得先去IT那儿领一张纸条上面写着IP地址、子网掩码、网关、DNS然后打开网络设置一项项填进去。填完隔天发现隔壁工位把IP占用了又得回来改。笔记本从办公室带回家还得手动切成家里的网段忘了改就上不了网。终端一多这种手工操作根本就是个无底洞。DHCP全称Dynamic Host Configuration Protocol动态主机配置协议干的事就是把这些参数自动发给终端。电脑插上网线或者连上Wi-Fi不需要任何人干预自动拿到一套合法的网络参数。为什么今天大家觉得网络就该是“插上就能用”后台基本都是DHCP在撑只是它一直隐形在工作很少被注意到。从工作场景看DHCP的价值不只是省事。它能让IP地址资源被高效复用办公网几百个终端不可能人手一个固定公网地址DHCP按需分配租约到期自动回收转给别的设备用。它还避免了一个经典事故——IP地址冲突。两台机器配了同一个地址轻则掉线重则整个广播域里网络时断时续排查起来极其折磨。DHCP因为带地址池管理和冲突检测机制从源头上基本杜绝了这类问题。所以这篇文章不打算只背概念重点放在实操华为交换机上怎么配置DHCP、怎么给多个网段分配地址、DHCP中继怎么弄、内网已经存在物理DHCP服务器时交换机该怎么配合、虚拟化环境里vNIC这种特殊“终端”又要注意什么。这些内容都是平时配置网络和排障时真正绕不开的点我争取把命令、思路、坑一次说清楚。1.2 DORA的四个动作是理解一切的起点搞DHCP配置之前先得把这个协议最核心的交互流程刻在脑子里它叫DORA四个字母对应四个过程Discover、Offer、Request、Ack。很多排障问题只要对着DORA一步一审基本都能定位到原因。Discover发现终端接入网络后发一个广播包源地址0.0.0.0目的地址255.255.255.255意思是“网段里有没有DHCP服务器我需要一个地址”。Offer提供DHCP服务器收到后从地址池里挑一个可用IP回复一个Offer包把这个地址连同掩码、网关、租期一起发给终端。Request请求可能有多个DHCP服务器都回了Offer终端从中选一个再广播一次Request告诉全网“我决定要谁的地址”。Ack确认被选中的服务器收到Request正式确认分配终端此时才把IP配置到网卡上。这里的细节值得展开说。Offer不是锁定的终端收到Offer后可能不会用服务器只是预留这个地址一小段时间标准做法是短时间没有收到Request就释放。Request必须是广播哪怕终端已经知道自己要选哪台服务器也要用广播方式发送因为其他服务器也需要知道“你的Offer我没选”这样才能释放它们预留的地址。租约这个事也很关键。Ack之后IP不是永久归终端所有而是给了一个租期常见配置是一天或八小时。租约过了50%终端会主动向服务器发起单播续租请求过了87.5%还没续上就重新走一次完整的DORA。明白了这个机制你就能理解为什么有时候终端到时间会自动换IP为什么查看地址池时总有地址处于“已分配但很久没见活动”的状态。理解了DORA再去看交换机配置、中继部署、冲突排查就不是背命令了而是在协议流程上做文章。2. 华为交换机上把DHCP跑起来2.1 基础配置步骤与命令华为交换机是园区网里的主力设备这里以常见的S5720或S5735系列为例。要让交换机本身充当DHCP服务器分三步全局使能DHCP、创建地址池、在接口上启用。第一步全局使能system-view [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 223.5.5.5 8.8.8.8 [HUAWEI-ip-pool-vlan10] excluded-ip-address 192.168.10.1 192.168.10.20 [HUAWEI-ip-pool-vlan10] lease day 1 hour 0 minute 0第三段里我特别加了excluded-ip-address把网关和需要保留固定地址的设备排除在外。这个动作太重要了很多人配置完发现网关地址被分出去或者打印机、门禁控制器这种不能换IP的设备突然掉线基本都是忘了加排除地址。lease命令是设置租期按需调整办公网一般一天客房或者访客网络可以设置8小时避免已离开的人还长期占着地址。第三步在接口上启用。可以直接在物理接口下启用但更多场景是在VLANIF三层接口上启用[HUAWEI] interface Vlanif10 [HUAWEI-Vlanif10] ip address 192.168.10.1 255.255.255.0 [HUAWEI-Vlanif10] dhcp select globaldhcp select global意思是让这个接口去全局地址池里找匹配网段的地址池分配地址。华为还有一种dhcp select interface方式直接在接口下用dhcp server ip-range定义地址段适合单网段、配置量小的场合。我用得比较多的是global模式地址池集中在全局查看管理都方便多网段时也好维护。2.2 配置完怎么验证和查看配置完不是结束必须验证一遍。华为交换机查看DHCP配置的命令比较分散我列一组现场最常用的display ip pool查看地址池配置和分配统计能看到总地址数、已用地址数、空闲地址数。display ip pool name vlan10 used查看指定地址池里具体哪些IP被分配、分配给了谁、租约状态。display dhcp server statistics查看DHCP服务器的报文统计能看出Discover、Offer、Request、Ack各收发了多少。display dhcp select global查看哪些接口启用了global模式的DHCP选择。有个小技巧排查“终端拿不到IP”时先看display dhcp server statistics。如果Discover计数一直在涨但Offer计数不动基本可以判断地址池耗尽或MAC地址被拉黑如果Offer发出去了但Ack没收回来问题多半在请求报文在链路上丢了这时候要从二层链路和中继链路查。日志里其实也能看到DHCP_SERVER相关的告警华为设备形态不同可以再结合info-center去过滤。实站里我发现有些同行配完地址池忘了在VLANIF上敲dhcp select global结果终端拿不到地址。这不是罕见失误是因为很多人的配置习惯是全局部分先写接口部分后写中间被打断就漏了。所以验证时第一件事就是用display dhcp select global看接口上到底有没有生效别直接在终端那边干等。3. 一个DHCP服务器怎么喂饱多个网段3.1 广播域隔离带来的中继需求单个DHCP服务器给一个网段分配地址前面那种配置就够了。但真实网络里往往有几十个VLAN每个VLAN一个网段总不能每个网段都配一台DHCP服务器吧。这个时候核心问题就来了DHCP的Discover和Request都是广播报文而VLAN天生隔离广播域路由器不会把广播包转发到别的网段。DHCP服务器在VLAN10的广播域里VLAN20的终端发广播它也听不到。解决办法有两种思路得区分清楚。一种是接口模式或者多地址池模式让交换机在每一个VLANIF上都充当DHCP服务器角色等于逻辑上走一遍全局。这个方案在中小型网络里很常见核心交换机本身就能扛不必额外加服务器配置也不复杂。缺点也明显地址池分散在各网段里统一管理和审计麻烦一些排查时要逐段看。另一种就是中继DHCP Relay。原理是当终端发Discover广播时三层设备把它转换成单播包发给指定的DHCP服务器服务器回复的Offer再通过中继设备原路转回给终端。终端全程感知不到中继的存在它只知道自己发了广播、收到了回复。中继报文里还带一个giaddr字段记录中继接口的IP地址服务器收到后能判断“这个请求来自哪个网段”从而从对应的地址池里分配地址。打个比方DHCP是宿舍楼里的大喇叭广播中继就像楼下值班室的宿管大爷。广播在楼道里喊大爷听到了单独打电话把内容转告给物业中心物业中心再通过大爷把答复转回来。楼里的人不需要知道物业中心的位置只要大爷岗位在就行。3.2 华为交换机中继配置实操与案例配置中继前先明确角色分配。这次交换机不承担DHCP服务器功能它只当中转站真正的DHCP服务器可以是另一台服务器主机也可以是另一台核心设备。以最典型的场景举例核心交换机为汇聚设备DHCP服务器是一台Linux服务器IP为10.10.0.10要同时服务VLAN10的192.168.10.0/24和VLAN20的192.168.20.0/24网段。核心交换机上的配置如下[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 10.10.0.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 10.10.0.10这里有个细节必须注意单独有dhcp relay server-ip还不够前提是交换机和DHCP服务器之间三层路由得通。设备上dhcp relay server-ip这条命令默认不校验对端可达性但你中继的报文发不出去一切白搭。建议配置完成后先在交换机上直接ping服务器管理地址确认路由畅通。服务器侧也要配合。DHCP服务器要给两个网段分配地址需要建两个作用域同时要确保中继过来的请求能匹配正确的地址池。有经验的运维会在服务器上开启基于giaddr的作用域选择或者使用不同的超级作用域配合中继掩码来匹配。Linux服务器用ISC DHCP的话subnet段里写清楚网段和掩码服务器收到giaddr后会自动判断目标网段无需额外配置Windows Server里的DHCP需要新建两个作用域并且在中继VLANIF接口上启用“允许中继”即可。还有一种常见问法是“一个DHCP服务器发几个网段”。答案是在中继模式下几段都可以发理论上没上限。实践中要注意的是地址池管理和服务器性能。服务器上每个网段建一个地址池交换机每个VLANIF指一次relay server-ip。如果网段几十上百建议在服务器上通过自动分配策略和IP范围规划统一管理否则后面排查时你都不知道哪个地址池对应哪个VLAN。我实际配置中继时最常踩的坑是忘了在VLANIF上激活dhcp select relay模式。默认VLANIF没有DHCP相关配置只在里面配了dhcp relay server-ip并不会自动启用relay。因为华为的接口DHCP模式默认是none。排查时用display dhcp relay interface查看如果显示没有使能relay赶紧补上。4. 内网已经有物理DHCP服务器交换机怎么配合4.1 “别人的局域网”怎么接入合法服务器不少公司的网络里已经有了一台物理DHCP服务器比如Windows Server或者一台专门的小机器。这种情况通常发生在这样的场景某个部门自己搞了个局域网拉了台旧服务器做DHCP后来整个公司网络改造这台服务器要纳入统一管理或者办公网升级新买的防火墙、路由器上自带DHCP但原有物理服务器还在继续服务不能马上停掉。这时候交换机的配置逻辑跟上文“交换机做DHCP服务器”完全不一样。交换机本身不再启用DHCP服务也不一定开中继核心任务是要保证终端的广播Discover能到达那台物理服务器。因为DHCP是二层广播协议只要终端和服务器在同一个VLAN内、同一个广播域里交换机的默认行为就会把广播报文泛洪下去理论上不需要做任何特殊配置。前提条件是物理服务器必须接在合法端口上且这个VLAN内不要有其他设备私自开启DHCP服务抢答。这里就引出一个关键安全功能——DHCP Snooping。它不是一个“锦上添花”的功能而是当存在物理DHCP服务器时一定要考虑的防御手段。为什么这么说因为如果办公网里有人私自接了一个家用路由器LAN口错插到公司网口上路由器的DHCP功能会自动开启它会抢在合法服务器之前响应终端的Discover给终端分配一个默认网关是192.168.1.1的地址。终端虽然也能上网但走的是“黑网关”流量被劫持所有上网行为都可能被监听这是非常典型的内网安全漏洞。DHCP Snooping的作用就是给交换机装上“安检门”。把所有与合法DHCP服务器相连的交换机接口设置为trusted信任口其他所有接口默认是untrusted不允许响应DHCP Offer报文。终端可以正常发Discover和Request可以接收来自trusted口的Ack但接在untrusted口上的私接设备发出的Offer会被交换机直接丢弃。4.2 防私接、防冲突的snooping配置实战配置DHCP Snooping在华为交换机上分三步。第一步开启全局功能第二步开启指定VLAN的snooping第三步把接合法服务器的口设成trusted。以公司办公网VLAN10、物理服务器接在GigabitEthernet0/0/24口为例[HUAWEI] dhcp enable [HUAWEI] dhcp snooping enable [HUAWEI] dhcp snooping enable vlan 10 [HUAWEI] interface GigabitEthernet0/0/24 [HUAWEI-GigabitEthernet0/0/24] dhcp snooping trusted细看这个配置全局dhcp snooping enable不加VLAN参数时默认只作用于全局还要在具体VLAN下使能才算真正生效。trust的配置只对这个物理接口下面的整个VLAN都生效不用每个终端口都设。如果还有下联交换机那上联口一定要设为trusted否则下联设备发来的Offer报文都会被丢弃终端全拿不到地址。除防私接外Snooping还有一个衍生功能值得说一下——接口地址限制。可以给每个接入端口设置允许的最大DHCP报文数量防止某个终端出现异常后疯狂发送Discover报文打爆CPU[HUAWEI-GigabitEthernet0/0/1] dhcp snooping check dhcp-giaddr enable [HUAWEI-GigabitEthernet0/0/1] dhcp snooping max-user-number 10第二行命令是限制该接口最多学习到10条IP-MAC绑定表项超过后不再处理该口的DHCP报文。如果办公网终端数量明确这是个很好的防滥用手段。再回答一个热搜里出现频率很高的问题“内网有物理DHCP服务器交换机如何配置”。其实核心就三句话别在交换机上开DHCP服务把服务器接通的接口设为trusted开启DHCP Snooping防止其他人抢答。至于服务器端到交换机之间需不需要中继取决于VLAN是否跨三层。如果终端VLAN和服务器VLAN是同一个不需要中继如果跨VLAN则要么把服务器划入终端所在的VLAN要么配置中继指向服务器地址。物理DHCP服务器这个场景下还有个容易忽略的好习惯就是DHCP服务器上要做IP-MAC绑定。特别是打印机、门禁系统、视频监控的接入设备这些设备换IP就会引发业务中断。服务器上针对MAC地址做保留IP以后Snooping这边的绑定关系可以同步起来等于双重保险。实际维护时我曾经遇到过一个棘手的排障办公网总有人间歇性掉线怎么查都查不出原因。后来开了Snooping发现是某工位下接了一个只有几个端口的小交换机这个小交换机自带DHCP服务且默认开启每次它一响应就抢占了一部分终端的地址。在接入交换机的对应端口上抓到大量Offer报文之后问题水落石出。5. 虚拟化环境里的DHCPvNIC也得上网5.1 vNIC和物理网卡有什么区别虚拟化已经是服务器房的常态了VMware、Hyper-V、KVM这些平台里每台虚拟机都有一块虚拟网卡叫vNIC。vNIC本质上是一个软件实现的网络接口但它在协议栈的视角里跟物理网卡几乎没差别同样有MAC地址同样发广播、收单播。顺着这个思路DHCP对vNIC的处理跟物理终端是一样的。虚拟机开机vNIC发出Discover广播虚拟交换机vSwitch把它泛洪到上联物理交换机如果地址池里有余量虚拟机就在DHCP服务器那里拿到地址。所以DHCP技术天然适用于虚拟化环境不需要为了让虚拟机拿到IP做太多额外动作但要分清几个层面的区别。第一是MAC地址的生成和管理。物理网卡的MAC地址是硬件烧录的全世界唯一。vNIC的MAC地址是虚拟化平台生成的虽然平台会保证它在本地唯一但当虚拟机在不同物理机之间迁移时有的平台默认会保留MAC有的平台因为网络配置变化可能用新的MAC而DHCP服务器通常按MAC来分配地址和更新租约。如果迁移后MAC变了终端拿到的IP地址就会跟着变原来基于IP的一些业务配置、防火墙策略就失效了。第二是广播和多播的处理。虚拟交换机不会把一个广播帧无限广播到所有物理交换机端口但会把它往所有虚拟机的vNIC和上联物理口都送一份。这本身没问题问题出在虚拟化环境里一台物理机上可能同时跑几十台虚拟机它们每一个都会发DHCP Discover广播和定时续租报文广播流量是翻倍的。如果整个物理机集群规模很大DHCP服务器收到的Discover数量会显著高于同等数量的物理终端负载压力要提前评估。5.2 给vNIC配DHCP的实战经验和注意事项虚拟化环境里配置DHCP最核心的一条经验是给虚拟机预留固定的地址段把MAC绑定做起来。尤其是承载数据库、中间件、管理系统的虚拟机IP地址一变就是灾难。虽然这里讲的是DHCP但你要知道DHCP不只可以用来“分地址”也能用来“绑地址”效果等同于静态IP但运维上更灵活。在VMware环境中万兆跨主机迁移虚拟机时经常遇到一个问题虚拟机迁移后MAC地址不变但DHCP租约不续。标准做法是在分布式交换机或标准交换机上开启“MAC地址更改”和“伪造传输”的设置并在DHCP服务器上为这个MAC预留固定IP地址。而KVM环境因为虚拟网卡的MAC默认由libvirt随机生成迁移时容易变化建议在虚拟机XML配置里手动固定MAC地址再配合DHCP的绑定关系使用。实际配置中还有一个很隐秘的坑vNIC的MAC地址有时会自动变成全零或全F的广播地址。这种情况多发生在虚拟化平台在给虚拟机生成MAC时跟物理机内置的网卡MAC冲突平台自动做了“补充处理”结果产生了非法的MAC。这种MAC发出来的DHCP请求服务器如果开启了对MAC地址合法性的校验会直接拒绝分配。遇到明明vSwitch配置完好但虚拟机就是拿不到IP的情况先检查虚拟机的MAC地址是不是正常格式。给vNIC所在的网络启用DHCP时还有一点经验源端口和虚拟交换机之间不建议再启用复杂的DHCP Snooping非要防私接的话trust口应当朝向上联口和虚拟化平台的管理口。因为虚拟化平台的vSwitch内部转发逻辑对虚拟机的广播有自己的处理机制如果物理交换机对上行口的DHCP报文限制太死可能导致虚拟机的DHCP Discover发不到服务器那里去。当然这个属于边界情况具体还要看组网模式。6. 常见问题与排查技巧实录6.1 高频故障场景判断与处理直接上一张我多年排障总结的问题速查表覆盖DHCP配置和运维里最常见的几类故障。遇到问题时先对号入座可以省下大量抓包时间。现象可能原因排查手段解决方向终端提示未识别网络拿到169.254.x.x地址没收到DHCP Offer确认VLANIF是否执行dhcp select global或relay检查地址池是否耗尽补配置、扩容地址池或缩小租期只有个别终端拿不到IP地址池排除段太大、MAC被拉黑查看display ip pool name xxx used调整排除地址范围移除MAC限制拿到IP但无法上外网DNS或网关参数错误查看地址池的gateway-list和dns-list修正地址池参数用display ip pool核对地址频繁变更租期过短、续租失败确认lease命令查看终端续租报文加长租期检查中继链路质量DHCP服务器日志大量Offer未确认客户端收不到Offer或Request广播丢失三层中间是否有ACL阻断UDP 67/68端口检查中间设备ACL放行bootp协议私接路由器导致大面积掉线非法DHCP服务器抢占开启dhcp snooping捕捉配置trust口限制终端口定位后拔线这里重点展开两个我觉得最典型的场景。第一个是“终端拿到169.254.x.x地址”。169.254是Windows在DHCP失败后自动分配的保留地址它一出现基本能确定终端没完成DORA。先查服务器侧display dhcp server statistics如果Discover收到但Offer没发出说明地址池为空或者服务器进程异常如果Offer发出去了但终端没收到就要查看中继、VLAN、上联口有没有异常。还有一种容易被忽略的情况交换机接口开启了端口安全只允许特定MAC地址通过vNIC的MAC或者终端网卡的MAC没在允许列表里广播报文直接被丢弃。这种问题看接口上的丢弃计数就能发现。第二个是“Ack发出去了但终端仍然拿不到地址”。这个比较隐蔽。DHCP整个交互是广播叠加单播的混合流程Discover和Request是广播Offer和Ack在某些场景下是单播。比如终端请求过一次地址后续租时会用单播直接跟服务器通信。如果中间某个交换机配置了非常严格的端口隔离或者风暴控制策略单播的Ack报文可能直接被丢弃。遇到这种问题抓包是最快的路径直接在终端侧和服务器侧同时抓对比两端看到的报文数量就能定位丢在哪一跳。6.2 几个我踩过的坑配置DHCP这么多年有几个坑值得单独拿出来说因为它们不在任何官方文档的“常见问题”里纯粹是实战攒出来的。第一个坑是忘了在地址池里排除网络号和广播地址。华为地址池配置里network加mask后默认不会自动排除网络号和广播地址吗不是的。如果不做excluded-ip-address声明你可能会看到网关、网络地址都被分配出去。虽然多数情况下终端拿到网络号地址后无法正常通信但故障现象会伪装成“只有一两台设备不能上网”很迷惑。所以配置完一定要养成习惯把gateway和保留设备地址逐一排查进去。第二个坑是中继模式下DHCP服务器侧忘了配置回程路由。有一次给新园区做DHCP中继核心交换机上relay配置了服务器作用域也建了终端就是拿不到IP。抓包发现Discover已经到了服务器Offer也回了但回程到核心交换机的路由缺失Offer在网络上绕圈直到超时。这个问题的简单解法是在服务器上加一条到终端网段的静态路由下一跳指向核心交换机。排查DHCP中继时永远不要默认服务器和终端之间路由已通必须显式验证。第三个坑是交换机开DHCP服务的同时又划入了物理DHCP服务器。某次改造项目里核心交换机上已经做了DHCP服务器功能然后又从老网络迁移进来一台物理Windows DHCP服务器两边地址池有重叠。结果终端时好时坏IP地址在两个服务源之间随机分配。这种混用问题比私接路由器更难发现因为两台都是“合法”的服务设备。教训是一个广播域内只允许一台DHCP服务器在应答老服务器要并入新网络必须先在交换机上禁用全局的DHCP服务。最后一个经验送给刚入门的同行配置DHCP时一定要先画逻辑拓扑。DHCP看似简单但它跨二层广播域、跨三层路由、关联地址池和租约是网络里牵一发动全身的服务。先在纸上把VLAN、网段、网关、DHCP服务位置画清楚再动手敲命令能避免掉一半以上的坑。回头来说DHCP的价值不只是省了几次手动填IP的操作。它是网络自动化管理的基石之一没有它今天几千台终端的办公网根本无法平滑运转。把DORA流程吃透、把华为交换机的global、relay、snooping三种模式用熟遇到虚拟化里的vNIC分配和不规范的老服务器接管也就心里有底了。工具一直在变但DHCP这套底层逻辑很长一段时间内都还是网络的“水电煤”值得花时间弄明白。
返回列表