1. 单臂路由DHCP先搞懂为什么这么组网单臂路由配DHCP分配地址是我给朋友收拾小机房时最常用的一套组合也是华为入门组网里最容易栽跟头的地方。说白了就是一台路由器、一台带VLAN的交换机用一条物理链路把多个VLAN的流量都送进路由器路由器用子接口给每个VLAN当网关顺手再开DHCP服务让各VLAN里的终端自动拿地址。这个方案解决了两个实际问题VLAN之间要能互访必须有三层网关终端一多靠手工填静态IP根本维护不过来。它适合刚摸VRP的同学、准备网络认证的考生也想在小办公室自建一套练手网络的朋友。网上教程很多但大多只告诉你敲什么命令不讲为什么要敲尤其是子接口上的 arp broadcast enable 和 dhcp select global 这两条漏掉一条就够你折腾两小时。这篇把我实际调试过程遇到的坑、验证思路和排查方法一次说清楚配置可以直接抄。1.1 先从VLAN间通信的痛点说起交换机划分VLAN之后二层广播域被隔开了VLAN 10里的PC发的广播帧VLAN 20里的PC根本收不到。这是好事能隔离广播风暴、能按部门或区域做访问控制。但代价也很直接两个VLAN之间的设备默认互不可达因为它们在三层上是两个独立网段又没有网关帮它们把报文转发过去。要让VLAN间互通必须经过三层设备。传统做法是每个VLAN拉一根网线到路由器VLAN少还好VLAN一多路由器接口不够用、机房线缆乱成一团扩一个VLAN就得再拉一次线。于是就有了单臂路由交换机上联口做成Trunk一条物理链路把多个VLAN的带Tag帧都送到路由器路由器用逻辑子接口分别终结各个VLAN一个物理接口就相当于好几个网关接口。链路只有一根像一条手臂伸到交换机上所以叫单臂。1.2 子接口把网关收进一台路由器子接口是创建在物理接口之上的逻辑接口没有独立硬件本质上是给物理接口切出来的虚拟小口。在华为路由器上子接口通过 dot1q termination vid 命令绑定一个具体的VLAN编号只处理带这个Tag的帧。每个子接口配一个网关IP对应一个VLAN的三层网关。比如 GigabitEthernet0/0/0.10 绑 VLAN 10配 192.168.10.1/24那VLAN 10里的PC默认网关就填192.168.10.1。这样做的意义是把跨VLAN路由这件事从多根物理线压缩到一台路由器、一条链路、多个逻辑子接口。扩展新VLAN时不用动物理线路交换机上把端口划进新VLAN、Trunk放行新VLAN路由器上新增一个子接口三层互通就出来了。对小型网络来说既省设备又省布线。1.3 DHCP服务器顺带放在路由器的真正原因看到这里你可能会问DHCP服务器干嘛不单独放一台机器单独放确实灵活但你会立刻遇到广播不能跨VLAN的问题DHCP DISCOVER是广播报文VLAN 10里的客户端发的广播三层设备默认不会转发到别的VLAN所以远端的DHCP服务器根本收不到请求。要么在每个VLAN的网关处配DHCP中继Relay要么就让本地网关直接兼任DHCP服务器。单臂路由组网里路由器本来就是每个VLAN的网关DHCP广播正好送到路由器就被终结了。路由器自己在收到请求的接口上匹配地址池、回OFFER报文服务器和中继是同一个设备少配置一大堆东西。小规模网络里这是性价比最高的做法。当然代价也有路由器CPU要同时处理路由和DHCP终端数量一多会吃力真到几百上千终端还是得单独上DHCP服务器加中继。2. 动手前的拓扑与地址规划配置这种东西最怕上来就敲命令。先花十分钟把拓扑和IP规划画清楚后面所有配置都是往规划里填数字出错概率会小很多。这里用一个典型的小型办公网场景做演示。2.1 一个小型办公网的拓扑长什么样VLAN10 VLAN20 PC-A ──── 交换机G0/0/2 PC-B ──── 交换机G0/0/3 \ / 交换机G0/0/1Trunk放行VLAN 10 20 │ 一条物理线 路由器G0/0/0 ├─ G0/0/0.10 → 192.168.10.1 └─ G0/0/0.20 → 192.168.20.1交换机是一台普通的二层设备下联两个口分别划给VLAN 10和VLAN 20上联口做Trunk把两个VLAN的Tag帧都送到路由器。路由器上一根物理线、两个子接口各自身兼网关。PC-A和PC-B都开DHCP自动获取不需要手工配任何IP。2.2 地址规划表照着抄就行规划的原则很简单网段要分开网关地址要留低段服务器和打印机要留固定位置可动态分配的区间留中间。下面这张表是我常用的规划方式。项目VLAN 10办公A区VLAN 20办公B区PC接入端口交换机G0/0/2交换机G0/0/3交换机上联口G0/0/1 Trunk放行VLAN 10、20同左路由器子接口G0/0/0.10G0/0/0.20网关地址192.168.10.1/24192.168.20.1/24DHCP地址池192.168.10.20 - 192.168.10.200192.168.20.20 - 192.168.20.200预留地址段.1 - .19 给网关、服务器、打印机.1 - .19 给网关、服务器、打印机DNS公共DNS或运营商DNS同左建议大家把网关地址规划成每个网段的.1这是行业里的通用习惯以后排查问题时默认网关一眼就能认出来。地址池不要从.2开始直接分留出二三十个地址给服务器、打印机、AP这类需要固定IP的设备绝对值得。2.3 为什么这个场景不选三层交换机有人会问华为交换机也有三层型号配VLANIF不就行了干嘛非得用路由器子接口三层交换机转发性能强硬件芯片转发数据包VLAN一多也不怕是大型园区网的主流选择。但单臂路由的好处在于路由器本身就是一台多功能设备DHCP服务、NAT出口、ACL过滤、甚至拨号上网都在同一台设备上完成。小办公室、分支网点、实验室模拟环境往往不需要那么高的转发性能反而更看重一台设备搞定所有事。反过来也要知道单臂路由的短板所有VLAN流量都挤在一条物理链路上带宽是共享的流量一大就是瓶颈。我见过有人拿单臂路由带二十个VLAN的监控流量一到晚上就卡后来老老实实换了三层交换加汇聚链路。所以这个方案适合VLAN数量少、流量不大的场景性能边界心里要有数。3. 交换机侧配置VLAN没划对后面全是白干交换机侧的配置是整个方案的地基。很多时候路由器配置反复检查没问题问题却出在交换机上一个access口的VLAN划错了。先花几分钟把这块做扎实比什么都强。3.1 创建VLAN并划分PC接入端口进入系统视图先把VLAN建出来然后把PC接入端口改成access模式并划到对应VLAN。华为交换机上access口只有一个VLAN属性进来的不带Tag的帧会被贴上这个VLAN的Tag再转发。system-view sysname Core-SW vlan batch 10 20 interface GigabitEthernet0/0/2 port link-type access port default vlan 10 interface GigabitEthernet0/0/3 port link-type access port default vlan 20vlan batch 可以一次批量创建多个VLAN比逐条创建高效得多。port link-type access 把口设成access模式port default vlan 10 把这个口的PVID设为10也就是未标记的帧进来后都会被打上VLAN 10的标签。两条命令配合使用缺一不可。建议PC口都敲上 stp edged-port enable让端口跳过STP的收敛等待接入设备能更快进入转发状态对DHCP超时这类诡异问题有奇效。3.2 上联Trunk口放行VLAN上联口连的是路由器上面跑的是带VLAN Tag的帧所以要配成Trunk口并且明确放行需要透传的VLAN。Trunk口默认只放行VLAN 1其他VLAN必须手工放行。interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20这两条命令的意义在于Trunk口不会给帧随意打Tag它按VLAN列表决定哪些Tag能通过。写了10和20VLAN 10和VLAN 20的帧才能从这根线上走到路由器。如果不写交换机把这两个VLAN的帧直接丢弃路由器那边自然什么都收不到。有一点要注意Trunk口的PVID建议保持默认的VLAN 1不要手痒改成别的否则从路由器过来的不带Tag的帧会被打上错误的Tag容易造成环路和地址错乱。3.3 交换机侧三个经典错误第一个错误是PC口忘了划VLAN。很多新手建完VLAN就跑去配路由器回头ping不通才发现PC口还是默认VLAN 1设备根本没在规划的VLAN里。配完一定要执行 display vlan 看一下端口归属。第二个错误是Trunk口放行列表写漏了。比如新增VLAN 30时只在路由器上加了子接口交换机Trunk口忘了放行30结果新VLAN的PC一台都上不了网。记住一条只要加了新VLAN交换机侧划口、放行路由器侧加子接口两边同步改。第三个错误是access口和Trunk口模式搞混。有次我排查一个现场上联口被配成了access口路由器收到的全是无Tag帧子接口直接丢包。排查半天才发现是有人把 port link-type trunk 敲成了 port-link-type access。这种低级错误非常隐蔽因为光看网线连接是正常的但二层就不对所以配置完一定要用 display port vlan 核对端口模式。4. 路由器子接口配置单臂路由的灵魂交换机把VLAN Tag送到路由器之后能不能被正确终结、能不能当网关全靠子接口配置。这一节是整篇文章的核心命令不多但每一条背后都有坑。4.1 子接口是什么、怎么建路由器上的子接口用物理接口.编号来命名比如 GigabitEthernet0/0/0.10 就是在G0/0/0上创建的一个逻辑子接口。它没有物理形态不能像物理口那样插线但IP、DHCP、ACL这些三层功能都能配置。创建子接口后最关键的一条命令是 dot1q termination vid 10它告诉路由器这个子接口只处理携带VLAN 10 Tag的帧。收到匹配的帧路由器剥掉Tag当作普通的IP报文走三层转发。子接口和VLAN是一一对应的。VLAN 10对应G0/0/0.10VLAN 20对应G0/0/0.20视频号可以继续往下编。每个子接口配一个网关IP这个IP就是对应VLAN里PC的默认网关。system-view sysname R-GW interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable4.2 dot1q termination vid 怎么理解这条命令是整个单臂路由的开关。你可以把它想象成门禁子接口只认这一个VLAN ID的访客其他VLAN的帧来了直接不理。协议报文从Trunk链路到达路由器物理口后路由器根据帧里的802.1Q Tag查找对应的子接口然后交给子接口处理。物理接口本身不配IP不参与三层转发它只是一个收线的入口。这引出一个常见坑如果子接口上 dot1q termination vid 写错了比如VLAN 10的报文实际带的是Tag 20路由器找不到匹配的子接口报文就被丢弃。PC上的表现就是ping网关不通、DHCP拿不到地址但你在路由器上看接口状态又是Up的非常迷惑。所以配置后第一件事认真核对每个子接口绑定的VLAN编号和规划表是否一致。4.3 千万别漏掉 arp broadcast enable这条命令是单臂路由失败的头号原因也是我每次讲课都要单独拎出来强调的。华为路由器上子接口默认不处理ARP广播报文。客户端想要上网第一件事就是发ARP广播询问谁是192.168.10.1如果子接口不响应PC就学不到网关的MAC地址后续所有包都不知道往哪发。敲上 arp broadcast enable 之后子接口才允许处理收到的ARP广播正常响应网关ARP请求。没有这条命令就算IP配得完全正确PC也通不了网关。再强调一次这条不是可选项是必选项。配置顺序建议是 dot1q termination vid → ip address → arp broadcast enable从上往下敲逻辑清晰不容易漏。4.4 物理接口的隐含要求子接口虽然是逻辑的但它寄生在物理接口上物理接口必须是Up状态。如果路由器G0/0/0和交换机G0/0/1之间的网线没插好、协商失败或者物理口被 shutdown 了子接口再配多少命令都是白搭。调试时先用 display interface GigabitEthernet0/0/0 看物理状态再去看子接口配置顺序别搞反。另外多说一句华为不同系列的设备子接口命令细节可能略有差异比如部分老款路由器支持的是 vlan-type dot1q vid 而不是 dot1q termination vid敲命令时遇到不支持就按问号键看提示别硬背命令。5. DHCP分配地址配置地址池与子接口绑定路由器当DHCP服务器核心就两步先建地址池再让子接口使用这些地址池。很多人只做了第一步地址池建了一堆结果一台PC都拿不到地址问题就出在第二步没做。5.1 全局开DHCP地址池参数逐个说华为路由器上DHCP服务默认是关闭的必须先全局开启 dhcp enable否则后面配置全写了也等于零。dhcp enable ip pool vlan10 network 192.168.10.0 mask 255.255.255.0 gateway-list 192.168.10.1 dns-list 223.5.5.5 114.114.114.114 excluded-ip-address 192.168.10.1 192.168.10.19 lease day 1 quit ip pool vlan20 network 192.168.20.0 mask 255.255.255.0 gateway-list 192.168.20.1 dns-list 223.5.5.5 114.114.114.114 excluded-ip-address 192.168.20.1 192.168.20.19 lease day 1 quit逐条解释一下。network 定义这个池分配哪个网段的地址。gateway-list 是下发给客户端的网关地址必须和子接口IP一致否则客户端拿到地址后默认网关不对照样上不了网。dns-list 下发DNS地址我写了两个国内常用公共DNS实际生产环境建议用运营商下发的DNS避免把内网域名解析到公网去。excluded-ip-address 是保留地址网关本身和前面预留的.1到.19都要从这里排除掉不然地址池可能把网关地址分配给某台PC造成IP冲突。lease day 1 是租期一天办公网一般一天到两天都够用。这里有个容易踩的坑地址池里的 gateway-list 没写或者写错客户端虽然能拿到IP但拿到的网关是错的上不了网还找不到原因。地址池的 gateway-list 必须和收到请求的子接口IP完全一致华为路由器选池的时候就是靠这个匹配关系去找对应地址池的。5.2 子接口绑定DHCP模式global与interface的区别地址池建好之后要在子接口上指定DHCP工作模式。华为常见的两种模式dhcp select global 使用全局地址池dhcp select interface 使用接口地址池。教材和认证考试里最常见的组合是全局地址池我们就用这个。interface GigabitEthernet0/0/0.10 dhcp select global interface GigabitEthernet0/0/0.20 dhcp select global为什么必须敲这一条因为华为路由器接口默认的DHCP模式是接口地址池模式如果不开 dhcp select global它根本不会去用你辛辛苦苦建的全局池客户端请求来了也没有响应。这个细节网上很多教程都不写导致很多人照着配完发现死活分配不出地址。对比项全局地址池global接口地址池interface地址池配置位置ip pool 视图下统一配置直接在子接口下通过 dhcp server 命令配置适合场景多VLAN、需要精细管理预留地址单个网段快速开DHCP网关下发靠 gateway-list可指定自动用接口IP当网关DNS/租期在池内配置在子接口下用 dhcp server dns-list 等配置接口地址池模式适合快速实验全局地址池适合正式组网多VLAN管理起来更清晰。5.3 地址排除、租期与手工绑定地址排除的目的前面说过避免把网关、服务器、打印机这些固定IP设备分配出去。除了排除还可以在地址池里做手工绑定给特定设备的MAC地址固定分配一个IP。ip pool vlan10 static-bind ip-address 192.168.10.88 mac-address 00e0-fc12-3456这条命令的意思是不管客户端从哪个口接入只要MAC是 00e0-fc12-3456就固定给它192.168.10.88。打印机、考勤机、监控NVR这类设备用这种方式最稳。不过要注意不同VRP版本对 static-bind 的支持和命令细节有差异敲的时候用问号键看提示以设备实际支持为准。手工绑定和动态租约之间是互斥的同一个地址不能既在排除范围内又在绑定列表里。租期这块办公网络终端多、流动大可以设短一点比如 lease day 0 hour 8 minute 0让IP半天回收一次如果网络里设备基本固定租期一天就够了。租期太短会增加DHCP交互频率太长又会让IP回收不及时规划时稍微想一下。5.4 配置完成后怎么验证DHCP真的在工作配置完了别急着说好了至少做一轮验证。在路由器上执行 display ip pool能看所有地址池的总数、已分配数、空闲数和冲突数。想看某个池的详细情况用 display ip pool name vlan10。客户端MAC、IP、租期起止时间都能看到很直观。更细一层用 display dhcp server statistics 看DHCP报文收发统计DISCOVER、OFFER、REQUEST、ACK有没有正常走通。如果这里收到请求报文但是OFFER发不出去多半是地址池没有匹配的可用地址或者池的网关配置和接口不匹配。如果有IP冲突用 display dhcp server conflict 查一下冲突记录。老版本设备上这条命令可能是 display dhcp conflict同样用问号键确认。客户端侧验证更简单Windows上先 ipconfig /release 释放旧地址再 ipconfig /renew 重新获取然后用 ipconfig /all 看拿到什么。地址是192.168.10.x开头、网关是192.168.10.1、DNS也有值基本就成了。如果IP是169.254.x.x说明DHCP根本没通直接进排障流程。6. 联调验证与故障排查照着顺序来少走弯路单臂路由加DHCP这套组网排查问题最忌乱猜。我调试的习惯是分层验证先物理、再二层、再三层、最后看DHCP一层一层排除基本都能定位。6.1 先通二层再通三层最后看DHCP第一步在路由器上执行 display interface GigabitEthernet0/0/0确认物理口是Up状态。再在交换机上 display vlan 和 display port vlan确认VLAN都建了、PC口划对了、Trunk口放行对了。二层没问题之后给PC手工配一个临时静态IP比如192.168.10.5/24、网关192.168.10.1ping一下192.168.10.1。如果临时静态IP能ping通网关说明单臂路由的核心链路是通的问题只可能在DHCP这一层如果ping不通回去查子接口、查arp broadcast enable、查Trunk放行别在DHCP上浪费时间。用临时静态IP验证确实是个好办法很多DHCP问题其实是路由问题伪装出来的先把路由通不通这个变量排除掉再看DHCP就清爽多了。6.2 高频故障速查表现象常见原因处理动作客户端IP是169.254.x.xDHCP没通信查 dhcp enable、子接口 dhcp select global、地址池gateway-list是否等于子接口IP能拿到IP但ping不通网关子接口没配 arp broadcast enable补敲命令客户端 arp -d 后重ping临时静态IP也ping不通网关子接口vid写错、Trunk没放行、网线物理不通从路由器往交换机逐段display验证能ping通自己VLAN网关跨VLAN不通对端VLAN子接口或交换机Trunk放行缺失display ip routing-table、核对两侧VLAN配置本应用户拿到另一个网段地址PC口VLAN划错或路由器子接口接错display port vlan、display vlan改回正确VLAN拿到IP是192.168.10.x但网关是192.168.20.1地址池gateway-list配错或子接口IP冲突核对规划表修正网关后renew时通时断、重启后配置丢失没执行 save 保存配置save 并确认保存路径6.3 现场排障实录两个案例说两个我实际碰到的例子。第一个是某办公区新划了VLAN 30路由器上子接口配好了、地址池也建好了但终端一直拿不到地址。我按顺序查路由器上 display dhcp server statistics发现连DISCOVER都没收到。再往交换机上看Trunk口的放行列表里只有VLAN 10和20VLAN 30压根没放行。交换机上敲一条 port trunk allow-pass vlan 30问题立刻解决。这种问题最气人配置看着都对就是漏了一条放行。第二个例子更有意思用户反馈某台电脑能拿到地址但总感觉网速不对劲查IP发现它拿到的是192.168.20.x而它应该在VLAN 10区域。最终定位是交换机上这个PC接入口的 port default vlan 被上一个人改成了20帧被打了VLAN 20的Tag路由器自然就从VLAN 20的池里分配了地址。把口的 default vlan 改回10renew一下立即恢复。这类问题用 display port vlan 一眼就能看到但很多人不会主动去看端口归属。7. 实操细节与扩展方向这套组网我前前后后搭过很多次从模拟器到真机都验证过整个流程跑通之后的成就感还是很强的。最后分享几个我总结出来的实操细节以及后面可以怎么扩展。7.1 配置顺序和检查习惯我的经验是配置顺序一定按交换机→路由器→验证来别跳步。交换机上VLAN和Trunk没弄好路由器子接口配得再漂亮也白搭。每配完一台设备立刻用 display this 看一眼当前生效的配置确认没写错。整台设备配完最后必须 save不然一断电全没了这个坑坑过无数人。另外建议养成一个习惯把每台设备最终生效的配置用 display current-configuration 导出一份存到本地归档。出了故障直接翻配置比对比自己回忆强太多。文件名按日期和设备名命名比如 config_20250110_Core-SW.cfg后续维护会轻松很多。7.2 接着还能怎么扩这套组网是后面很多复杂方案的起点。想加一个新VLAN交换机上建VLAN、划口、Trunk放行路由器上加子接口、配IP、建地址池重复一遍流程就行。如果DHCP服务器要搬到别的地方子接口可以改成 dhcp select relay 模式再指定远端服务器的IP这就变成DHCP中继的玩法了思路是一脉相承的。如果觉得单条链路带宽不够华为路由器上可以用 Eth-Trunk 把两条物理链路绑成一个逻辑链路当单臂用子接口建在Trunk接口上既提高带宽又做了冗余。再往后可以把出口NAT、ACL策略都放到这台路由器上它就成了一台典型的小型分支网关。这套东西吃透了后面学三层交换机VLANIF、学VRRP、学防火墙子接口都会快很多因为底层逻辑是同一个VLAN划分、Trunk承载、子接口终结、DHCP分配。7.3 我个人的体会调过这么多网络之后我个人对单臂路由这组组合的看法是它不是为了炫技而是用最少的物理资源把VLAN间路由、DHCP、网关这些最基础的服务串起来。调试它的过程等于把二层VLAN、Trunk协议、三层子接口、应用层DHCP一次全过了一遍对理解网络分层特别有帮助。现在让我去配一个三层交换机VLANIF也就十几分钟的事思路就是从这套单臂路由里长出来的。所以如果你也是刚接触华为设备别嫌这套组合老先把它调通再去看更复杂的架构你会发现很多知识其实是相通的。