ARTICLE DETAIL

资讯详情

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

华为eNSP DHCP配置详解:原理、命令与中继实战

华为eNSP DHCP配置详解:原理、命令与中继实战 如果你在eNSP里拖出两台PC把它们用网线连起来然后按下Ping命令大概率会得到一个尴尬的结果不通。不是线接错了而是两台PC压根不知道对方是谁。这时候大部分新手会老老实实打开PC的配置界面手动敲一个IP、一个掩码、再填一个网关然后长舒一口气。可如果这个网络里不是两台PC而是三十台、三百台呢手动配IP的玩法就彻底不灵了。DHCP协议解决的就是这个最基础、也最要命的问题让终端设备自动从服务器那里拿到一套完整的网络参数而不是靠人一台一台去填。这篇就把华为eNSP里DHCP的理论和实操串成一条线从原理到命令、从最简单拓扑到跨网段中继、再到排查思路完整过一遍。1. 为什么网络里要有个“自动发IP”的角色1.1 手动配IP的三个痛点先说说手动配置IP到底哪里不好。第一个痛点是容易填错。子网掩码写错一位、网关少打一个数字这类问题在实验环境里几乎天天见。小型网络里两台设备配错还能靠肉眼排查网络一扩大错误定位的成本就上去了。第二个痛点是地址冲突。手动分配时A机器用了192.168.10.10B机器第二天也被填了同一个地址结果就是其中一台或者两台一起掉线。矛盾往往不是配置当下爆发而是过一段时间才被业务发现到时候再回头查是哪台机器占了地址非常耗时。第三个痛点是新增设备效率太低。今天来一个访客要临时上网明天加一台打印机需要地址如果每次都靠人去分配网管基本上就不用干别的事了。DHCPDynamic Host Configuration Protocol动态主机配置协议就是冲着这些问题来的。它把IP地址、子网掩码、默认网关、DNS服务器这些参数集中放到一台服务器上统一管理终端设备接入网络后自动申请、自动获取、到期自动续租。地址池里有哪些地址可用、哪些已经被分配、哪些被排除不用服务器都记得一清二楚。从这个角度看DHCP本质上是一套“网络地址的自动分配系统”。1.2 DHCP下发的不只是IP地址很多初学者有一个误解觉得DHCP就是给设备分配一个IP。实际上DHCP报文里携带的参数远不止IP地址。以最常见的DHCP Ack报文为例它至少可以包含这些内容IP地址和子网掩码默认网关RouterDNS服务器地址租约时间Lease Time域名后缀各种Option选项如服务器地址、启动文件等换句话说终端拿到的不只是一个地址而是一整套“上网配置”。这也是DHCP在现网中能够大规模部署的原因——设备插上网线或者连上WiFi就能用用户完全感知不到配置过程。1.3 为什么要在eNSP里学DHCPeNSP是华为官方的网络模拟器虽然是个模拟环境但路由器和交换机的命令体系和真实设备基本一致。DHCP这种协议非常适合在eNSP里学习原因有三个。第一成本低。真机上做DHCP实验需要准备多台电脑和网络设备eNSP里拖一台AR路由器、一台S5700交换机、两三台PC就能把最基本的分配流程跑起来。第二可以抓包。eNSP集成了Wireshark能在接口上抓到完整的DHCP四步交互过程把协议变成肉眼可见的报文这是真机环境里比较难做到的。第三方便验证各种异常场景。地址池耗尽、中继配置错误、客户端获取失败这些情况在模拟器里可以反复演练到了现网遇到类似问题才不会慌。2. 一次完整的租约握手Discover、Offer、Request、Ack背后发生了什么2.1 四步报文交互流程DHCP客户端从空配置到拿到IP中间要经历四个步骤。这个流程在任何一本网络教材里都会出现但真正理解它最好是把每一步放在具体的网络场景里看。第一步DHCP Discover。客户端开机时没有IP地址它会在本地网络发送一个广播报文源地址是0.0.0.0目的地址是255.255.255.255意思是“网段里有DHCP服务器吗我需要一个IP”。这个报文会广播到整个二层网络所有收到它的DHCP服务器都能应答。第二步DHCP Offer。服务器收到Discover后会从地址池里挑一个可用的IP准备通过Offer报文回应客户端。发送方式可以单播也可以广播eNSP里大多通过单播方式到达客户端如果客户端在同一个广播域。Offer里带有服务器推荐的IP、掩码、网关、DNS、租约时间等信息。第三步DHCP Request。这里有个细节值得注意客户端可能同时收到多个服务器的Offer。如果网络上有多台DHCP服务器客户端只会选择其中一个通常是第一个收到的Offer然后发送一个广播的Request报文。广播的原因是为了同时告诉所有其他服务器“我已经选了某一台你们把各自预留的地址收回去吧”避免地址浪费。第四步DHCP Ack。被选中的服务器收到Request后确认这个地址正式分配给该客户端发出Ack报文。客户端收到Ack才算真正拿到了可用的IP配置。如果服务器收到Request后发现地址已经无法分配比如已被其他设备占用会回复NakNAK报文客户端收到Nak后要重新从Discover阶段开始。2.2 租约续租与重新绑定的时间点DHCP分配的地址是有“租约期限”的让一个终端永久占用某个IP在现网里并不可取。租约机制用两个关键时间点来控制IP的生命周期。T1通常为租约的50%客户端开始尝试向原服务器发起单播Request请求续租。如果成功租约重新计时。T2通常为租约的87.5%T1续租失败比如服务器宕机或网络不通客户端进入重新绑定状态发送广播Request允许任意服务器响应。如果租约到期还没续上客户端必须停止使用该地址重新走完整的Discover流程。用类比来理解租约就像租房合同。T1时间点相当于到期前一个月正常联系房东续签T2时间点相当于临到期前一周如果还联系不上房东就赶紧去找新房子合同到期还没着落就只能先搬出去再说。DHCP的机制设计得比租房可是严谨多了。2.3 地址冲突检测DHCP服务器在分配地址之前通常会先主动检测一下这个地址是否已经被使用防止出现IP冲突。在eNSP里服务器端发送Offer前一般会通过ping来探测。客户端收到Ack之后也会发送一个免费ARPGratuitous ARP广播查询网段内是否有设备回应这个IP。如果收到回应说明存在冲突客户端会发送Decline报文告知服务器该地址不可用并重新申请新地址。这套双向检测机制让DHCP环境下自动分配地址的冲突概率降到了很低。3. eNSP里的准备动作装对版本、搭好拓扑再谈配置3.1 安装eNSP常见的坑关于eNSP安装网上教程很多我按自己踩过的坑挑几个重点说。很多人在官网下载了最新版eNSP结果装完以后要么设备启动不了要么电脑动不动重启。安装华为eNSP后电脑老是重启这个问题我从几个QQ群里见过不少次大多数情况是WinPcap或Npcap驱动和当前系统不兼容或者VirtualBox版本对不上。eNSP依赖VirtualBox运行虚拟设备依赖Wireshark和WinPcap/Npcap做抓包三者版本必须互相匹配。经验做法是先看看安装包里自带的版本说明再按官方推荐的组合安装。具体来说Win10/Win11系统下优先选适配好的Npcap版本别贪新VirtualBox版本也不是越高越好某些新版eNSP反而要求用特定老版本。另外启动eNSP设备时图标一直红或者提示“启动失败”优先检查三件事是否以管理员身份运行eNSP、VirtualBox服务是否正常启动、本机是否装了360之类的安全软件把虚拟网卡拦截了。关掉安全软件、以管理员方式运行能解决一大半启动问题。3.2 eNSP里的DHCP实验拓扑怎么设计eNSP里做DHCP实验我建议用AR2220路由器加S5700交换机再加两台PC。AR2220支持完整的DHCP服务器功能S5700模拟接入交换机PC充当客户端。基础的实验拓扑可以这样规划一台AR2220路由器命名为AR1一台S5700交换机命名为SW1两台PCPC1和PC2物理连接AR1的GigabitEthernet0/0/0接SW1的GE0/0/1PC1的Ethernet0/0/1接SW1的GE0/0/2PC2的Ethernet0/0/2接SW1的GE0/0/3SW1在二层透传即可不需要配置任何VLAN所有设备默认处于同一个广播域。AR1作为DHCP服务器同时也充当PC的网关。这个拓扑简单够用适合跑通接口地址池和全局地址池两部分实验。后面中继实验我也沿用这款拓扑扩展思路保持一致。4. 实操一路由接口直连场景下的接口地址池配置4.1 配置AR1作为DHCP服务器在eNSP里启动设备以后先进入AR1的配置视图。业务网段我规划为192.168.10.0/24网关落在AR1的G0/0/0接口上也就是192.168.10.254。第一步给接口配置IP地址。system-view sysname AR1 interface GigabitEthernet0/0/0 ip address 192.168.10.254 255.255.255.0 quit接口IP配好之后就要开启DHCP服务。华为设备上有一个全局开关不打开的话后面所有DHCP相关的配置都不会生效。dhcp enable接下来配置接口地址池。所谓接口地址池是指地址池自动绑定在某个三层接口上分配出去的地址网段直接用接口IP所在的网段网关也默认就是接口IP本身。interface GigabitEthernet0/0/0 dhcp select interface dhcp server dns-list 223.5.5.5 8.8.8.8 dhcp server lease day 1 quit配置就这些非常简单。这里dhcp select interface表示该接口收上来的DHCP请求由接口对应的地址池进行分配dns-list给客户端下发DNSlease day 1指定租约一天。需要注意接口地址池模式下不需要配network命令也不需要配gateway-list因为接口的IP已经决定了地址池网段和网关。很多新手在这里会犯糊涂明明配了全局地址池却不用或者配了接口地址池还去加network结果发现地址分配异常。4.2 PC端切换为DHCP获取并验证双击PC1在弹出的窗口中切换到“配置”页签找到IPv4配置区域把IP地址获取方式从“静态”改成“DHCP”点击应用。PC2做同样的操作。配置完成后等待几秒PC会开始发送DHCP Discover请求。因为模拟器中PC的DHCP状态刷新可能有一定的延迟如果没立刻看到地址可以在PC的命令行里敲ipconfig /renew强制重新获取或者重新点一次“应用”。获取成功后在PC的命令行输入ipconfig会看到如下信息IPv4地址192.168.10.x具体数值由AR1从地址池分配子网掩码255.255.255.0网关192.168.10.254DNS服务器223.5.5.5在AR1上可以查看地址池的分配情况display ip pool interface GigabitEthernet0/0/0输出里可以看到接口地址池的网段范围、已分配地址数、剩余可用地址数。再执行display dhcp server statistics能查看到Received总包数、发送的Offer和Ack数量。如果这里看到Discover收到很多但Offer没发出去说明服务器分配失败要回查DHCP服务是否开启、地址池是否还有剩余地址。4.3 验证四步报文这是eNSP学DHCP最有价值的部分。在AR1的G0/0/0上开启抓包然后回到PC1把获取方式切回静态再切回DHCP强制触发一次新的获取过程。打开Wireshark的数据包列表过滤条件写dhcp就能看到完整的四步交互第1个包Discover源0.0.0.0目的255.255.255.255第2个包Offer服务器回应第3个包Request客户端广播确认选择第4个包Ack服务器最终确认只有真实看到这四个包才算真正理解DHCP到底是怎么工作的。纸上谈兵再多不如抓包抓得一次来得实在。5. 实操二全局地址池、保留地址与MAC绑定5.1 为什么要用全局地址池接口地址池存在一个天然限制一个接口只能对应一个网段的地址池适合单网段小规模场景。如果你要在一个设备上集中管理多个网段的地址或者需要做灵活的排除、绑定就要用全局地址池。全局地址池和接口地址池最大的区别在于地址池的网段、网关等属性都需要手动完整定义然后在接口上选择“使用全局地址池”来分配。这样同一个地址池可以被多个接口共用也可以按需从不同接口发出灵活性高很多。5.2 全局地址池的基本配置继续沿用上面的实验拓扑把业务网段换成192.168.20.0/24AR1仍然充当DHCP服务器和网关。先看配置命令system-view dhcp enable ip pool pool1 network 192.168.20.0 mask 255.255.255.0 gateway-list 192.168.20.254 dns-list 223.5.5.5 lease day 3 excluded-ip-address 192.168.20.1 192.168.20.20 quit interface GigabitEthernet0/0/0 ip address 192.168.20.254 255.255.255.0 dhcp select global quit这里有几个关键点network命令定义地址池网段为192.168.20.0/24。gateway-list是必须的它指定客户端获取到的网关地址在接口地址池脚本里这个参数可以省略但全局地址池必须手动指定忘记配的话PC能拿到IP却拿不到网关上网必然失败。excluded-ip-address用来排除网段里靠前的一段地址。实际网络里网关、核心服务器、网络打印机等设备通常使用固定IP这些地址不能进入动态分配池。上面排除的是1到20网关192.168.20.254本身也不在network网段内的动态分配逻辑里但为了保险还是建议把网关和其他静态设备的地址都排除掉。配置完成后在接口下执行dhcp select global表示该接口收到的DHCP请求统一从全局地址池中分配。PC端切换回DHCP模式验证时查看IP地址应该落在192.168.20.21到192.168.20.254之间排除1-20后的剩余地址。在AR1上执行display ip pool name pool1这里能看到地址池名称、网段、租期、排除范围、已用地址、冲突地址等信息。5.3 静态绑定给指定设备固定IP有些设备需要每次都获取同一个IP比如打印机、监控摄像头、特定服务器。这时候用MAC地址静态绑定是最干净的做法。先在PC的命令行输入ipconfig /all查看网卡的MAC地址形如5489-98C5-1A2B。然后在地址池里加一条绑定ip pool pool1 static-bind ip-address 192.168.20.100 mac-address 5489-98C5-1A2B quit配置完成后让PC重新续租一次。之后无论PC怎么重启、怎么重新申请只要网卡没换AR1都会把192.168.20.100分给它。被绑定的地址默认从动态分配范围中移除不会同时被其他人抢走。静态绑定有个注意点MAC地址的输入格式建议带连字符例如5489-98C5-1A2B写成5489-98c5-1a2b也行大写小写都可以关键是不能漏写分隔符或者少写位数。5.4 接口地址池和全局地址池怎么选把两种模式放在一起对比选型逻辑就清楚了对比维度接口地址池全局地址池网关配置自动取接口IP无需手动配必须通过gateway-list手动指定适用场景单接口、单网段、小规模多接口、多网段、集中管理排除与绑定支持但每接口独立配置集中在一处管理灵活度高配置复杂度简单稍复杂实验阶段两个都要做一遍但实际使用我更推荐全局地址池。后面要讲的DHCP中继场景里地址池必须建在服务器侧全局模式几乎是唯一选择。6. 实操三跨网段分配DHCP中继到底转发了什么6.1 广播过不去网段中继存在的根本原因DHCP Discover是一个广播报文而广播默认只能在同一个二层广播域里传播。客户端在192.168.10.0/24网段DHCP服务器在192.168.100.0/24网段两者之间隔着一台三层设备客户端发的广播根本到达不了服务器。要解决这个问题办法有两个一是每网段放一台DHCP服务器成本太高管理也分散二是在中间的三层设备上启用DHCP中继功能把客户端的广播请求转成单播报文发给远端的DHCP服务器再把服务器的回应发回给客户端。实际网络中绝大多数情况采用中继方式集中部署一台DHCP服务器所有网段共用。6.2 中继实验拓扑与配置中继实验我用的拓扑是这样的AR1作为DHCP服务器G0/0/0接口IP为192.168.100.1/24AR2作为中继设备G0/0/0接口IP为192.168.100.2/24连接AR1G0/0/1接口IP为192.168.10.1/24连接二层交换机SW1再下接PC1、PC2PC所在的业务网段为192.168.10.0/24先配置AR1DHCP服务器system-view sysname AR1 interface GigabitEthernet0/0/0 ip address 192.168.100.1 255.255.255.0 quit dhcp enable ip pool relay_pool network 192.168.10.0 mask 255.255.255.0 gateway-list 192.168.10.1 dns-list 223.5.5.5 quit注意这里的gateway-list是192.168.10.1也就是PC侧网关而不是AR1自己接口的IP。这一点非常关键。然后配置AR2中继设备system-view sysname AR2 interface GigabitEthernet0/0/0 ip address 192.168.100.2 255.255.255.0 quit interface GigabitEthernet0/0/1 ip address 192.168.10.1 255.255.255.0 dhcp select relay dhcp relay server-ip 192.168.100.1 quit真正发挥作用的是两条命令dhcp select relay表示该接口启用DHCP中继模式收到的DHCP广播要被转发到指定服务器dhcp relay server-ip用来指定DHCP服务器的地址。最后一步是路由。AR1要能回复到达192.168.10.0/24的请求所以需要一条回程路由ip route-static 192.168.10.0 24 192.168.100.2没有这条路由中继把Request转发给服务器后服务器找不到回去的路Offer就发不回来。这个细节很多人会漏掉。配置完成后PC1重启DHCP获取流程正常情况下可以拿到192.168.10.0/24网段的地址网关192.168.10.1DNS为223.5.5.5。6.3 中继过程中发生了什么当PC1发出Discover广播时AR2的G0/0/1收到这个广播识别为DHCP请求后在报文里填入关键字段giaddr中继代理IP地址值为192.168.10.1然后把广播报文变成单播发给192.168.100.1。服务器收到后根据giaddr字段判断客户端所在网段从对应的192.168.10.0/24地址池中分配地址。回应报文发回给192.168.10.1由AR2再转给PC1。giaddr这个字段是整个中继机制的“灵魂”。服务器本身无法感知远端客户端在哪个网段全靠中继侧填写的这个地址来选池子。如果想确认中继工作是否正常可以在AR2上执行display dhcp relay statistics查看中继收发包的数量。如果有收无发、或者发包数一直在涨但客户端就是拿不到地址优先检查服务器回程路由和地址池网段是否匹配。6.4 三层交换机上的中继配置思路现实组网里中继角色更多由三层交换机承担比如S5700系列。配置逻辑和路由器完全一致只是把接口换成VLANIF接口。举个例子客户端在VLAN 10网关是VLANIF10的192.168.10.1interface Vlanif10 ip address 192.168.10.1 255.255.255.0 dhcp select relay dhcp relay server-ip 192.168.100.1 quit命令和路由器上的一模一样。理解了路由器的中继三层交换机只是换了个接口类型而已。7. 客户端拿不到地址整条排查链路走一遍7.1 定位问题是从哪一步断掉的DHCP排错最忌讳上来就改配置。正确姿势是先把故障定位在一个具体的环节上。我在eNSP里调试DHCP时通常按照“客户端状态 → 服务器服务状态 → 地址池状态 → 报文交互状态”的顺序一层一层往下查。先说客户端侧。打开PC的命令行执行ipconfig看本机地址是什么情况。如果显示的是169.254.x.x说明设备开启了APIPA自动专用地址也就是没有收到任何DHCP应答。问题大概率出在链路或服务器端。如果显示的是192.168.x.x但网关不对或者DNS为空问题大概率出在地址池配置上重点查gateway-list和dns-list。如果直接显示媒体已断开说明物理链路都没通先在eNSP里检查接口指示灯和连线。第二步查服务器侧。无论接口地址池还是全局地址池前提都是dhcp enable已经执行。这个全局开关漏开是eNSP里出现率极高的问题配置全对着但服务器就是不回包。第三步看地址池状态。执行display ip pool查看地址池剩余情况如果地址池里配置的网段和客户端所在的网段对不上或者排除范围设置得太大把可用地址全排除掉了哪怕服务器配置100%正确也分不出地址。7.2 抓包看四步报文停在哪个位置如果前三层检查都没问题就剩最后一个杀手锏抓包。在PC所接的交换机上端口镜像不方便的话直接在AR1的接口上抓包或者在PC端打开Wireshark选择对应的网卡过滤dhcp。然后让PC重新获取一次地址看四步报文走到哪一步。抓包看到的现象说明排查方向只有Discover没有Offer服务器没收到请求或没响应检查dhcp enable、地址池状态有Offer没有Request客户端和服务器都在但客户端不认这个Offer检查中继giaddr是否正常、地址池网段是否匹配有Request没有Ack服务器收到确认但最终分配失败检查地址是否被占用、地址池是否耗尽有Ack但仍然不通分配成功但后续转发有问题检查网关、路由、DNS配置顺着这个表查大多数问题都能定位到具体的断点而不是瞎猜乱改。7.3 中继场景的特殊排错点中继场景里的故障多了一个“中间人”环节。如果PC拿不到地址我建议按下面这个思路排先看AR2上display dhcp relay statistics确认中继接口是否真的收发了DHCP报文。如果统计数字一直为零说明中继模式没有生效重点检查接口下有没有执行dhcp select relay。如果收包正常但发包为零说明AR2找不到去往DHCP服务器的路径重点检查AR1和AR2之间网络是否互通、dhcp relay server-ip是否配置正确。如果中继发包也正常但服务器没有回应优先检查AR1的地址池network是否对应客户端网段。中继环境下服务器只根据giaddr字段选择地址池如果AR1上只配置了192.168.100.0的地址池哪怕客户端在192.168.10.0服务器也只会从192.168.100.0里找地址结果自然就是分配失败。还有一个绕不开的坑是回程路由。前面说过AR1上必须配置到达192.168.10.0/24的路由否则Offer发不出去。很多人在eNSP里配完中继发现能拿到地址但很慢就是因为回程路由是设备学习到或临时生成不是静态配置网络环境一变就失效。8. 从模拟器走向现网地址池规划与安全策略8.1 地址池规划的经验建议在eNSP里做实验时地址池规划随便写都能跑通。但到了真实网络地址池规划直接影响整网的稳定性和可维护性。我总结了几条经验供参考。第一按VLAN规划网段不要所有设备堆在一个大网段里。部门A用192.168.10.0/24部门B用192.168.20.0/24互相隔离也方便故障排查。第二网关地址固定使用每个网段最后几个或最前几个地址比如.254统一规律网管不用记。第三把服务器、打印机、摄像头等需要固定IP的设备安排在排除地址范围之内。排除了1到50那么网关、核心设备、服务器都从这段固定IP里分配动态终端只能从51以后拿地址互不干扰。第四MAC绑定只用在必须固定IP的场景别给所有设备都绑定否则DHCP就没意义了。8.2 租约时间怎么设租约时间的选择要结合实际场景。办公网络设备相对固定租约设1天到3天比较合适既能避免终端长时间占用地址造成浪费也不会频繁触发续租消耗网络资源。如果网络里有大量临时访客终端比如会议室、展厅场景租约设短一些比如1小时甚至30分钟这样终端离开后地址能快速回收。反之如果网络里的设备主要是服务器或固定工位终端租约可以设到7天减少DHCP交互报文对网络的影响。8.3 DHCP Snooping防止私搭服务器DHCP协议本身有一个安全弱点——客户端和服务器之间没有强认证机制。如果一个普通用户私自部署了一台DHCP服务器在网络里响应其他终端的Discover请求下发的网关却是攻击者指定的地址终端上网流量就会被引导到恶意设备上这就是典型的DHCP欺骗攻击。防范手段的关键是在交换机上开启DHCP Snooping功能。它的核心机制是端口的“信任”与“非信任”划分连接合法DHCP服务器的上联端口设为信任端口允许接收DHCP服务器报文连接终端的非信任端口收到DHCP服务器报文一律丢弃。这样即使有私搭服务器发出响应也会被交换机拦截在接入层。eNSP里S5700系列交换机支持这个功能具体命令大致如下dhcp enable dhcp snooping enable interface GigabitEthernet0/0/1 dhcp snooping trusted quit实验时可以把一个连接PC的端口误配成trusted再在PC接入的那台设备上模拟一个简易DHCP服务器观察终端会不会拿到错误地址。这个实验做完对DHCP Snooping的理解会有质的提升。8.4 模拟器与真机的差异最后提醒一点eNSP是模拟器不是真机有些行为和现网设备存在细微差别。比如eNSP里PC获取IP的速度有时很慢需要手动触发续租真实PC极少遇到这种情况。又比如eNSP里网络设备的性能不受DHCP并发数量影响真机上大量客户端同时上线时DHCP服务器配置不当可能成为瓶颈。命令体系方面eNSP和华为真实设备的命令行基本一致但某些高级特性模拟得不完整。学习阶段以eNSP理解原理、熟练命令为主真正部署到生产环境时还是要仔细阅读对应设备版本的命令参考和配置指南。我在实际做实验时还有一个心得DHCP配置出错之后别急着反复点PC的“应用”按钮那会让客户端一遍一遍重新申请反而掩盖了问题。正确做法是先把服务器端的配置检查一遍再让PC重新获取然后用抓包工具确认每一步是否正常。原理搞清楚了配置命令是水到渠成的事。
返回列表