跨交换机VLAN通信:Trunk配置与VLAN间路由实战指南
这次我们来看一个非常高频的网络需求两台交换机之间要做通信但网络里划分了 VLAN结果同一 VLAN 的 PC 跨交换机 ping 不通不同 VLAN 的 PC 又不能互相访问。这个问题在初学者做实验、企业内部组网、园区网维护中经常遇到。这篇文章按“同 VLAN 跨交换机”“不同 VLAN 间互访”两条主线把链路类型、标签转发、华为/思科/锐捷/华三常用配置、eNSP 模拟验证、常见排查手段一次说清楚。先给出结论交换机之间带 VLAN 通信核心就两件事。第一两台交换机互联的端口要允许相关 VLAN 的报文通过通常用 Trunk 链路。第二如果还要实现不同 VLAN 之间互相访问就必须引入三层转发要么用路由器做单臂路由要么用三层交换机划 VLANIF 接口。下面逐步展开。1. 交换机间 VLAN 通信核心概念速览先看一张速览表把链路类型、端口角色、报文特征讲清楚。项目说明VLAN 标准IEEE 802.1Q报文头中增加 4 字节 Tag 字段其中 VLAN ID 占 12 bitVLAN ID 范围可用配置一般是 1 到 4094VLAN 1 通常是系统默认 VLANAccess 口用于连接终端设备发出的报文不带 Tag收到带 Tag 报文时会处理本地归属Trunk 口用于交换机之间或交换机与路由器之间允许特定 VLAN 的报文带 Tag 穿越Hybrid 口华为特有模式可以同时以 Tagged/Untagged 方式加入多个 VLAN同 VLAN 跨交换机交换机互联口配置 Trunk并 allow-pass 对应 VLAN不同 VLAN 间互访需要三层转发单臂路由或三层交换机 VLANIF默认 PVID华为/思科/锐捷/华三多数默认 PVID 和本征 VLAN 都是 1这里需要强调一个细节VLAN 划分解决的是二层隔离问题。同一个业务 VLAN 内的 PC 要跨交换机通信靠的是 Trunk 链路把带 802.1Q Tag 的帧从一台交换机送到另一台交换机。而不同 VLAN 本质上是不同的二层广播域跨 VLAN 通信必须走到三层。2. 同 VLAN 跨交换机通信Trunk 链路就够了场景 1 是交换机 SW-A 和 SW-B 通过某个端口互联PC-A 接在 SW-A 的 VLAN 10 端口PC-B 接在 SW-B 的 VLAN 10 端口PC-A 要可以 ping 通 PC-B。这里 PC-A 发出的帧进入 SW-A 的 Access 口SW-A 会为这个帧打上 VLAN 10 的 Tag。SW-A 的 Trunk 口允许 VLAN 10 通过这个带 Tag 的帧被从 Trunk 口发出去。SW-B 的 Trunk 口收到这个带 VLAN 10 Tag 的帧看到允许列表里有 VLAN 10就会把帧转发到 SW-B 上同样是 VLAN 10 的 Access 口。PC-B 收到时帧的 Tag 已经被剥离。这个过程必须满足两个条件。第一两台交换机互联端口必须都是 Trunk 类型。第二Trunk 口允许列表中必须包含 VLAN 10。很多“同 VLAN 跨交换机不通”的故障就是 Trunk 口没有 allow-pass vlan 10或者互联端口是 Access 口Tag 在链路上丢失或无法正确识别。华为交换机上的基础配置如下SW-A 和 SW-B 都要配。# SW-A 配置 system-view vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 quit这里把 VLAN 10 和 VLAN 20 都放行模拟真实建设中可能有多个业务 VLAN 共用这条互联链路。SW-B 的配置与 SW-A 结构相同只是用不同接口接 PC-B。配置完成后可以在 SW-A 上执行display port vlan来查看 Trunk 口放行了哪些 VLAN。[SW-A] display port vlan Port Link Type PVID Trunk/Vlan List GigabitEthernet0/0/1 access 10 - GigabitEthernet0/0/3 trunk 1 1 10 20从输出可以看到Trunk 口的 PVID 还是默认的 1放行列表里已经有 VLAN 10 和 VLAN 20。同 VLAN 跨交换机通信看到这样的输出就表示配置基本正常。3. 不同 VLAN 间通信单臂路由与三层交换场景 2 是更常见的需求。PC-A 在 VLAN 10IP 是 10.0.10.1/24网关是 10.0.10.254。PC-B 在 VLAN 20IP 是 10.0.20.1/24网关是 10.0.20.254。要求 PC-A 能访问 PC-B。这时不能再靠 Trunk 链路本身了需要三层设备。第一种方式是单臂路由。把路由器的一个物理口接到交换机的 Trunk 口在这个物理口上创建两个子接口分别对应 VLAN 10 和 VLAN 20并为每个子接口配置不同网段的网关地址。华为路由器的典型配置# 路由器 AR1 配置 system-view interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 10.0.10.254 24 arp broadcast enable quit interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 10.0.20.254 24 arp broadcast enable quit交换机侧连接路由器的接口需要配成 Trunk并放行 VLAN 10、20。PC 的网关分别指向 10.0.10.254 和 10.0.20.254。这样 VLAN 10 的报文到达路由器的子接口 .10路由器查路由表后从子接口 .20 转发出去在 Trunk 链路上重新打上 VLAN 20 的 Tag。第二种方式是用三层交换机。这也是当前企业园区网最常见的做法。三层交换机的 VLANIF 接口本身就是三层网关不需要单独接路由器。华为三层交换机配置# SW-C 作为核心/汇聚交换机 system-view vlan batch 10 20 interface vlanif 10 ip address 10.0.10.254 24 quit interface vlanif 20 ip address 10.0.20.254 24 quit interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit配置完成后可以在交换机上执行display ip interface brief看到 Vlanif10 和 Vlanif20 都已经 Up并且有 IP 地址。PC-A ping PC-B 时目的 IP 不在同一网段报文先发给网关 10.0.10.254也就是 Vlanif10三层交换机查路由后从 Vlanif20 转发给 PC-B。三层交换相比单臂路由硬件转发效率更高网关就在交换机内部不需要额外采购路由器故障点也更少。缺点是必须在支持三层功能的交换机上配置纯二层交换机配不了 VLANIF。4. 华为交换机实操在 eNSP 中配置跨交换机 VLAN 网络如果不想搬两台真实交换机可以在华为官方模拟器 eNSP 里搭拓扑快速验证。这里给一套完整验证流程。4.1 拓扑规划SW-A 和 SW-B 是二层交换机用 GE0/0/3 互联。PC-A 接 SW-A 的 GE0/0/1属于 VLAN 10。PC-B 接 SW-B 的 GE0/0/1属于 VLAN 10。SW-A 和 SW-B 互联端口为 Trunk允许 VLAN 10 通过。4.2 搭建步骤打开 eNSP新建拓扑拖入两台 S5700 交换机、两台 PC。用网线连接PC-A 连 SW-A GE0/0/1PC-B 连 SW-B GE0/0/1SW-A GE0/0/3 连 SW-B GE0/0/3。启动所有设备先完成 PC 的 IP 配置。在 SW-A 和 SW-B 上分别配置 VLAN 和 Trunk。在 PC 上执行 ping 测试。PC 的 IP 配置参考如下。设备IPv4 地址子网掩码网关PC-A10.0.10.1255.255.255.010.0.10.254PC-B10.0.10.2255.255.255.010.0.10.254如果是纯二层 VLAN 场景PC 的网关可以先不填因为验证目标是同 VLAN 内的二层互通。如果后续要模拟 VLAN 间互访就把网关填成对应网段的 VLANIF 地址。4.3 交换机完整配置SW-A 和 SW-B 的配置如下另一台交换机只需要把sysname改成 SW-B接入 PC 的接口改成自己的接口编号。system-view sysname SW-A vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 quit4.4 验证结果配置完成后从 PC-A ping PC-B预期会看到类似下面的回显。PC ping 10.0.10.2 Ping 10.0.10.2: 32 data bytes, Press Ctrl_C to break From 10.0.10.2: bytes32 seq1 ttl128 time16 ms From 10.0.10.2: bytes32 seq2 ttl128 time16 ms能收到响应说明 Trunk 链路已经正常学习 MAC 地址VLAN 10 的帧可以跨交换机转发。如果 ping 不通先在交换机上执行display mac-address看两台 PC 的 MAC 是否已经被学习到。display mac-address正常情况下除了 SW-A 本端端口连接的 PC 之外还能看到通过 Trunk 口学习到的远端 PC MAC 地址且 VLAN 都是 10。5. 思科、锐捷、华三配置命令对比实际项目中会遇到多个厂商设备混用。虽然 802.1Q 是公共标准但不同厂商的命令风格有明显差异。这里对比四个常见品牌的 Trunk 配置。华为interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20华三H3Cinterface GigabitEthernet1/0/3 port link-type trunk port trunk permit vlan 10 20思科interface GigabitEthernet0/3 switchport mode trunk switchport trunk allowed vlan 10,20锐捷interface GigabitEthernet 0/3 switchport mode trunk switchport trunk allowed vlan 10,20从对比可以看到华为和华三都使用link-type命令设置端口模式思科和锐捷则使用switchport mode命令。在放行 VLAN 列表方面华为用allow-pass vlan华三用permit vlan思科和锐捷用allowed vlan。差异点整理成一张表。功能华为华三思科锐捷配置端口模式port link-type trunkport link-type trunkswitchport mode trunkswitchport mode trunk放行 VLANport trunk allow-pass vlan 10 20port trunk permit vlan 10 20switchport trunk allowed vlan 10,20switchport trunk allowed vlan 10,20配置 Access VLANport default vlan 10port access vlan 10switchport access vlan 10switchport access vlan 10查看接口 VLAN 信息display port vlandisplay port vlanshow interfaces trunkshow interfaces switchport这些命令在交换机的常见版本上基本通用但不同型号和系统版本之间可能存在细微差异。生产环境变更前最好先在模拟器或测试交换机上确认命令语法。6. 远程管理与批量配置脚本当交换机数量多起来之后逐个通过 Console 口配置效率太低。常见做法是给交换机配置管理 IP开启 SSH再用脚本批量下发配置或备份配置。华为交换机开启 SSH 的基础配置思路如下。system-view sysname SW-A ssh server enable interface vlanif 10 ip address 10.0.10.254 24 quit stelnet server enable aaa local-user admin password cipher Admin123 local-user admin privilege level 15 local-user admin service-type ssh quit user-interface vty 0 4 authentication-mode aaa protocol inbound ssh quit这里需要特别提醒任何生产设备上配置管理账号时必须修改成强密码并限制管理网段访问。不要把示例里的密码直接用于现网。安全基线一般要求通过 ACL 限制 VTY 的访问源只允许运维网段连接。如果设备登录密码遗失不要自行尝试非官方恢复手段应联系厂商技术支持避免触发设备安全机制。如果你需要批量备份多台华为交换机配置可以使用 Python 的 netmiko 库写一个通用脚本。下面是一个最小可运行的示例脚本框架实际使用时需要按网络环境替换设备 IP、账号密码和命令。from netmiko import ConnectHandler devices [ { device_type: huawei, host: 192.168.10.1, username: admin, password: YourPassword, secret: , }, { device_type: huawei, host: 192.168.10.2, username: admin, password: YourPassword, secret: , }, ] COMMANDS [display current-configuration] for device in devices: conn ConnectHandler(**device) output conn.send_command(display current-configuration) with open(fbackup_{device[host]}.txt, w, encodingutf-8) as f: f.write(output) print(fbackup {device[host]} done) conn.disconnect()这个脚本会把每台交换机的 running-config 保存到本地文件。批量下发配置时把send_command改成send_config_set并传入一个命令列表即可。netmiko 需要单独安装执行pip install netmiko。建议在测试环境先对一台设备跑通确认账号权限和命令输出正常再扩展到批量任务。批量任务一定要加日志和异常重试机制避免中途某一台设备连接超时导致整个脚本中断。7. VLAN 间通信的进阶PVID 一致性与三层网关前面的场景是同 VLAN 跨交换机以及不同 VLAN 互访。实际项目里还有一个高频需求两台不同厂商的交换机一边划分了 VLAN 10另一边要把接到 VLAN 10 的流量送到三层网关做路由。这时需要关注 Trunk 口的 PVID 是否一致。PVID 是端口默认 VLAN。华为和思科默认 PVID 都是 1。Trunk 口在发送 PVID 对应 VLAN 的报文时不打 Tag接收没有 Tag 的报文时会把报文归入 PVID 对应的 VLAN。如果两端的 PVID 不一致可能出现“帧进来后 VLAN 归属变了”的诡异故障。例如 SW-A 的 Trunk 口 PVID 是 1SW-B 的 Trunk 口 PVID 是 10。SW-A 发送不带 Tag 的本征 VLAN 1 流量时SW-B 会把这些帧当作 VLAN 10 的流量处理。如果 SW-B 上 VLAN 10 存在流量可能仍然能通但语义已经错误如果 SW-B 没有 VLAN 10报文会被丢弃。建议在实际配置中将互联 Trunk 口的 PVID 统一规划好。除非有特殊互联需求一般建议保持 PVID 为默认 VLAN 1或者统一改为某个互联专用 VLAN并保持两端一致。三层网关方面更深入的配置还包括 DHCP 中继、基于 VLAN 的 DHCP 服务器绑定、VLAN 接口的 ACL 策略等。热词中提到的“基于 VLAN 的 IPSG 组网”也是这个范畴。IPSGIP Source Guard可以基于端口或 VLAN 绑定 IP 和 MAC 地址防止终端私自修改 IP 后仿冒其他终端。若要启用可以在接入端口下绑定终端的 IP 与 MAC# 在 VLAN 10 的接入端口下绑定终端的 IP 和 MAC interface GigabitEthernet0/0/1 port link-type access port default vlan 10 ip source check user-bind ip-address 10.0.10.1 mac-address 00e0-fc00-0001这种配置适合对 IP 盗用、地址欺骗有严格管控要求的园区网络。但需要注意启用 IPSG 后终端换网卡、换 IP 都会导致断网运维时要同步维护地址绑定表。8. 常见问题与排查方法这一节把最常见的故障现象和排查步骤列出来。核心排查思路是先查两层再查三层。问题现象可能原因排查方式解决方案同 VLAN 跨交换机 ping 不通Trunk 口未 allow-pass 对应 VLANdisplay port vlan 查看放行列表在 Trunk 口添加对应 VLAN同 VLAN 跨交换机 ping 不通两台交换机互联口不是 Trunkdisplay interface 查看链路类型将互联口配置为 TrunkPC 能 ping 通网关但跨 VLAN 不通三层设备未配置 VLANIF 或路由display ip interface brief配置 vlanif 或单臂路由子接口PC 访问本网段不通Access 口 VLAN 归属错误display vlan 查看端口归属重新调整端口 default vlan某些终端能通某些不通PVID 不一致或 MAC 表异常查看两端 Trunk 口 PVID统一 PVIDDHCP 拿不到地址DHCP 服务器在其他 VLAN未配置中继检查 vlanif 下是否有 dhcp select relay配置 DHCP Relay启用 IPSG 后终端断网IP/MAC 绑定关系过期或配置错误display dhcp static user-bind all更新绑定表无法 SSH 到交换机管理VTY 未开启 SSH 传入协议检查 VTY 配置和 ACL 限制开启 SSH 并配置 AAA更具体一点的排查步骤。第一步先从 PC 上确认 IP 配置。终端 IP、掩码、网关是否在同一网段。很多“交换机配置错了”的问题源头其实是 PC 配置不对。第二步用display vlan和display port vlan检查交换机的 VLAN 划分和端口放行列表。重点看互联 Trunk 口是否包含所有需要跨交换机通信的 VLAN。第三步用display mac-address查看 MAC 表。同 VLAN 跨交换机通信不通很多时候是远端 MAC 没有学习到。第四步如果二层通但不同 VLAN 之间 ping 不通进入三层检查。在交换机上执行display ip routing-table看有没有到达对方网段的路由。如果是三层交换机 VLANIF应该能看到直连路由如果是单臂路由则检查路由器子接口配置是否正确VLAN 封装是否匹配。第五步检查 PVID 和 Tag。如果使用 Wireshark 在链路上抓包重点看帧里有没有 802.1Q Tag。交换机之间 Trunk 链路上VLAN 10 和 VLAN 20 的帧应带 Tag。如果看到本应带 Tag 的帧没有 Tag可能就是 PVID 设置导致的。9. 最佳实践与使用建议从实际组网经验看交换机之间的 VLAN 通信配置虽然入门门槛不高但要想稳定运行建议养成这几个习惯。第一VLAN 规划先行。互联网段、业务网段、管理网段分开规划VLAN ID 编号规则要统一。例如管理 VLAN 100办公 VLAN 10业务 VLAN 20视频监控 VLAN 30。避免临时起意随便分配 VLAN ID。第二Trunk 放行列表遵循最小化原则。Trunk 口只放行互联需要的 VLAN不要把所有 VLAN 都放行。这样能降低广播流量和环路风险。第三统一 Trunk 口 PVID。互联的两台交换机 Trunk 口 PVID 建议保持一致一般就用默认 VLAN 1或者统一设置一个互联专用 VLAN。不要在一条链路上出现一端 PVID 是 1、另一端 PVID 是 10 的情况。第四管理面与业务面隔离。给交换机配置管理 IP 时尽量使用独立的管理 VLAN并通过 ACL 限制只有运维网段可以 SSH/Telnet 登录。示例中的 admin 账号密码应替换为符合安全策略的强密码。第五涉及生产网络变更时先做备份。批量备份配置确认成功后再在非业务窗口执行变更。前面给的 Python 脚本框架稍加修改就可以变成“批量备份工具”建议提前部署。第六合规与授权边界。所有交换机的配置实验和变更都应在自己拥有或获得明确授权的设备、模拟器或测试环境内进行。不要对未授权的网络设备进行扫描、密码猜测或配置篡改。企业网络中的地址绑定、IPSG、ACL 等安全策略应结合本单位的网络数据安全和隐私保护要求来实施。第七优先使用模拟器验证。eNSP、Packet Tracer、GNS3 都是很好的实验环境。真实项目碰到复杂拓扑先在模拟器里把配置和验证流程过一遍再上真机能省掉大量排障时间。10. 总结与下一步这篇文章围绕“交换机之间的通信带 VLAN 的情况”把几个关键链路串了一遍。同 VLAN 跨交换机通信的要点是 Trunk 链路和放行列表不同 VLAN 间互访的要点是三层转发可以用单臂路由或三层交换机 VLANIF厂商命令虽然风格不同但底层都是 802.1Q 标准本质逻辑一致。对于一个刚开始接触 VLAN 和交换机间通信的读者我建议先在 eNSP 里搭两台交换机配置 Access 口接 PC、Trunk 口互联完成同 VLAN 跨交换机互通测试再加入一台路由器或三层交换机把单臂路由和 VLANIF 两种 VLAN 间互访方式都跑通。下一步可以继续扩展到 DHCP 中继、VLAN 网关冗余、基于 VLAN 的 IPSG 组网以及基于 Python 的批量配置和备份。最容易踩的坑往往不在配置命令本身而是对 Trunk 链路 Tag 处理逻辑的理解。花时间在模拟器里抓一次包看一下 VLAN 标签怎么打、怎么剥离会比死记命令更容易解决实际问题。建议收藏备用下次遇到跨交换机 VLAN 不通时直接按“先端口模式、再放行列表、再 MAC 表、再路由表”的顺序排查。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →