
这几天给朋友整理一套机房接入网络的配置案例正好翻到以前在两台华为交换机 LSW1、LSW2 上用 Trunk 互联传递 VLAN 100、200所有 PC 接交换机的接口都按 Access 模式划入对应 VLAN再通过一台 AR 路由器做 VLAN 间网关的整套实验记录。这套拓扑在真实园区里几乎是基础设施级别的问题跨交换机隔离业务、单臂路由统一网关、访问控制前移都是从它延伸出去的。如果你刚学完 Access、Trunk 这些概念还停留在“好像懂了但不知道命令为什么这么敲”的状态这篇文章用一套完整配置帮你把 VLAN、Access、Trunk、AR 路由器这几个词真正串起来。1. 拓扑拆解一套典型的“Trunk 互联 Access 接入 路由器网关”最小模型1.1 这套拓扑在真实场景里解决什么问题想象一下最常见的办公区网络二楼和三楼各放一台交换机二楼有一批办公电脑三楼有打印机、监控或物联终端业务要求两边在逻辑上隔离但又希望某些跨楼层的设备能互相访问。只靠一台交换机显然不够两台交换机之间只有一根物理线路如果按端口去硬划 VLAN你会发现 VLAN 100 的流量根本过不到对端交换机。Trunk 的作用就是让这一条物理链路能够同时搬运多个 VLAN 的帧而 Access 口则负责把 PC 这种不认识 802.1Q Tag 的终端干干净净地隔离进某个 VLAN。这套最小模型在 eNSP 模拟器里可以用 LSW1、LSW2 两台交换机和一台 AR 路由器重建出来很多考试实验题、认证练习、小园区网络开局骨干框架就是这个样子。它虽然结构简单但把交换机的二层转发、VLAN 隔离、路由器的三层网关这几个核心概念一次全占了非常适合作为理解网络分层行为的起点。1.2 Access 与 Trunk 的职责边界接口类型不是喜好问题网络里没有“全都用 Trunk”或“全都用 Access”的说法端口类型是贴着设备角色走的。PC 的网卡不认识 802.1Q Tag所以 PC 接交换机的口必须用 AccessAccess 口收下 PC 发来的普通无标记帧给它打上当前 VLAN 的 Tag从端口发到 PC 之前再把 Tag 剥掉让终端收到的还是普通以太网帧。而交换机与交换机之间、交换机与路由器之间一条链路上要跑多个 VLAN 的帧就必须用 Trunk让它带着 Tag 去识别和转发。下面这个表格基本概括了整套拓扑里每个接口的选择逻辑链路位置端口/接口类型配置要点PC → LSW1 / LSW2Accessport default vlan 100 / 200LSW1 ↔ LSW2Trunkport trunk allow-pass vlan 100 200LSW1 ↔ ARTrunkport trunk allow-pass vlan 100 200AR 物理接口子接口dot1q termination vid 100 / 200简单说终端不认 Tag所以边界处用 Access一条链路要承载多个 VLAN所以互联处用 Trunk路由器物理口只能表示一个网段所以要用子接口去终结多个 VLAN。1.3 AR 路由器为什么被拉到拓扑里网关与单臂路由标题里提到“LSW1 和 AR”说明整套拓扑里路由器不是可有可无的角色。如果交换机是纯二层设备比如 eNSP 里常见的 S3700默认只做二层转发那么所有 VLAN 的网关都必须放在路由器上。哪怕你用 S5700 这种三层交换机只要没有配置 VLANIF 三层接口它本质上还是二层行为。把网关放在 AR 路由器上意味着路由器只用一个物理口接 LSW1通过 802.1Q 子接口分别终结 VLAN 100 和 VLAN 200这就是典型的单臂路由。优点是小规模网络成本低、配置简洁缺点也很明确跨 VLAN 的所有流量都要绕到 AR 上走一圈这条链路的带宽会成为瓶颈。在我们的实验规模下完全不用操心这个问题。2. 数据帧在链路上如何被标记PVID、Tag 与 Allow-Pass 的三角关系2.1 802.1Q Tag 到底插在哪里想理解 Access、Trunk、子接口的行为必须回到 802.1Q 本身。普通以太网帧本身没有 VLAN 字段802.1Q 标准在源 MAC 地址后面插入了 4 字节的标签信息其中低 12 位是 VLAN ID范围 0 到 4095可用的是 1 到 4094。交换机内部转发的帧都是带 Tag 的端口才是决定“把 Tag 加上还是剥掉”的执行点。Access 口入方向PC 发来的帧没有 Tag交换机会根据端口的 PVID 认定它属于某个 VLAN。Access 口出方向交换机把 Tag 剥掉再发给 PC。Trunk 口入方向检查帧的 VLAN ID 是否在允许列表里在就转发不在就丢。Trunk 口出方向按允许列表转发对于 PVID 对应 VLAN 的帧默认会去掉 Tag 发送。这一套规则是整个链路行为的地基后面所有配置和排错都靠它解释。2.2 PVID 是“无标记帧”的归属判定它和 allow-pass 是两个经常被混淆的概念。PVID 决定“不带 Tag 的帧进来后算哪个 VLAN”allow-pass 决定“哪些 VLAN 的帧能从这个口经过”。两者是不同维度不能混为一谈。华为设备接口的 PVID 默认通常是 1Access 口的port default vlan 100本质就是把 PVID 改成 100。Trunk 口的 PVID 默认也是 1如果你不额外设置任何不带 Tag 的帧到了 Trunk 口都会被当成 VLAN 1 处理。有些人喜欢把 Trunk 的 PVID 改成业务 VLAN比如写port trunk pvid vlan 10那是为了支持 native VLAN 的特殊场景让某个 VLAN 的帧不带 Tag 直接穿越链路。我们这里 VLAN 100 和 200 都希望带 Tag 走所以保持默认 PVID 1 就好乱改反而容易让无标记帧划进错误 VLAN。2.3 用 display port vlan 把端口行为具象化配置完 LSW1 后一条display port vlan可以把接口的角色和行为全部列出来Port Link Type PVID Trunk VLAN List GigabitEthernet0/0/1 trunk 1 100 200 GigabitEthernet0/0/2 access 100 -从这个输出能清晰看到GE0/0/1 是 TrunkPVID 还是 1但 Trunk VLAN List 已经放通了 100 和 200。意思就是 VLAN 100、VLAN 200 的帧带着 Tag 就能从这个口经过不带 Tag 的帧进来抱歉统一按 VLAN 1 处理。GE0/0/2 是 AccessPVID 100PC 接在这个口上就被划进了 VLAN 100。这种具象化的理解比死记“Access 是划 VLAN 的Trunk 是通 VLAN 的”要有用得多。2.4 两个容易被带偏的理解误区第一个误区Trunk 口不等于“所有 VLAN 都能过”。华为 VRP 里你如果不显式敲port trunk allow-pass vlan 100 200Trunk 口默认只处理 VLAN 1 或 PVID 对应的流量别的一律不让过。所以每次配置完我都会用display port vlan或display vlan去确认允许列表而不是想当然。第二个误区Access 口不是“任何帧都照单全收”。Access 口入方向如果收到了与自己 PVID 不匹配的带 Tag 帧一般会被丢弃。也就是说一个划入 VLAN 100 的 Access 口只认真对待 VLAN 100 的流量别的 VLAN 的带 Tag 帧进来基本进不去。这个特性排错时很有用如果发现 PC 接口明明配了 Access帧却带 Tag 到了终端说明上游某个端口配置出现了错乱。3. 两台交换机配置详解VLAN 批量创建、Access 划入与 Trunk 放通3.1 配置前先动手画一张接口规划表别拿到两台交换机就开始敲命令先把接口规划画出来。我在 eNSP 里通常按下面这张表来分配设备接口链路类型VLAN 规划对端LSW1GE0/0/1Trunk100, 200LSW2LSW1GE0/0/2Access100PC1LSW1GE0/0/3Access200PC2LSW1GE0/0/4Trunk100, 200AR GE0/0/0LSW2GE0/0/1Trunk100, 200LSW1LSW2GE0/0/2Access100PC3LSW2GE0/0/3Access200PC4端口编号以模拟器实际型号为准eNSP 里 S3700 的接口可能是 Ethernet0/0/1AR2220 用 GigabitEthernet0/0/0理念完全一样。IP 规划建议是VLAN 100 用 192.168.100.0/24网关 192.168.100.1VLAN 200 用 192.168.200.0/24网关 192.168.200.1PC1 配 100.10PC3 配 100.20PC2 配 200.10PC4 配 200.20。3.2 LSW1 的完整命令序列进入系统视图改设备名然后批量创建 VLANLSW1 system-view [LSW1] sysname LSW1 [LSW1] vlan batch 100 200vlan batch是华为 VRP 的批量创建动作可以一次性把 100 和 200 都建出来。接着配置 LSW1 与 LSW2 之间的互联口[LSW1] interface GigabitEthernet0/0/1 [LSW1-GigabitEthernet0/0/1] port link-type trunk [LSW1-GigabitEthernet0/0/1] port trunk allow-pass vlan 100 200 [LSW1-GigabitEthernet0/0/1] quit第一行把端口从默认的 Hybrid 模式切成 Trunk第二行放通两个 VLAN。然后配两个 PC 接口[LSW1] interface GigabitEthernet0/0/2 [LSW1-GigabitEthernet0/0/2] port link-type access [LSW1-GigabitEthernet0/0/2] port default vlan 100 [LSW1-GigabitEthernet0/0/2] quit [LSW1] interface GigabitEthernet0/0/3 [LSW1-GigabitEthernet0/0/3] port link-type access [LSW1-GigabitEthernet0/0/3] port default vlan 200 [LSW1-GigabitEthernet0/0/3] quit接 PC 的口必须显式切到 Access然后用port default vlan划入对应 VLAN。最后是上联 AR 的口[LSW1] interface GigabitEthernet0/0/4 [LSW1-GigabitEthernet0/0/4] port link-type trunk [LSW1-GigabitEthernet0/0/4] port trunk allow-pass vlan 100 200 [LSW1-GigabitEthernet0/0/4] quit [LSW1] return LSW1 save这个上联口特别容易被漏掉。有人配好了 LSW1 与 LSW2 之间的 Trunk也配好了 AR 子接口却把 LSW1 上联 AR 的口留着默认状态结果 AR 子接口根本收不到 VLAN 100/200 的帧。3.3 LSW2 与互联口两端必须同步放通LSW2 的配置和 LSW1 几乎一样差异只在设备名和接口编号LSW2 system-view [LSW2] sysname LSW2 [LSW2] vlan batch 100 200 [LSW2] interface GigabitEthernet0/0/1 [LSW2-GigabitEthernet0/0/1] port link-type trunk [LSW2-GigabitEthernet0/0/1] port trunk allow-pass vlan 100 200 [LSW2-GigabitEthernet0/0/1] quit [LSW2] interface GigabitEthernet0/0/2 [LSW2-GigabitEthernet0/0/2] port link-type access [LSW2-GigabitEthernet0/0/2] port default vlan 100 [LSW2-GigabitEthernet0/0/2] quit [LSW2] interface GigabitEthernet0/0/3 [LSW2-GigabitEthernet0/0/3] port link-type access [LSW2-GigabitEthernet0/0/3] port default vlan 200 [LSW2-GigabitEthernet0/0/3] quit [LSW2] return LSW2 saveTrunk 链路是两端都要配置的。LSW1 放通了 VLAN 100/200LSW2 如果没放通帧到达 LSW2 的 GE0/0/1 入接口时就会被丢弃。这种“一半通一半不通”的故障最磨人因为另一侧 VLAN 可能完全是好的你单看某台设备配置会觉得自己全对。3.4 华为默认 Hybrid 模式与保存配置的坑华为 VRP 交换机接口默认是 Hybrid不是 Access 也不是 Trunk。很多从其他厂商转过来的工程师会在这里摔跟头觉得“不写 link-type 应该没问题吧”结果默认 Hybrid 的 untagged VLAN 列表只有 1PC 怎么也划不进 100。我的习惯是每个接 PC 的口都显式写port link-type access每个互联口都显式写port link-type trunk不留模糊状态。配置完先别急着 ping用display vlan看一眼[LSW1] display vlan VLAN ID Type Status Description 100 common up 200 common up如果输出里看不到 100/200说明vlan batch没敲上。再看display port vlan确认每个接口的 PVID 和允许列表。最后千万别忘了saveeNSP 模拟器重启后配置不会自动保留写盘动作不能省。4. 网关落在 AR 上子接口终结 VLAN 与跨网段路由4.1 子接口的核心思想一个物理口拆成多个逻辑网关路由器物理接口只能配一个 IP 地址但 VLAN 100 和 VLAN 200 需要两个不同网段的网关。子接口解决的正是这个矛盾它把物理接口逻辑拆成多个虚拟接口每个子接口绑定一个 VLAN ID对应一个网关 IP。数据帧到达 AR 物理口后路由器看到 802.1Q Tag 是 100就交给 .100 子接口处理是 200就交给 .200 子接口处理。剥掉 Tag 后IP 层看到的就是一个普通的直连网段。这就是单臂路由名字的来由路由器只伸了一条物理臂出来接交换机逻辑上却同时管着多个 VLAN 的网关。4.2 AR 子接口配置命令与两个关键参数假设 AR 的 GE0/0/0 通过网线连到 LSW1 的 GE0/0/4配置如下AR system-view [AR] sysname AR [AR] interface GigabitEthernet0/0/0.100 [AR-GigabitEthernet0/0/0.100] dot1q termination vid 100 [AR-GigabitEthernet0/0/0.100] ip address 192.168.100.1 255.255.255.0 [AR-GigabitEthernet0/0/0.100] arp broadcast enable [AR-GigabitEthernet0/0/0.100] quit [AR] interface GigabitEthernet0/0/0.200 [AR-GigabitEthernet0/0/0.200] dot1q termination vid 200 [AR-GigabitEthernet0/0/0.200] ip address 192.168.200.1 255.255.255.0 [AR-GigabitEthernet0/0/0.200] arp broadcast enable [AR-GigabitEthernet0/0/0.200] quit [AR] return AR savedot1q termination vid 100是子接口的门禁只处理带 VLAN 100 Tag 的帧。arp broadcast enable是最容易被漏掉的关键参数子接口默认不主动处理广播 ARP终端发起网关 ARP 请求时常常没有回应必须显式开启。物理接口 GE0/0/0 本身不需要配 IP保持开启状态即可真正的网关都写在子接口上。4.3 一次跨 VLAN 通信的完整数据路径把 AR 加进来之后整套链路就活了。以 PC1192.168.100.10网关 192.168.100.1访问 PC2192.168.200.10网关 192.168.200.1为例完整路径是PC1 发现目的 IP 不在自己网段把帧发往网关。LSW1 的 GE0/0/2 是 Access VLAN 100帧带着 VLAN 100 Tag 在交换机内部转发。LSW1 查 MAC 表发现去往网关的 MAC 要从上联口 GE0/0/4 走。这个口是 Trunk允许 VLAN 100 帧通过帧到达 AR 物理口。AR 看到 Tag 100交给 .100 子接口剥掉 TagIP 层收到一个源 100.10、目的 200.10 的数据包。查路由表后发现 200.0/24 直连在 .200 子接口。AR 把数据包从 .200 子接口发出重新打上 VLAN 200 Tag原路回到 LSW1。LSW1 查到 PC2 所在端口后完成转发。这一轮走完能看到两个核心结论一是 Trunk allow-pass 漏了哪个 VLAN对应方向的帧就会在某个入接口被丢二是所有跨 VLAN 流量都绕到 AR 一圈这就是单臂路由的带宽瓶颈来源。4.4 静态 IP 与 DHCP 阶段的先后建议PC 的 IP 建议先用静态配置排错最简单。PC1 配 192.168.100.10/24、网关 192.168.100.1PC2 配 192.168.200.10/24、网关 192.168.200.1以此类推。先把静态 IP 互通跑通再考虑 DHCP否则你无法判断问题是 VLAN 链路导致的还是 DHCP 地址池配置导致的。如果想练 DHCP可以在 AR 上启用 DHCP 服务给 VLAN 100 和 200 分别建地址池DHCP 应答会通过子接口带 Tag 下发到各 VLAN。市面上经常有人搜“华为交换机查看 DHCP 配置”display dhcp server ip-pool这类命令适用于三层网关设备但那是链路跑通后的进阶话题我建议先把二层三层基础链路搞扎实。5. 验证与排错从 display 输出到“通与不通”的根因定位5.1 自底向上的验证顺序与命令清单排错最忌讳一上来就猜配置。我自己的顺序永远是物理层、二层、三层。先看 PC 网卡状态、交换机和路由器接口 up 还是 down再看 VLAN 和 Trunk最后看路由和 ARP。对应命令列成一张表检查层命令重点看什么接口display interface GigabitEthernet0/0/1端口状态、收发统计VLANdisplay vlanVLAN 是否存在、端口归属端口配置display port vlanPVID 与 Trunk VLAN 列表子接口display current-configuration interface GigabitEthernet0/0/0.100dot1q termination 与 IP路由display ip routing-table100/200 网段是否直连ARPdisplay arp路由器能否学到终端 MAC物理和二层先通了再碰三层。很多“ping 不通网关”的问题最后查出来是 Trunk 链路没放通导致网关回程帧被交换机丢掉。5.2 跨 VLAN ping 不通的七种常见场景跨 VLAN ping 不通是这套拓扑里出现率最高的故障按我的排查顺序列一下PC 网关没配或配错。检查 PC 的默认网关是不是 192.168.100.1 或 192.168.200.1这是最常见的原因。AR 子接口没封装 VLAN。看display current-configuration interface GigabitEthernet0/0/0.100有没有dot1q termination vid 100。没开arp broadcast enable。子接口收不到终端 ARP 请求网关永远不可达。LSW1 上联 AR 的口没放通对应 VLAN。这个口必须 Trunk 且 allow-pass vlan 100 200。AR 物理口没接对或线缆故障。display interface GigabitEthernet0/0/0看状态。交换机间 Trunk 只放通了其中一个 VLAN。VLAN 100 通、VLAN 200 不通优先怀疑 allow-pass 遗漏。PC 的 IP 段和子接口网关不在同一网段。比如 PC 配 192.168.101.10网关却是 192.168.100.1ARP 都学不到。每一种情况都能通过display命令缩小范围而不是靠猜。我习惯把两台交换机和 AR 的关键接口配置同时打开逐行核对。5.3 一次“部分 VLAN 不通”的复盘Trunk 漏放通如何被定位分享一个真实复盘。某次测试配置完发现 PC3LSW2 下的 VLAN 100能 ping 通 PC1LSW1 下的 VLAN 100但 VLAN 200 的 PC4 怎么都 ping 不通 PC2。既然涉及跨交换机链路第一反应就是查 LSW2 的互联口。我敲display vlan 200输出里 LSW2 的 GE0/0/1 并不在 VLAN 200 的端口清单中再看display current-configuration interface GigabitEthernet0/0/1allow-pass 只写了一个 VLAN。问题当场暴露配置时只记得放通 200忘了 100所以 VLAN 100 的帧到了 LSW2 的入接口就被拒绝。补上port trunk allow-pass vlan 100 200后PC4 立刻 ping 通 PC2。这种故障的特点是“一侧通一侧不通”单看某台设备配置好像全对只有把两端接口的允许列表放在一起对比时才发现少了一个 VLAN。所以我一直强调配置完成后必须做一次跨设备对照检查这比事后抓包定位效率高得多。5.4 配置习惯与个人判断口径配置过程中容易被忽略的两个小习惯。一是给接口加 description互联口写description To-LSW2-TrunkPC 口写description PC_Office_100一个月后回来维护时你不会想知道面对一堆无注释配置时的痛苦。另一个是每次调整完及时save避免模拟器或设备重启后配置回滚。最后分享一个我在实际项目里常用的判断口径先用“跨交换机但同 VLAN”的两台 PC 互相 ping 通证明 Access 和 Trunk 链路正常再用“跨 VLAN”的 PC 经过网关 ping 通证明 AR 子接口和路由正常。这两步都通过说明 Access、Trunk、子接口三层配置全在健康状态。你还可以在 AR 上执行display ip routing-table和display arp看到 100/200 网段直连、终端 MAC 能被学到链路就是通的。这种“先二层后三层”的验证顺序比对着配置猜哪里错要靠谱得多。