1. 子网DHCP:为什么你的实验要玩“一拖多”
很多朋友在ENSP里做DHCP实验,习惯性操作就是“一台路由器 + 两台PC”,然后接口模式下敲几条命令,PC自动获取到IP,实验结束。这套流程练熟之后,你会觉得DHCP不过如此。
但真实的项目里根本不是这么玩的。一个稍微像样点的企业网络,通常是一台核心交换机下面挂着好几个网段,办公区一个VLAN、财务一个VLAN、无线一个VLAN,DHCP服务器不可能也没必要每段放一台。这时候你要解决的核心问题就是:怎么让一台DHCP服务器同时服务多个子网,而且PC还能正确获取到对应网段的地址。
子网 + DHCP 合在一起,就是这个场景的核心考点。它不光是华为认证里的常见实验题,更是你做企业网络规划时躲不开的基础功。
这篇文章我会用ENSP完整跑一遍“单台DHCP服务器为多个子网分配IP”的配置,覆盖链路类型、网关接口、地址池规划、排除地址、PC验证这几个环节。我会把每个配置命令背后的理由也讲清楚,而不是给一份“照着敲就行”的脚本。看完之后你不仅能复现这个实验,还能搞明白这组配置在真实网络里到底是怎么工作的。
2. 为什么一个DHCP服务器要服务多个网段:场景还原
2.1 避免地址冲突和配置混乱的关键点
先说一个最容易被忽略的前提:DHCP服务器要能“听懂”客户端在哪个网段,靠的是中继机制,或者直连网段。在ENSP的模拟环境里,路由器或三层交换机直连的网段可以直接分配,跨网段的必须配置DHCP中继(DHCP Relay)。
所谓的“子网DHCP实验”,最典型的就是下面这种拓扑思路:核心交换机做网关,同时充当DHCP服务器(或者服务器在核心上),下挂多个业务VLAN,每个VLAN是一个子网,PC分别挂在不同的VLAN里。这个时候如果VLAN之间要通信、每台PC还要拿到自己网段的IP,就要求你同时掌握VLAN划分、子网计算、DHCP配置三件事。
我在实际带人的时候发现一个现象:很多人在路由器上配置DHCP非常熟练,但换到交换机上就懵了。原因很简单——路由器的接口一眼能看到IP,交换机的VLANIF接口是逻辑接口,你得先在脑子里建立“VLANIF = 网关 = DHCP服务器接口”这个映射关系。
2.2 一个DHCP服务器下发的地址池怎么划分
多子网DHCP实验的地址池规划,也是很有说头的一个点。多数教程上来就是dhcp select global,然后ip pool office就完事了,但很少告诉你为什么要这么分。
真实项目里,给不同部门划分子网的时候,不仅要把每个网段的可用地址算清楚,还要预留出网络设备地址、网关地址、服务器地址、打印机地址,剩下的才是给PC动态分配的。你在实验里如果不做排除地址(excluded-ip-address),DHCP服务器完全可能把一个已经被网关占用的地址下发出去,这在真实环境里就是一次地址冲突事故。
所以这个实验我个人建议至少包含三个子网:办公网段、服务器网段、无线网段。其中服务器网段用静态分配,无线网段用动态分配,办公网段用动态+排除地址。这样一套组合下来,你对DHCP的理解就不再是“敲命令”而是“做规划”了。
3. 动手之前:VLSM子网划分与地址规划计算
3.1 从192.168.1.0/24划出三个子网
先来算地址。我们拿一个C类网段192.168.1.0/24做演示,要划分出三个子网:VLAN 10办公、VLAN 20无线、VLAN 30服务器。
这里我推荐用VLSM(变长子网掩码)而不是等分。如果你用等分法,比如切成4段,每段62个可用地址,那么无线网段如果只有30个终端就浪费了;但如果你切成8段,每个子网只有30个可用地址,服务器和办公又可能不够用。变长子网掩码的核心思路是:终端多的网段给大地址空间,终端少的网段给小地址空间,按需分配,不铺张浪费。
用VLSM的思路来切:
- 办公网段:需要大约50个地址,取
192.168.1.0/26,可用地址62个,分配给VLAN 10 - 无线网段:需要大约20个地址,取
192.168.1.64/27,可用地址30个,分配给VLAN 20 - 服务器网段:需要大约10个地址,取
192.168.1.96/28,可用地址14个,分配给VLAN 30
3.2 网关、起始地址和终结地址的分工逻辑
子网算好之后,紧接着就要给每个子网编排地址角色。也就是确定网关、可用地址范围、广播地址分别是什么。整理出来是这样的:
| 子网 | 网络地址 | 掩码 | 可用范围 | 广播地址 | 网关 |
|---|---|---|---|---|---|
| 办公网段 | 192.168.1.0 | 255.255.255.192 | 192.168.1.1 ~ 192.168.1.62 | 192.168.1.63 | 192.168.1.1 |
| 无线网段 | 192.168.1.64 | 255.255.255.224 | 192.168.1.65 ~ 192.168.1.94 | 192.168.1.95 | 192.168.1.65 |
| 服务器网段 | 192.168.1.96 | 255.255.255.240 | 192.168.1.97 ~ 192.168.1.110 | 192.168.1.111 | 192.168.1.97 |
网关上往往要留一个地址,DHCP的地址池就要把网关地址排除掉,这是很多人第一次做实验容易踩的坑。
注意:
/26可用地址是64减2等于62个,/27可用地址是32减2等于30个,/28可用地址是16减2等于14个。如果你算出来少了2个,说明你没减掉网络地址和广播地址。
4. 拓扑搭建与接口IP配置详解
4.1 设备选型:为什么核心用三层交换机而不是路由器
ENSP里做这个实验,核心设备我推荐S5700三层交换机,而不是AR路由器。原因有两个:
一是现在的企业网络基本不会用一台路由器去充当内网网关,核心交换机才是标准的网关位置;二是S5700配置VLANIF之后既能做网关又能做DHCP服务器,更贴合真实场景。
拓扑结构是这样的:
- 核心交换机
LSW1:创建VLAN 10、VLAN 20、VLAN 30,分别配置VLANIF接口地址作为三个子网的网关 - DHCP服务器:直接在核心交换机上启用DHCP服务(模拟器里用交换机充当)
- 两台PC:
PC1接在VLAN 10的接口下,PC2接在VLAN 20的接口下 - PC接交换机的接口,全部配成access口,划入对应VLAN
这里面有个容易犯迷糊的地方:交换机如果只配access口,PC和交换机之间是能通了,但不同VLAN之间要通信,必须靠VLANIF三层接口,VLANIF的IP地址就是PC的网关。
4.2 VLANIF网关接口配置的完整命令
先把交换机的接口VLAN划分做了:
system-view sysname SW-Core vlan batch 10 20 30 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/3 port link-type access port default vlan 30然后创建VLANIF接口并配置网关地址:
interface Vlanif10 ip address 192.168.1.1 255.255.255.192 interface Vlanif20 ip address 192.168.1.65 255.255.255.224 interface Vlanif30 ip address 192.168.1.97 255.255.255.240配置完成之后先验证一下,用display ip interface brief可以查看接口状态和地址:
<SW-Core>display ip interface brief三个VLANIF接口的IP地址应全部显示UP且配置正确。在继续下一步之前,先确认底层的“网段划分”没有错,这一步错了后面配置DHCP全部白搭。
5. DHCP配置的关键选择:全局模式还是接口模式
5.1 全局模式(Global)适合多子网场景
ENSP的交换机DHCP配置有两种模式:接口模式(dhcp select interface)和全局模式(dhcp select global)。
接口模式的特点是:DHCP服务器直接从“接收请求的接口”所属的网段分配地址,采用接口的IP地址所在网段作为地址池。这种模式操作最简单,适用于只有一个网段的小场景。但多子网情况下,PC发出的广播请求到达不了其他VLAN的接口,所以接口模式的局限性就暴露出来了。
全局模式的特点是:地址池是独立的逻辑池,配置了dhcp select global的接口收到请求之后,会在全局地址池里寻找与接口IP同网段的地址池进行分配。这样多个VLANIF接口就能共用一个全局DHCP服务,再配合每个接口的dhcp select global,就能做到一个服务器服务多个子网。
这个实验用的是三层交换机直接下挂多个VLAN的场景,所以选择全局模式加多个地址池,一句话就能说清楚:接口模式适合“一接口一网段一手动配”,全局模式适合“一设备多网段批量管”。
5.2 地址池参数:网段、网关、DNS和排除地址
关键的一步是给每个子网配置独立的地址池。直接上配置:
dhcp enable ip pool pool_office network 192.168.1.0 mask 255.255.255.192 gateway-list 192.168.1.1 dns-list 114.114.114.114 excluded-ip-address 192.168.1.1 ip pool pool_wlan network 192.168.1.64 mask 255.255.255.224 gateway-list 192.168.1.65 dns-list 114.114.114.114 excluded-ip-address 192.168.1.65 ip pool pool_server network 192.168.1.96 mask 255.255.255.240 gateway-list 192.168.1.97 dns-list 114.114.114.114 excluded-ip-address 192.168.1.97 192.168.1.110然后给三个VLANIF接口开启全局选择:
interface Vlanif10 dhcp select global interface Vlanif20 dhcp select global interface Vlanif30 dhcp select global注意看pool_server这个池子的excluded-ip-address 192.168.1.97 192.168.1.110,我把整个服务器网段除了192.168.1.98 ~ 192.168.1.109之外全部排除了,也就是只腾出12个地址给服务器做静态分配。这在真实项目里是常规操作——服务器地址本来就应该用静态,DHCP只负责终端设备。
6. 客户端验证与常见故障排查实录
6.1 一键获取:PC端DHCP获取验证方法
在ENSP里,PC获取DHCP地址非常简单。双击PC,在配置界面选择DHCP,点击应用,然后再打开命令行用ipconfig查看。
我这里建议你不要只点一下完事,而是多刷新几次或者在PC命令行里执行ipconfig /release和ipconfig /renew,观察在释放、重新获取的过程中地址是否稳定。这一步能暴露出不少隐藏问题。
比如PC1(属于VLAN 10)应该获取到192.168.1.2 ~ 192.168.1.62之间的地址,网关是192.168.1.1。PC2(属于VLAN 20)应该获取到192.168.1.66 ~ 192.168.1.94之间的地址,网关是192.168.1.65。如果PC1拿到了192.168.1.66,说明你的VLAN划分或者接口配置有问题。
6.2 为什么PC一直获取不到地址:5个排查方向
在ENSP里做DHCP实验,最常见的故障就是PC获取不到地址,显示DHCP request timeout。按我踩过的坑来说,排查优先级应该这么排:
第一,检查DHCP服务是否开启。dhcp enable这条全局命令很多人会忘,特别是新建配置的时候。忘了的话,接口下的dhcp select global就是个摆设。直接查看:display dhcp status。
第二,检查接口VLAN对不对。很多时候你PC插在了G0/0/1口,但接口配置的是VLAN 20,而VLAN 20对应的地址池根本没有可用地址或者网段对不上,这时候获取的地址就会错乱或失败。用display vlan核对每个接口的PVID。
第三,检查地址池是否耗尽或配置错误。用display ip pool看看地址池状态,一个很典型的错误是network命令里掩码配错,比如写成255.255.255.0,会导致地址池范围比预期大好几倍,看起来能用但分配结果完全不符合设计。
第四,检查VLANIF接口是否UP。如果VLANIF接口没有 UP,DHCP请求根本到不了服务器。用display ip interface brief确认。
第五,检查PC和交换机之间的连通性。在PC命令行ping网关,如果不通,说明二层链路就有问题。
我把常见的几种故障现象和对应原因整理成了一张表:
| 故障现象 | 可能原因 | 排查命令 |
|---|---|---|
| 获取不到IP | DHCP服务未开启 | display dhcp status |
| 获取到错误网段地址 | VLAN划错或接口PVID错误 | display vlan / display port vlan |
| 获取到的地址不在指定范围 | 地址池掩码配置错误 | display ip pool |
| 很久才获取到地址 | 接口下没启用dhcp select global | display current-configuration |
| 地址冲突 | 网关地址未排除 | display ip pool conflict |
6.3 中继场景延伸:如果DHCP服务器和客户端异网段
这个实验用的是“核心交换机既当网关又当DHCP服务器”的组网,所以不需要配置DHCP中继。但如果你把DHCP服务器换到一台独立设备上,或者服务器放在VLAN 30里,那VLAN 10和VLAN 20的客户端发来的广播请求就无法跨越网段了。
真实项目中我会建议加一台独立的DHCP服务器(Windows Server或者Linux),然后在三层设备上配置DHCP Relay,把客户端的广播请求转成单播发给服务器。不过这是另外一个实验的范畴了。我只是想强调一点:理解“直连网段不需要中继,跨网段必须中继”这句话,比多配10遍命令都管用。
7. 进阶实操:租期、静态绑定和地址池查看技巧
7.1 用display命令实时观察地址分配状态
配置都正常之后,一定要学会看DHCP服务器端的实时状态。下面四条命令是我最常用的:
display ip pool display ip pool name pool_office display ip pool name pool_office used display dhcp leasedisplay ip pool可以看所有地址池的概要,包括地址范围、已用数量和过期数量。display ip pool name pool_office all能看某个池子所有地址的状态,判断哪些地址是Used、哪些是Idle、哪些是Conflict。这在排障的时候非常直观。
租期这块在模拟器里可能看不出太多真实感,但在真实网络里,租期设短了会增加广播流量,设长了会让地址回收不及时。常见的做法是:无线终端网络设30分钟~2小时,办公有线网络设8小时~1天。
7.2 给指定的PC绑定固定IP:静态绑定的思路
在实验最后,我再加一个很实用的操作:如果你希望某台PC永远拿到同一个地址,比如一台打印机或者一个摄像头,可以用静态绑定。
ip pool pool_server static-bind ip-address 192.168.1.98 mac-address 5489-98e1-2f34这样配完之后,这个MAC地址的客户端每次请求都会固定拿到192.168.1.98。注意,全局模式下静态绑定必须对应到全局地址池,同时要把绑定地址从动态分配范围内排除掉,否则会冲突。
这个操作在很多企业场景里非常常见:给视频监控留固定IP,给打印机留固定IP,给门禁控制器留固定IP。学会了之后你可以直接应用到真实的设备管理场景。
8. 最后一点个人体会
这个子网DHCP实验,花十分钟就能把命令敲完,但它真正训练的是你组网设计时的地址规划意识。我见过太多人配DHCP不是不会命令,而是不会划分网段、不会预留地址、看不懂冲突日志。
建议你在ENSP里动手做的时候,给自己加点难度:不要照抄我的地址规划,自己去设计一个C类网段,划分出4到5个子网,每个子网分配不同大小的可用地址空间,然后尝试让一台DHCP服务器为它们全部提供服务。等你能够不看命令把全局模式、接口模式、中继模式都捋清楚,你再去面对真实企业网络的DHCP部分,会非常从容。