ARTICLE DETAIL

资讯详情

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

二层交换机VLAN间通信:路由器多接口与单臂路由配置实践

二层交换机VLAN间通信:路由器多接口与单臂路由配置实践 二层交换机划分 VLAN 之后不同 VLAN 的设备默认是不通的。原因也很直接VLAN 隔离的是广播域交换机只在同一个 VLAN 内转发帧不会把数据从 VLAN 10 送到 VLAN 20。想让 VLAN 10 和 VLAN 20 互通就必须把流量交给三层设备最常见的选择就是路由器。用路由器实现 VLAN 间通信最符合标题的做法就是“路由器物理端口连接二层交换机”一种是用路由器的多个物理接口分别接交换机上不同 VLAN 的 access 口每个接口作为一个 VLAN 的网关另一种是路由器用一个物理接口接交换机的 trunk 口然后在物理接口下创建子接口通过 802.1Q 封装终结多个 VLAN也就是常说的单臂路由。这篇文章会从原理开始把实验拓扑、交换机配置、路由器配置、验证命令和抓包分析走完整。实验环境用华为 eNSP设备选 AR2220 路由器和 S5700 二层交换机。如果你是用 GNS3 学习原理完全一样命令换成 Cisco 风格即可。适合备考 HCIA/CCNA、做网络实验或者需要排查现网 VLAN 间通信问题的同学收藏。1. 路由器连接二层交换机实现 VLAN 间通信核心能力速览能力项说明项目类型网络互联实验 / 企业局域网 VLAN 间路由核心原理路由器作为 VLAN 网关完成跨网段三层转发二层交换机角色划分 VLAN、维护 MAC 地址表、在 VLAN 内转发二层帧路由器角色终结各 VLAN 网关地址查路由表做三层选路方案一路由器多个物理接口分别连接交换机 access 口一个接口对应一个 VLAN方案二路由器一个物理接口连接交换机 trunk 口子接口终结多个 VLAN单臂路由关键协议802.1Q VLAN Tag、ARP、ICMP、IP 路由实验环境华为 eNSPAR2220 S5700GNS3 方法类似适用读者HCIA/CCNA 备考者、网络运维、实验党再看一下二层交换机和路由器在 VLAN 间通信里的角色差异对比项二层交换机路由器转发依据MAC 地址表路由表是否隔离广播域是VLAN 天然隔离每个接口独立广播域能否 IP 选路不能能能否直接完成 VLAN 间通信不能可以作为网关完成2. 适用场景与使用边界路由器连接二层交换机实现 VLAN 间通信适合这几类场景。第一类是学习和实验环境。备考 HCIA 或 CCNA 的人需要理解 VLAN 间路由的报文转发过程模拟器里做一遍多物理口方案和单臂路由方案比直接背“VLANIF”命令更能理解网关、ARP、802.1Q 这些东西到底怎么工作。第二类是小规模网络。如果你的网络里只有二层交换机没有三层交换机但已经有一台路由器那么用路由器的物理接口直接给 VLAN 做网关是一个成本最低的互通方案。第三类是临时扩展。某个 VLAN 需要和另一个 VLAN 通信但三层交换机暂时没有空闲 VLANIF 或者不想改动核心配置临时用一台路由器接出来做网关也能应急。但这个方案有明显的边界需要注意。第一路由器的物理接口数量有限。一台家用级路由器通常只有几个 LAN 口企业级路由器接口多一些但一个接口对应一个 VLAN 的做法撑不起大量 VLAN 的场景。VLAN 数量一多接口就不够用了。第二单臂路由虽然只需要一个物理接口但所有 VLAN 的流量都挤在一条链路上。VLAN 10、VLAN 20 甚至更多 VLAN 互访的数据都要经过这条 trunk 链路带宽瓶颈非常明显。实验环境无所谓生产环境流量一大就会出问题。第三路由器 CPU 转发性能有限。路由器的主要职责是连接不同网络LAN 侧的高速二层转发本来就不是它的强项。如果 VLAN 间流量很大路由器 CPU 会持续升高延迟也会变大。第四安全管控能力弱于防火墙。如果只是让 VLAN 互通路由器配几条静态路由就行。但如果要做 VLAN 之间的访问控制比如财务 VLAN 只允许特定 IP 访问路由器 ACL 虽然能做但规则复杂之后维护成本很高不如直接上防火墙或三层交换机。还有一个合规提醒在模拟器上怎么敲命令都行但在现网设备上配置前一定要确认自己有操作授权走变更流程先备份配置。涉及公司内网拓扑、IP 规划的内容注意保密。3. 实验环境与前置知识3.1 实验环境选择本文以华为 eNSP 为例。eNSP 是华为官方的网络模拟器需要安装 VirtualBox 提供虚拟化支持。建议版本搭配eNSP 使用较新的 V100R003C00SPC100 或更新版本VirtualBox 使用 5.2.x 或兼容版本。如果你在安装或启动路由器时遇到“启动失败 40”或者蓝屏大概率是 VirtualBox 与系统、eNSP 之间的兼容问题后面有专门的排查表。GNS3 用户也可以照做。GNS3 里拖一个路由器、一个二层交换机配置思路相同只是命令风格不同。GNS3 的抓包更方便可以在链路任意位置直接用 Wireshark 抓 ARP 报文和 ICMP 报文。3.2 必须理解的概念概念说明VLAN把一个物理交换机划分成多个逻辑广播域广播域广播帧能到达的范围VLAN 可以隔离广播域网关主机访问其他网段的出口 IP配置在路由器接口上Access 口连接终端设备的接口只属于一个 VLAN发出的帧不带 TagTrunk 口交换机之间或交换机与路由器之间传递多个 VLAN 帧的链路帧带 802.1Q TagARP通过 IP 地址查询 MAC 地址的协议路由表路由器转发 IP 报文时查找的依据这里把一个关键点说透二层交换机只有 MAC 地址表没有路由表。当一个帧进入交换机的时候它只能根据目的 MAC 查找 MAC 地址表如果查不到就在同一个 VLAN 内泛洪。因为 VLAN 隔离了广播域交换机永远不可能把一个 VLAN 的帧转发到另一个 VLAN。跨 VLAN 通信必须由三层设备来完成路由器就是最典型的三层设备。4. 实验拓扑与 IP 规划为了把两种方案放在同一个实验里理解我用一台路由器和一台二层交换机搭一个基础拓扑。设备连接关系如下R1AR2220GigabitEthernet0/0/0 连接 SW1 的 GigabitEthernet0/0/1GigabitEthernet0/0/1 连接 SW1 的 GigabitEthernet0/0/2SW1S5700Ethernet0/0/1 连接 PC1属于 VLAN 10Ethernet0/0/2 连接 PC2属于 VLAN 10Ethernet0/0/3 连接 PC3属于 VLAN 20Ethernet0/0/4 连接 PC4属于 VLAN 20IP 规划如下设备IP 地址子网掩码网关VLANPC1192.168.10.2255.255.255.0192.168.10.110PC2192.168.10.3255.255.255.0192.168.10.110PC3192.168.20.2255.255.255.0192.168.20.120PC4192.168.20.3255.255.255.0192.168.20.120这里故意放了两台 PC 在 VLAN 10目的是先验证同 VLAN 二层互通再验证跨 VLAN 三层互通。如果同 VLAN 都不通问题大概率出在交换机接口配置或 PC 配置上不要急着去改路由器。5. 方案一路由器多物理接口连接二层交换机这个方案最符合“路由器物理端口连接二层交换机”的描述。路由器用两个物理接口分别作为 VLAN 10 和 VLAN 20 的网关交换机把连路由器的两个接口分别划入对应 VLAN。5.1 交换机配置在 eNSP 中双交换机 SW1 配置。system-view sysname SW1 # 创建 VLAN vlan batch 10 20 # 连接 PC 的接口 interface Ethernet0/0/1 port link-type access port default vlan 10 quit interface Ethernet0/0/2 port link-type access port default vlan 10 quit interface Ethernet0/0/3 port link-type access port default vlan 20 quit interface Ethernet0/0/4 port link-type access port default vlan 20 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注意看交换机连路由器的两个接口都是 access 口。G0/0/1 属于 VLAN 10G0/0/2 属于 VLAN 20。这样从路由器 G0/0/0 收到的帧交换机会打上 VLAN 10 的标签在 VLAN 10 内转发路由器 G0/0/1 收到的帧则在 VLAN 20 内转发。5.2 路由器配置AR2220 上的配置很简单核心就是给两个物理接口配置 IP 地址这两个 IP 就是对应 VLAN 的网关。system-view sysname R1 interface GigabitEthernet0/0/0 ip address 192.168.10.1 255.255.255.0 undo shutdown quit interface GigabitEthernet0/0/1 ip address 192.168.20.1 255.255.255.0 undo shutdown quit配置完成后路由器上会天然出现两条直连路由192.168.10.0/24 从 G0/0/0 出去192.168.20.0/24 从 G0/0/1 出去5.3 验证先在 PC1 上 ping 同一个 VLAN 的 PC2ping 192.168.10.3预期结果是通。这一步验证二层链路没问题。再 ping 跨 VLAN 的 PC3ping 192.168.20.2预期结果也是通。如果这一步通了说明路由器已经成功承担了两个 VLAN 的网关角色。可以在路由器上检查路由表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 192.168.20.0/24 Direct 0 0 D 192.168.20.1 GigabitEthernet0/0/1再看路由器的 ARP 表display arp可以看到 PC1、PC2、PC3、PC4 的 IP 与 MAC 对应关系。这个步骤能直观验证 ARP 解析过程。6. 方案二同一个物理口加 802.1Q 子接口实现单臂路由方案一虽然直观但很费物理接口。如果路由器只有一个空余接口又要给多个 VLAN 做网关就需要单臂路由。单臂路由的拓扑变化不大路由器只用 G0/0/0 连接交换机的 G0/0/1交换机这个上联口改成 trunk 口。VLAN 10 和 VLAN 20 的网关都配置在路由器 G0/0/0 的子接口上。6.1 交换机配置交换机配置和方案一的区别主要在连接路由器的接口上。system-view sysname SW1 vlan batch 10 20 interface Ethernet0/0/1 port link-type access port default vlan 10 quit interface Ethernet0/0/2 port link-type access port default vlan 10 quit interface Ethernet0/0/3 port link-type access port default vlan 20 quit interface Ethernet0/0/4 port link-type access port default vlan 20 quit # 连接路由器的接口改成 trunk interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 quit注意交换机连路由器的接口从 access 改成了 trunk。这意味着从路由器发送到交换机的帧会带有 802.1Q 标签交换机根据标签中的 VLAN ID 在对应的 VLAN 内转发。6.2 路由器子接口配置路由器上不再直接给物理接口配 IP而是在物理接口 G0/0/0 下创建两个子接口每个子接口对应一个 VLAN。system-view sysname R1 interface GigabitEthernet0/0/0 undo shutdown quit 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 的 802.1Q 标签。从交换机过来的带 VLAN 10 标签的帧进入 G0/0/0.10 后会被剥掉标签然后做三层转发。第二arp broadcast enable是华为子接口处理 ARP 广播的关键。ARP 请求是广播报文而路由器子接口默认不处理广播报文。如果不开启这个命令PC 发送到网关的 ARP 请求会被路由器丢弃网关 MAC 解析不出来VLAN 间通信就会失败。第三物理接口 G0/0/0 本身不配 IP因为 IP 都配置在子接口上了。物理接口只要保证 up 即可。6.3 验证PC1 ping PC3ping 192.168.20.2预期是通。在路由器上查看接口状态display ip interface brief可以看到 G0/0/0.10 和 G0/0/0.20 都是 up 状态并且配置了正确的 IP。再查看路由表display ip routing-table同样能看到 192.168.10.0/24 和 192.168.20.0/24 两条直连路由只是出接口变成了子接口。6.4 两种方案对比对比项多物理接口方案单臂路由子接口方案路由器物理接口需求多个物理接口一个物理接口交换机上联口类型accesstrunk帧是否带 802.1Q Tag不带带带宽瓶颈每个 VLAN 独占一个物理口所有 VLAN 共享一条链路扩展性受限于路由器物理口数量理论上可以继续创建更多子接口适合场景小型网络、实验教学接口不足或临时扩展7. 数据转发过程与抓包分析配置做完只是第一步理解报文怎么从 PC1 到 PC3 才是重点。以多物理接口方案为例完整过程如下。PC1 要访问 PC3发现目标 IP 192.168.20.2 和自己不在同一个网段于是把报文交给网关 192.168.10.1。此时 PC1 并不知道网关的 MAC 地址所以先发一个 ARP 广播请求询问“谁是 192.168.10.1”。交换机收到这个广播帧后在 VLAN 10 内泛洪。因为 VLAN 隔离这个广播不会进入 VLAN 20。路由器 G0/0/0 收到 ARP 请求回复自己的 MAC 地址给 PC1。交换机把 ARP 应答转发给 PC1。PC1 拿到网关 MAC 后构造 IP 报文源 MAC 是 PC1 的 MAC目的 MAC 是路由器 G0/0/0 的 MAC源 IP 是 192.168.10.2目的 IP 是 192.168.20.2然后发出。交换机根据目的 MAC 查询 MAC 地址表找到路由器连接的接口把帧从 G0/0/1 转发给路由器。路由器 G0/0/0 收到帧后剥掉二层帧头查看目的 IP 192.168.20.2。查询路由表发现目标网段 192.168.20.0/24 从 G0/0/1 出去。于是路由器在 G0/0/1 这个接口上发送 ARP 请求查询 PC3 的 MAC 地址。PC3 响应 ARP 后路由器封装新的帧源 MAC 是 G0/0/1 的 MAC目的 MAC 是 PC3 的 MAC然后从 G0/0/1 发出。交换机收到后根据 MAC 地址表把帧转发给 PC3。PC3 收到报文后按相同路径反向回复 PC1。如果是单臂路由方案区别在于路由器 G0/0/0.10 收到 ARP 请求后通过arp broadcast enable处理 VLAN 10 的广播从 G0/0/0.10 发出的帧会打上 VLAN 10 标签从 G0/0/0.20 发出的帧会打上 VLAN 20 标签然后统一通过物理口 G0/0/0 发给交换机交换机通过 trunk 口识别标签并转发。抓包验证时可以在 eNSP 中选择链路接口右键点击“开始抓包”。几个推荐观察点第一抓 PC1 到交换机的链路能看到 ARP 请求、ARP 应答和 ICMP 报文。这里能看到 PC1 发出的 ARP 请求是广播帧目的 MAC 是全 F。第二抓单臂路由方案里路由器与交换机之间的 trunk 链路能看到 802.1Q 标签。帧头里会明确显示 VLAN ID 是 10 还是 20。第三抓 PC3 到交换机的链路能看到 ICMP echo request 到达 PC3echo reply 返回。实验成功判断标准有三条PC1 可以 ping 通 PC3且时延稳定。路由器路由表里有两条直连路由。交换机上display vlan能看到 VLAN 10 和 VLAN 20 的接口成员。8. 资源占用与性能边界网络模拟器实验不涉及显存、CPU 推理这类 AI 项目的资源指标但网络方案本身也有性能边界需要讲清楚。路由器做 VLAN 间路由本质上是软件转发。企业级路由器虽然有硬件加速但相比三层交换机的 ASIC 硬件转发路由器在三层转发上的性能上限要低很多。如果有大量跨 VLAN 流量路由器会成为整个网络的瓶颈。单臂路由方案还要多考虑一个链路瓶颈。所有 VLAN 的互访流量都走一条物理链路带宽是共享的。假设链路是千兆VLAN 10 和 VLAN 20 之间的流量可能就把带宽占满了其他 VLAN 的互访就会变慢。所以生产环境的最佳实践是三层交换机做 VLANIF 网关路由器只负责连接外部网络。三层交换机在硬件层面完成 VLAN 间转发性能远超路由器。本文的方案更适合实验、小型网络和应急场景。9. eNSP 常见问题与排查方法实验过程中最容易踩的坑整理成一张排查表。问题现象可能原因排查方式解决方案eNSP 路由器启动失败 40VirtualBox 版本不兼容或虚拟化未开启检查 VirtualBox 版本确认 BIOS 虚拟化开启安装兼容版本 VirtualBox开启 VT-x/AMD-V华为 eNSP 开启路由器蓝屏VirtualBox 与 Windows 驱动冲突查看蓝屏代码确认 VirtualBox 版本卸载后重装兼容版本以管理员身份运行PC 无法 ping 通网关PC 网关配置错误或路由器接口 down在 PC 上查看网关路由器查看接口状态配置正确网关undo shutdown 开启接口同 VLAN 能通跨 VLAN 不通路由器接口没配 IP 或交换机上联口 VLAN 划错display ip interface brief、display vlan修正接口 IP 和交换机接口 VLAN 划分单臂路由不通子接口 dot1q termination vid 与实际 VLAN 不一致display dot1q termination vid检查子接口 VLAN ID 和交换机 VLAN 是否一致单臂路由 ARP 不通子接口未开启 arp broadcast enable抓包看 ARP 请求是否到达路由器配置 arp broadcast enableping 丢包严重路由器 CPU 过高或链路拥塞查看路由器 CPU 占用率减少广播流量使用三层交换机替代还有一个容易忽略的问题PC 配置 IP 后如果 ping 不通先 ping 网关再 ping 对端主机。这样可以快速缩小问题范围。网关都不通问题在接入链路或路由器网关通而对端不通问题在路由器路由或对端 VLAN 配置。10. 最佳实践与工程建议动手配置之前先画一张清晰的拓扑图把所有接口编号、IP 地址、VLAN ID 写清楚。很多实验做不通不是命令敲错了而是接口接错了。模拟器环境里建议先保存一份空白拓扑快照。配置出了问题直接回滚到初始状态比一条一条敲 undo 快得多。真实网络环境中优先选三层交换机加 VLANIF。如果只有路由器能用多物理接口方案就用多物理接口方案单臂路由是接口不足时的备选不要在大流量场景硬上单臂。VLAN 间通信的安全边界要设计好。不是所有 VLAN 都必须互通。默认情况下建议只有必要的 VLAN 之间开放互访其他 VLAN 保持隔离。如果路由器上有 ACL可以用 ACL 做单向访问控制比如只允许办公网访问服务器网段的特定端口。配置变更要留痕。现网设备操作前备份配置文件操作后确认业务正常。模拟器里可以随便试现网一条命令敲错可能影响整个网段。11. 总结这篇文章从 VLAN 间通信的原理出发用华为 eNSP 完整跑了两套方案路由器多物理接口连接二层交换机和路由器单物理口加子接口的单臂路由。最容易踩的三个坑第一个是给 PC 配了 IP 忘记配网关跨网段永远不通第二个是单臂路由方案漏掉arp broadcast enable子接口收不到 ARP 广播网关解析不出来第三个是交换机上联口类型搞错access 和 trunk 用混帧的 802.1Q 标签处理就会乱。建议先动手把多物理接口方案跑通再用单臂路由方案对比理解 802.1Q 标签的作用。实验环境里把抓包打开多看几遍 ARP 和 ICMP 报文比单纯背配置命令有用得多。后面如果想继续深入可以尝试在路由器上配置 ACL控制指定 VLAN 之间的访问权限或者把方案换成三层交换机的 VLANIF对比一下三种方式的转发性能和配置复杂度。
返回列表