尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

VLAN间通信配置详解:单臂路由实现跨VLAN互访(eNSP实验)

VLAN间通信配置详解:单臂路由实现跨VLAN互访(eNSP实验) 学习网络的人会遇到一个很典型的矛盾交换机划分 VLAN 是为了隔离广播域但业务上又要求不同 VLAN 之间可以互访。VLAN 间的通信配置解决的就是从二层隔离走向三层互通的问题。下面用一个最经典的 eNSP 实验把单臂路由方式配置 VLAN 间通信的完整过程拆开讲清楚先说原理再给拓扑再上交换机配置、路由器配置最后验证抓包并补充常见故障排查和生产环境选型建议。读完可以直接照做也可以把它作为理解三层交换的基础。这个实验只需要华为 eNSP 自带的交换机、路由器和 PC不需要额外硬件。实验完成后你能看到 PC1 通过路由器子接口转发成功访问 PC2并在抓包里清楚看到 802.1Q Tag 的变化。1. 先明确 VLAN 隔离后为什么还要通信1.1 VLAN 的隔离机制VLAN 的核心作用是隔离广播域。同一个 VLAN 内的设备属于同一个二层广播域可以互相通信不同 VLAN 的设备处于不同二层广播域默认情况下二层数据帧不会跨越 VLAN 边界。这个设计带来的直接结果是PC1 在 VLAN 10PC2 在 VLAN 20即使它们连接在同一台交换机上PC1 发出广播帧也只会出现在 VLAN 10 的接口上PC2 收不到。所以把 PC1 和 PC2 放在不同 VLAN 后直接用 IP 地址去 ping 对方一定是失败的。很多人刚学习时会有疑问既然划分 VLAN 就是为了隔离为什么还要让它们通信原因是 VLAN 隔离解决的是广播域过大、安全性不足和故障影响范围过大的问题而业务上往往又需要跨部门、跨区域的互访。比如财务部门属于 VLAN 10办公部门属于 VLAN 20但办公电脑可能需要访问财务系统这时候就必须在二层隔离的基础上提供三层转发能力。1.2 VLAN 间通信的两种主流实现跨 VLAN 通信实际是“三层通信”。要让 VLAN 10 的报文到达 VLAN 20需要有一个三层设备作为两个网段的网关把报文从一个 VLAN 所在的网段路由到另一个网段。常见方案有两种。第一种是单臂路由也叫 Router-on-a-Stick。路由器通过一个物理接口连接交换机物理接口被拆分成多个子接口每个子接口封装不同的 802.1Q Tag对应一个 VLAN 的网关。交换机连接路由器的接口配置为 Trunk让带 VLAN Tag 的帧可以到达路由器路由器再根据 Tag 交给对应子接口处理。第二种是三层交换机 SVI。在交换机上为每个 VLAN 创建一个 VLANIF 三层接口并配置 IP 地址作为网关直接在三层交换机内部完成路由。这种方式性能更高是目前企业网最常用的做法。两种方案的核心思路一样不同 VLAN 的设备必须先把报文发给网关网关根据目的 IP 路由后再转发到另一个 VLAN。区别只是“网关这个角色”由谁承担。1.3 本实验采用哪种方案本实验采用单臂路由方式。它虽然是较早期、性能有瓶颈的方案却是理解 VLAN 间通信原理的最佳入门实验。通过子接口的配置你能直观理解 Tag、网关、路由转发和 ARP 这几个概念如何配合之后再学三层交换机会更容易。实验目标很明确在 eNSP 中搭一台交换机、一台路由器、两台 PC让 VLAN 10 的 PC1 能 ping 通 VLAN 20 的 PC2。2. 实验拓扑与地址规划2.1 实验环境准备本实验使用华为 eNSP 模拟器。建议使用以下设备组合设备角色eNSP 设备型号数量说明交换机S5700 或 S37001负责 VLAN 划分和 Trunk 转发路由器AR2220 或 AR32601承担 VLAN 间路由PCPC2模拟业务终端eNSP 安装完成后在拓扑区拖入设备用连线工具把 PC 连接到交换机把交换机连接到路由器然后启动所有设备。设备启动需要等待一段时间最好等所有设备状态都变为绿色稳定灯再开始配置。如果使用真实设备建议把配置命令先模拟验证再按实际版本调整。不同软件版本对子接口命令的支持略有差异。2.2 拓扑结构和接口规划实验拓扑如下PC1 连接交换机的 GE0/0/1属于 VLAN 10。PC2 连接交换机的 GE0/0/2属于 VLAN 20。交换机的 GE0/0/3 连接路由器的 GE0/0/0接口类型为 Trunk放行 VLAN 10 和 VLAN 20。路由器 GE0/0/0 上创建两个子接口GE0/0/0.10 和 GE0/0/0.20。地址规划表如下设备接口所属 VLANIP 地址网关PC1网卡VLAN 10192.168.10.2/24192.168.10.1PC2网卡VLAN 20192.168.20.2/24192.168.20.1AR G0/0/0.10子接口终结 VLAN 10192.168.10.1/24无AR G0/0/0.20子接口终结 VLAN 20192.168.20.1/24无这里把 VLAN 编号和 IP 网段对应起来便于维护。实际项目中也可以 Vlan 100、Vlan 200网关地址由网络规划决定只要保证同一个 VLAN 内的 PC 网关地址与对应子接口地址一致即可。2.3 通信流程预览PC1 访问 PC2 时完整流程如下PC1 判断目的 IP 192.168.20.2 不在本网段会把报文发给网关 192.168.10.1。PC1 发送 ARP 请求寻找网关 MAC。交换机广播该 ARP 请求到 VLAN 10 内并且通过 Trunk 口把它发给路由器。路由器子接口 GE0/0/0.10 收到带 VLAN 10 Tag 的 ARP 请求响应自己的 MACPC1 学到网关 MAC。PC1 把 ICMP 报文封装成以太网帧目的 MAC 为路由器子接口 MAC目的 IP 为 PC2。路由器收到后根据报文中的 VLAN Tag 交给子接口 .10再根据目的 IP 查路由表发现 192.168.20.0/24 网段对应子接口 .20。路由器通过子接口 .20 发送 ARP 请求寻找 PC2 的 MAC。这个 ARP 请求会打上 VLAN 20 的 Tag交换机收到后转发给 VLAN 20 内的 PC2。PC2 应答后路由器重新封装报文发送给 PC2。PC1 ping 通 PC2。整个流程的关键就是路由器必须能识别来自不同 VLAN 的帧所以交换机连接路由器的口必须是 Trunk路由器也必须在子接口上配置 802.1Q 封装。3. 交换机侧配置VLAN 创建、接口划分与 Trunk 放行3.1 创建业务 VLAN进入交换机命令行界面后第一步是创建实验需要的 VLAN 10 和 VLAN 20。system-view sysname SW1 vlan batch 10 20 quit关键点vlan batch可以一次创建多个 VLAN比逐个vlan 10vlan 20更高效。创建完成后可以用display vlan查看。如果这里不创建 VLAN后面把接口划分到 VLAN 10 时会报错。华为设备上把不存在的 VLAN 配置到 Access 口时会提示错误所以先创建再划分。3.2 配置 Access 接口PC 连接交换机的接口是终端口只属于一个 VLAN所以使用 Access 类型。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为什么这里要用 Access因为 PC 发送的是普通以太网帧不带 VLAN Tag。Access 口的职责是接收不带 Tag 的帧后打上port default vlan指定的 Tag发送给 PC 时再去掉 Tag。要注意华为交换机接口默认链路类型是 Hybrid不是天然 Access。配置时必须显式写port link-type access否则后续port default vlan的行为会和你预期不一致。3.3 配置连接路由器的 Trunk 接口交换机连接路由器的接口要承载 VLAN 10 和 VLAN 20 两个 VLAN 的帧所以必须设置为 Trunk并放行这两个 VLAN。interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 quit关键点Trunk 口不会默认放行所有 VLAN华为设备默认只允许 VLAN 1 通过。如果只设置 Trunk 类型而不写allow-pass vlan 10 20PC1 的 ARP 请求虽然到了路由器也可能因为帧在交换机和路由器之间的链路上被丢弃而失败。这里注意端口编号可能因设备型号不同而变化。S5700 常见 GE0/0/3某些模拟器版本可能是 Ethernet0/0/3配置前先用display interface brief确认实际编号。3.4 交换机侧配置验证配置完成后使用以下命令验证。display vlan brief输出中应该能看到VID Type Status Description 10 common up VLAN 0010 20 common up VLAN 0020再用display port vlan查看接口与 VLAN 的对应关系Port Link Type PVID VLAN GigabitEthernet0/0/1 access 10 - GigabitEthernet0/0/2 access 20 - GigabitEthernet0/0/3 trunk 1 10,20这里 GE0/0/3 的 PVID 还是默认值 1不影响本次实验。Trunk 口收到不带 Tag 的帧时会打上 PVID 对应的 Tag 再处理而实际从路由器侧发来的帧都带 Tag所以默认 PVID 在本场景下不需要修改。4. 路由器侧配置子接口与 802.1Q 终结4.1 为什么需要子接口路由器物理接口 GE0/0/0 连接交换机 GE0/0/3这台路由器要同时作为 VLAN 10 和 VLAN 20 的网关。如果只在物理接口上配置一个 IP就只能作为其中一个网段的网关无法区分两个 VLAN 的流量。所以要把物理接口逻辑上拆分成多个子接口每个子接口只处理带特定 VLAN Tag 的帧。子接口收到帧后根据帧中的 VLAN Tag 判断该帧属于哪个 VLAN然后把帧交给对应子接口处理。这个动作叫“802.1Q 终结”也就是去掉 Tag、还原原始报文再进行路由。4.2 配置子接口命令在路由器上执行以下配置system-view sysname AR1 interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable quit interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable quit逐条说明dot1q termination vid 10声明子接口只处理 VLAN 10 的带 Tag 帧。如果没有这句话子接口收到带 Tag 的帧后不会识别 VLAN不会执行终结逻辑。ip address 192.168.10.1 255.255.255.0为 VLAN 10 的网关配置 IP 地址PC1 的网关配置就指向这里。arp broadcast enable开启子接口的 ARP 广播处理能力。在部分模拟器版本中如果子接口不开启该功能PC 发来的 ARP 广播请求不会得到响应PC 就学不到网关 MAC后续报文无处可发。有的设备版本默认开启arp broadcast enable即使不写这条也能工作。为了稳妥建议在所有子接口上都显式开启保证实验行为一致。如果命令输入时报错先确认当前 AR 路由器型号是否支持再检查路由器和交换机之间物理口是否已经启动。物理接口 GE0/0/0 本身不要配置 IP 地址。子接口配置后物理接口会自动与子接口联动但物理口如果被 shutdown所有子接口也会 UP 不起来。4.3 检查子接口配置是否生效配置完成后查看子接口状态。display ip interface brief正常输出应包含两个子接口的 IP 地址和物理状态*down: administratively down !down: FIB overloaded Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 unassigned up up GigabitEthernet0/0/0.10 192.168.10.1/24 up up GigabitEthernet0/0/0.20 192.168.20.1/24 up up如果子接口 Protocol 状态是 down优先检查两个方向交换机 GE0/0/3 是否已经放行对应 VLAN以及子接口是否正确配置了dot1q termination vid。不要急着重新创建接口先看配置是否生效。5. 验证 VLAN 间通信5.1 配置 PC 地址和网关在 eNSP 中双击 PC1在 IP 配置页面填写IP 地址192.168.10.2 子网掩码255.255.255.0 网关192.168.10.1PC2 填写IP 地址192.168.20.2 子网掩码255.255.255.0 网关192.168.20.1网关配置是跨 VLAN 通信的前提。PC 判断目的 IP 与自己不在同一网段时ARP 请求会发给网关而不是直接发给目的主机。如果网关填错比如 PC2 网关填成 192.168.10.1整个跨网段通信都会中断。5.2 用 ping 验证通信结果在 PC1 的命令行执行ping 192.168.20.2第一次 ping 可能因为 ARP 学习存在丢包再次 ping 应该全部成功。Ping 192.168.20.2: 32 data bytes, Press Ctrl_C to break Request time out Reply from 192.168.20.2: bytes32 time1ms TTL254 Reply from 192.168.20.2: bytes32 time1ms TTL254TTL254 表示经过了路由器转发。如果 TTL 是 128 或 64可能说明 PC2 的网关或路由链路有问题需要进一步查。反向从 PC2 ping PC1 也应该通。这说明 VLAN 10 和 VLAN 20 之间已经实现了双向路由。5.3 抓包观察 802.1Q Tag为了深入验证可以在交换机的 GE0/0/3 接口上开启 eNSP 的抓包功能。打开抓包后再从 PC1 ping PC2观察帧结构。在 Trunk 口上PC1 发出的 ICMP 请求帧会携带 802.1Q Tag。在 Wireshark 中可以看到Ethernet II 层的 Type 字段是 0x8100表示后面有 VLAN Tag。VLAN 字段中的 ID 是 10。目的 IP 是 192.168.20.2。PC2 返回的 ICMP 应答帧中VLAN ID 变成 20。这说明同一个物理接口上的流量被不同 Tag 区分路由器正是依赖这个 Tag 判断报文应该交给哪个子接口处理。如果在 GE0/0/3 上抓到的是不带 Tag 的帧说明交换机侧可能把接口配成了 Access单臂路由不会生效。5.4 在路由器上查看路由表和 ARP 表路由器上执行display ip routing-table输出中应该能看到两条直连路由Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.10.0/24 Direct 0 0 D 192.168.10.1 GigabitEthernet0/0/0.10 192.168.20.0/24 Direct 0 0 D 192.168.20.1 GigabitEthernet0/0/0.20这两条直连路由说明路由器已经知道自己属于两个网段的网关。再查看 ARP 表display arp正常能看到 PC1 和 PC2 的 IP 与 MAC 对应关系并且记录在对应子接口下。看到这些记录说明 ARP 学习过程完整转发链路已经建立。6. 扩展实验两台交换机通过 Trunk 互联6.1 多交换机场景为什么必须用 Trunk单交换机能完成 VLAN 划分但网络规模变大时会需要多台交换机。比如 PC1 接在 SW1 上PC2 接在 SW2 上SW1 和 SW2 之间的链路必须能同时传递 VLAN 10 和 VLAN 20 的帧这时这条链路必须配置为 Trunk。Access 口只属于一个 VLAN无法承载多 VLAN 流量。Trunk 口的作用是让多 VLAN 的 Tag 帧在同一条物理链路上传输并根据帧中的 Tag 来决定转发目标。6.2 双交换机配置步骤在 SW2 上也执行类似创建 VLAN 和划分 Access 口的操作system-view sysname SW2 vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 20 quitSW1 和 SW2 之间的互联口配置为 Trunkinterface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit两台交换机互联口都要放行对应 VLAN。只在一端配置是不行的流量到达另一端时如果 VLAN 不被允许一样会被丢弃。6.3 Trunk 的 PVID 是什么为什么不要随意改PVIDPort-based VLAN ID是 Trunk 接口收到“无 Tag 帧”时给该帧打上的默认 VLAN Tag。华为交换机 Trunk 口默认 PVID 是 1也就是 Trunk 口收到无 Tag 帧时会按 VLAN 1 处理。修改 PVID 的典型命令是interface GigabitEthernet0/0/24 port trunk pvid vlan 10这个命令在不常配置 PVID 的人眼里很容易造成混乱。假设 SW1 与 SW2 互联口上 PVID 被改成 10而 SW2 那边 PVID 还是 1一台不带 Tag 的设备接入这个口时SW1 会给帧打上 VLAN 10 的 TagSW2 收到后如果 VLAN 10 没有对应业务就会丢弃。在本实验场景中不建议随意修改 Trunk 口 PVID。PVID 主要面向“同一链路上存在无 Tag 流量”的场景而交换机互联口上传输的通常都是带 Tag 的标准帧保持默认值即可。如果必须修改要确认链路两端的 PVID 和允许通过的 VLAN 列表完全一致。7. 常见问题与排查链路7.1 从底层到上层排查VLAN 间通信失败的排查顺序应该是物理层 - 二层 - 三层。不要一上来就改 IP 地址或重新创建子接口容易把配置越改越乱。推荐链路用display interface brief确认交换机、路由器的接口都处于 UP 状态。在交换机上用display vlan brief确认 VLAN 存在用display port vlan确认 PC 所在接口已经划分到正确 VLAN。在 PC 上先 ping 同 VLAN 内主机。如果同 VLAN 不通问题很可能在交换机侧。如果同 VLAN 通、跨 VLAN 不通问题才可能出在路由器或 Trunk 链路上。在 PC 上 ping 网关地址。如果网关不通问题集中在路由器子接口、802.1Q 终结或交换机 Trunk 放行。能 ping 通网关但 ping 不通对端 PC问题集中在路由表、目的网段子接口状态或对端 PC 网关配置。最后看路由器的路由表和 ARP 表确认三层转发条件是否满足。7.2 典型故障现象与处理故障现象常见原因检查命令处理建议PC ping 不通网关子接口没有配置 dot1q termination vid或 IP 配置错误display current-configuration interface GigabitEthernet0/0/0补全子接口配置删除物理口 IPPC ping 不通对端 PC但能 ping 通网关路由器缺少路由或对端子接口 DOWNdisplay ip routing-table确认两个子接口都 UP检查直连路由同 VLAN 内通跨 VLAN 不通交换机 Trunk 口未放行对应 VLANdisplay port vlan执行 port trunk allow-pass vlan 10 20子接口状态 DOWN物理接口被 shutdown或接口编号错误display interface brief执行 undo shutdown确认物理口编号ARP 无响应网关 MAC 学到不到子接口未开启 arp broadcast enabledisplay arp在子接口下执行 arp broadcast enable一侧能 ping 通对侧反向不通对端 PC 网关配置错误检查 PC 网关和子接口 IP修正 PC 网关地址7.3 常用排错命令清单命令查看内容使用位置display vlan briefVLAN 和接口对应关系交换机display port vlan接口类型、PVID、放行 VLAN交换机display interface brief接口物理状态和协议状态交换机、路由器display current-configuration interface GigabitEthernet0/0/0子接口完整配置路由器display ip interface brief三层接口 IP 地址和状态路由器display ip routing-table路由表路由器display arpARP 表项路由器把这张表打印出来或保存下来排错时会非常方便。8. 从实验到生产单臂路由的边界与最佳实践8.1 单臂路由的适用场景单臂路由适合三种场景学习 VLAN 间通信原理、实验室小规模验证、临时搭建跨 VLAN 转发环境。它有两个明显短板。第一是可用带宽受限所有 VLAN 间流量都经过同一个物理接口不同 VLAN 的流量会竞争同一份物理带宽。第二是路由器 CPU 要处理大量 VLAN Tag 终结和路由转发VLAN 数量多或流量大时容易成为瓶颈。生产环境如果 VLAN 间流量不大、设备数量少使用单臂路由仍可接受。但企业网络通常更推荐三层交换机在交换机内部完成路由转发性能更高架构也更简洁。8.2 生产环境更推荐三层交换三层交换机配置 VLAN 间通信时思路和单臂路由一致只是实现方式不同。在三层交换机上创建 VLANIF 接口system-view vlan batch 10 20 interface Vlanif 10 ip address 192.168.10.1 255.255.255.0 quit interface Vlanif 20 ip address 192.168.20.1 255.255.255.0 quitPC 的网关不变仍然指向 192.168.10.1 和 192.168.20.1但网关角色由三层交换机承担。这种方式省去路由器减少单点故障和链路瓶颈。三层交换机方案里的关键点同样是PC 所在接口划分到对应 VLANVLANIF 接口 IP 与 PC 网关一致交换机开启三层转发能力。8.3 实验记录与发布前检查清单实际项目里做 VLAN 间通信配置建议在动手前和收尾后都走一遍检查清单。拓扑图已更新接口编号、VLAN、IP、网关全部明确。PC 接口划分到正确 VLAN接口类型为 Access。交换机之间或交换机与路由器之间链路使用 Trunk并只放行业务需要的 VLAN。路由器物理接口没有配置业务 IP子接口编号和 VLAN ID 对应清晰。子接口配置了 dot1q termination vidIP 地址与 PC 网关一致。需要时开启 arp broadcast enable。配置完成后使用 ping 做正反向验证并在关键 Trunk 口抓包确认 Tag 正确。生产环境关闭不需要的 VLAN 放行避免广播域被无意义扩大。保存配置交换机执行save路由器执行save重启后配置不丢失。如果涉及跨网段访问控制在网关设备上补充 ACL 或其他安全策略。单臂路由实验做完后推荐再去配置一遍三层交换机 VLANIF 的版本对比两种方案的命令和转发逻辑。能把这两种方式都独立跑通VLAN 间通信这个知识点才算真正掌握。遇到问题时按第 7 节的链路一步步排查大多数故障都能定位到具体的接口配置或路由表项上。
返回列表