华为交换机DHCP配置实战:地址池、租期、中继与虚拟网卡避坑指南
这次作业我选了DHCP原本只是课程安排里的一道题配置完才发现DHCP没有想象中那么简单。它表面上是“自动发IP”实际上牵扯到地址池规划、租期管理、中继转发、交换机与服务器的角色分工甚至还有虚拟机虚拟网卡这种平常不注意的坑。这篇就把我这台华为交换机的完整配置过程、踩过的坑、以及兜底的排查思路都写出来给同样在做DHCP配置作业、或者刚接手内网维护的朋友做个参考。1. 先把DHCP解决的问题想明白再动手敲配置很多教程一上来就让你配地址池、配租期但我建议你先花十分钟搞清楚一个问题如果没有DHCP你会遇到什么在一个稍微像样点的网络里设备数量一多手工配置静态IP就是一场灾难。比如一个办公室有三十台电脑、二十部手机、十几台网络打印机每台都要手动填IP、子网掩码、网关、DNS。新设备上线要找人要IP段IP写错了就冲突设备搬去别的办公室又要重配。更麻烦的是你根本不知道哪段地址是空闲的哪些已经被占用。DHCP解决的问题就是把这些工作集中到一个节点上由它统一管理IP资源、自动分配、自动回收。设备接入网络后说一句“我需要一个地址”服务器从地址池里挑一个可用的给它同时告诉它网关、DNS这些配套参数租期到了再续约或者回收。对使用者来说插上网线就能上网什么都不用设置。这次作业让我重新理解了它为什么是网络运维里最基础、但最不能出错的服务之一。基础是因为几乎每个网络都在用不能出错是因为一旦它挂掉整个办公区就“断网”了——不是线路断了是所有人都拿不到IP。DHCP的核心机制可以概括成四个报文的交互俗称DORA流程Discover客户端广播“谁有DHCP服务我需要IP”Offer服务器回应“我这有地址你看这个IP行不行”Request客户端说“我就要这个IP”Acknowledge服务器确认“好这个IP归你用租期X小时”这里面有个细节值得注意Offer阶段服务器只是“预占”这个IP并没有正式分配只有收到Request并回复Ack之后地址才算正式租给客户端。这也是为什么客户端多、并发高的时候地址池规划不合理就会出问题——预占的IP还没释放新的请求就来了。还有两个概念必须懂一个是租期Lease Time一个是地址池Pool。租期决定客户端能用多久一般办公网络设置成8到24小时比较合理地址池则是你划出来给DHCP自动分配的IP范围必须避开手动配置的服务器、打印机等固定设备。2. 华为交换机上的DHCP先分清“服务器模式”和“中继模式”做这次作业之前我一直以为DHCP是“服务器”的事跟交换机没关系。后来被一道题问住了——如果你的内网已经有一台物理DHCP服务器交换机应该怎么配我才发现交换机在这里有两种完全不同的角色很多人一开始都搞混。第一种角色交换机本身作为DHCP服务器。这种场景适合小型网络不想单独架一台服务器直接在交换机上开DHCP服务给终端分配地址。华为交换机上配置的核心命令大致是system-view dhcp enable ip pool office network 192.168.10.0 mask 24 gateway-list 192.168.10.1 dns-list 223.5.5.5 lease day 1 interface vlanif 10 dhcp select global这段配置的意思很直白全局开启DHCP服务定义一个名为office的地址池网段是192.168.10.0/24网关指向192.168.10.1DNS用公共DNS租期一天然后在VLAN 10的三层接口上启用DHCP让它使用全局地址池。第二种角色交换机做DHCP中继DHCP Relay。当网络里已经有独立的DHCP服务器、但服务器和客户端不在同一个网段时广播报文过不了三层就需要交换机把客户端的请求转给服务器。这个场景在真实企业网里非常常见大家常说的“内网有物理DHCP服务器交换机如何配置”其实就是指这个。华为交换机中继模式典型配置如下system-view dhcp enable interface vlanif 10 dhcp select relay dhcp relay server-ip 192.168.200.10 ip address 192.168.10.1 255.255.255.0这里的关键就是把接口原本的dhcp select global改成dhcp select relay再指定服务器的地址。注意中继模式不会自己分配IP它只管“传话”——把客户端的Discover报文单播转发给服务器再把服务器的Offer报文传回客户端。为了把这两个模式彻底区分开我做了一个对比表也建议你在做作业的时候先填一遍这个表再动手对比项交换机DHCP服务器模式交换机DHCP中继模式IP地址来源交换机本地地址池内网独立DHCP服务器适用场景小型网络、临时网段多网段共用一套DHCP服务核心命令dhcp select globaldhcp select relay三层转发无需额外配置必须指定dhcp relay server-ip运维复杂度低适合单网段略高需配合服务端地址池策略常见问题地址池耗尽中继不生效、服务器未授权网段为什么要强调先分清这两种模式因为它们的排查方向完全不同。服务器模式下你只需要看交换机本地配置中继模式下你得同时检查交换机、服务器两端。我在作业里犯的第一个错就是把这两种模式混着用后面排查了很久才发现是模式没选对。3. 实操记录完整配置一台华为交换机管住整个办公室的三个网段我们这次作业的背景是这样的三层交换机一台下面分了三个VLAN分别是员工办公网192.168.10.0/24、访客网192.168.20.0/24、服务器区192.168.30.0/24。要求是配置一台DHCP服务器让所有终端自动获取IP。这其实就是一个非常典型的问题一个DHCP服务器到底能给几个网段发地址答案取决于你怎么设计。最简单的做法是交换机上用三个不同的全局地址池分别对应三个VLAN的网关接口用dhcp select global各自生效另一种做法是内网单独一台服务器交换机做中继服务器上为三个网段各配置一个作用域Scope。我这次用的是第一种方案直接在华为交换机上做。配置思路如下3.1 创建VLAN并配置VLANIF网关地址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网关是DHCP给终端下发的默认网关必须跟客户端在同一个网段。如果你的网关写错了最典型的现象就是终端“明明有IP却上不了网”所以这个地址一定要仔细核对。3.2 开启DHCP并定义三个地址池dhcp enable ip pool vlan10_pool network 192.168.10.0 mask 255.255.255.0 gateway-list 192.168.10.1 dns-list 223.5.5.5 8.8.8.8 excluded-ip-address 192.168.10.1 192.168.10.50 ip pool vlan20_pool network 192.168.20.0 mask 255.255.255.0 gateway-list 192.168.20.1 dns-list 223.5.5.5 8.8.8.8 ip pool vlan30_pool network 192.168.30.0 mask 255.255.255.0 gateway-list 192.168.30.1 dns-list 223.5.5.5 8.8.8.8这里有一个操作值得单独讲一讲就是excluded-ip-address。它的意思是把地址池里的某些IP排除掉不让DHCP分配。为什么因为192.168.10.1是网关如果你不排除它地址池里的1号IP可能会被分配给某台电脑一旦和网关冲突那台电脑就上不了网整个网段都会出现间歇性故障。我把1到50都排除了是为了后续给打印机、监控等固定设备预留手动配置空间。3.3 在VLANIF下启用DHCPinterface vlanif 10 dhcp select global interface vlanif 20 dhcp select global interface vlanif 30 dhcp select global这一步是把地址池和接口绑定。global表示使用全局配置的地址池交换机按接口IP所在的网段自动匹配对应的ip pool。这个自动匹配是靠network字段和VLANIF的IP网段对齐来实现的所以配置地址池时network的网段必须和VLANIF地址在同一个子网否则客户端拿不到地址。3.4 验证配置是否生效华为交换机查看DHCP配置我有几个常用命令推荐display dhcp status display ip pool name vlan10_pool display ip pool all display dhcp server statisticsdisplay ip pool all可以看到地址池的总地址数、已分配数、空闲数、排除数和过期数。如果你发现已分配数接近总数那说明地址池快耗尽了得考虑扩大网段或缩短租期。display dhcp server statistics则能看到交换机收到了多少Discover报文、回复了多少Offer、丢弃了多少非法报文排查问题时非常有用。另外还要验证客户端是不是真的拿到了IP。我自己习惯的做法是在电脑或手机上ipconfig /all查看一下IP、网关和DNS是否都对得上然后从终端Ping一下网关通了就说明三层转发没问题。3.5 别忽略虚拟机的虚拟网卡这次作业里还有一个插曲就是热词里提到的“DHCP服务器为虚拟网卡发地址”。我们在VMware或VirtualBox里建虚拟机时默认用的是NAT或仅主机模式虚拟网卡会自动从VMware的虚拟DHCP获取IP这个IP往往是一个内部网段比如192.168.100.x、192.168.83.x。你在物理机上用真实网卡看IP没问题但虚拟机里却不在同一个网段就特别容易搞混。如果你想让虚拟机也使用交换机刚刚配置的DHCP服务有两条路把虚拟机的网络模式改成“桥接模式Bridge”让虚拟网卡直接绑定物理网卡从而接入真实局域网由物理交换机做DHCP分配。或者在VMware的虚拟网络编辑器中关闭/修改虚拟DHCP的设置指定虚拟网卡使用自定义网段。我在实际操作中遇到的坑是虚拟机桥接之后它拿到的是物理交换机分配的IP这本身没问题但如果你开启了VMware自带的DHCP服务它会在另一个虚拟网段上抢答造成虚拟机拿到的IP不是你预期的那个。所以做网络实验时建议先把虚拟软件的DHCP服务关掉只保留物理交换机的DHCP。4. 内网已有物理DHCP服务器交换机该怎么配合前面说了如果内网已经有一台独立的物理DHCP服务器交换机的主要工作就不是分配地址而是转发请求。这里最常见的业务场景有两种我分别展开说一下。第一种场景服务器和终端在同一个网段。这种情况下交换机几乎不用做任何DHCP相关配置只需要保证客户端广播能到达服务器。默认情况下客户端发广播交换机在同一个VLAN内广播转发服务器收到请求后分配地址整个过程交换机不需要开DHCP功能。很多朋友在这个场景下画蛇添足给交换机也开了一个地址池结果内网出现两个DHCP响应源反而造成IP分配混乱。第二种场景服务器和终端跨网段。例如服务器在192.168.200.10终端在192.168.10.0网段这时候就必须配置DHCP中继。华为交换机上的操作前面已经给了命令这里我想补充一个很多人不知道的细节中继模式下服务器必须能识别这个报文是从哪个中继接口转过来的并且为对应网段配置作用域。也就是说你不仅仅要配置交换机还要在DHCP服务器上为192.168.10.0/24这个网段单独建立一个Scope否则服务器收到中继转来的请求时不知道该从哪个地址池分配。还有一点要特别注意如果内网这个物理DHCP服务器的接口IP、网关、VLAN划分都比较复杂建议先画一张简单的拓扑图再开始配。我自己做作业时画了一张三层结构的图交换机在中间客户端VLAN在下服务器VLAN在侧标清楚哪个接口接哪个VLAN、哪个IP是网关操作起来就清晰多了。否则命令敲到最后自己都容易忘记刚才配的是哪个接口。5. 这次作业踩过的坑直接整理成排查清单做DHCP配置不是在模拟器里敲一遍命令就结束了。客户端拿不到IP的原因非常多我把这次作业和平时帮朋友解决网络问题时遇到的典型情况整理成一个速查表故障现象可能原因排查命令/操作客户端始终拿不到IPDHCP全局未开启display dhcp status确认状态为Enable拿到的IP不在预期网段网关/地址池网段不匹配对比VLANIF IP和ip pool的network字段偶尔能拿到IP偶尔不能地址池剩余地址不足display ip pool all查看空余地址数能拿到IP但无法上网网关没下发或写错客户端ipconfig /all核对网关Ping网关测试部分固定设备IP冲突排除地址没配全在地址池里添加excluded-ip-address多VLAN环境下只有个别VLAN正常VLANIF接口未绑定DHCP检查是否漏了dhcp select global虚拟机一直拿不到IP虚拟网卡模式或虚拟DHCP冲突改成桥接模式关闭虚拟软件自带DHCP中继模式下拿不到IP服务器端缺少对应作用域在物理DHCP服务器上为网段建ScopeDHCP频繁续约日志飘红租期设置过短将lease day调整到1或2天再分享几个我挨过打才记住的细节。第一个是广播域的问题。DHCP的Discover是广播报文而广播无法跨VLAN传播。所以如果你把客户端划到了VLAN20把DHCP服务器留在VLAN10却不做任何中继配置那客户端永远拿不到IP。这不是配置错了是原理上就不通。第二个是租期和实际使用量的关系。假设一个网段有254个可用地址却排除了50个那实际可用就是204个如果终端数量接近这个数就要考虑缩短租期或扩充地址池。我见过一个办公室的DHCP日志密密麻麻全是地址分配失败就是因为地址池不够还硬撑了两周。第三个是“重启大法”其实也适用于DHCP。客户端如果拿到过旧租约继续使用旧IP直到租约过期才算真正释放。遇到客户端一直拿着过期IP的情况可以试试ipconfig /release之后再ipconfig /renew比反复重启电脑要快得多。第四个是关于防环和欺骗的。如果在非信任接口上接了一台小路由器或别人的设备它也开了DHCP服务那么整个网络就可能出现“抢答”——谁的响应先到客户端客户端就用谁的。这时交换机接口上可以配置DHCP Snooping只信任连接合法服务器的端口其余的接口丢弃DHCP响应报文。这个功能在作业里可能不会考但真实网络中价值非常大dhcp enable dhcp snooping enable dhcp snooping trusted interface GigabitEthernet0/0/1 interface GigabitEthernet0/0/2 dhcp snooping enable把连接合法DHCP服务器的端口设置为trusted其他接口启用DHCP Snooping就可以有效防止私接小路由带来的地址混乱。6. 最后给做作业的人留几句话DHCP这一章很多人觉得配置量不大随便敲敲就过了但这次作业做完我有一个很真切的体会DHCP学得好不好不在于你能不能背出命令而在于地址池、排除地址、租期、中继、网关这些概念有没有串成一条线。建议你再往下练三个方向一个是把前面配置的交换机DHCP服务改成中继模式内网单独起一台物理或虚拟DHCP服务器亲手体验一次跨网段分配。第二个是把DHCP Snooping打开看看当网络中混入了非法DHCP设备时交换机会怎么处理。第三个是可以写几个脚本来模拟地址池使用率的变化或者用Wireshark抓一次DORA四个报文亲眼看看客户端和服务器是怎么“讨价还价”的。H3 6.1 一条命令引发的思考display ip pool all如果你时间有限至少学会用display ip pool all这把“照妖镜”它能把地址池利用率、分配情况、租约剩余时间全摆在你面前。我这次配置完三个地址池之后跑了这条命令一眼就看到VLAN10的地址池已经分出去一百多个而VLAN30几乎没人用。没有它你就像没有仪表盘的司机只知道车在跑却不知道还剩多少油。H3 6.2 我的作业收尾建议最后一个小技巧交作业之前记得把交换机配置导出备份。华为交换机可以用display current-configuration查看完整配置再用FTP或TFTP保存下来。这样一来即使配置被误改也能快速恢复。我当时就是靠备份文件才在调试虚拟机虚拟网卡时把交换机配置折腾坏了之后十分钟内恢复了现场。DHCP不难但细节不少。把这次作业吃透后面再遇到“一个DHCP服务器发几个网段”“内网物理DHCP服务器如何配合交换机”这种实际问题你就能从原理到命令都讲得头头是道了。