ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

三层交换机VLAN间通信:静态路由配置与排障指南

三层交换机VLAN间通信:静态路由配置与排障指南 前几天在一个网络群里看到有人问公司两台交换机一个 VLAN 10 给办公区一个 VLAN 20 给财务部三层交换机也买了静态路由也配了但两边就是不通。下面跟了一堆回答有人让查网关有人让看 Trunk有人直接说换动态路由。其实这个场景特别典型它看起来是一个“配静态路由”的问题但真正的瓶颈往往在路由之前——VLAN、接口、网关、回程任何一层断了静态路由都救不回来。这也是我想写这篇文章的原因。很多人把“配置静态路由实现交换机 VLAN 间通信”理解成一条命令的事但实际上静态路由在 VLAN 间通信里的角色更像是一个“最后落地的转发决策”。你要先理解 VLAN 为什么隔离、三层转发怎么发生、流量经过哪些设备然后静态路由的配置才有意义。1. 先搞清楚 VLAN 间通信到底卡在哪一层1.1 VLAN 切开的不是网线而是广播域VLANVirtual Local Area Network本身解决的是二层广播域隔离问题。默认情况下一台交换机上所有端口都在同一个广播域里广播报文会扩散到每个端口规模大了会浪费带宽、影响安全。划了 VLAN 之后不同 VLAN 的端口之间在二层是隔离的——ARP 请求不会跨 VLAN 广播二层帧也不会直接转发过去。这个设计有一个直接后果同一台交换机上VLAN 10 的电脑和 VLAN 20 的电脑各自插着网线但两边默认就是 ping 不通的。很多人第一次遇到这个问题会以为是网线松了、交换机坏了、电脑防火墙开了其实都不是只是二层广播域被切开了。要想让两边通信必须有“三层设备”参与转发也就是要有路由能力。1.2 同设备互通和跨设备互通是两种难度完全不同的任务VLAN 间通信有几种常见思路方案适用场景核心机制主要短板二层交换机 路由器单臂路由少量 VLAN、早期组网路由器子接口终结多个 VLAN 的网关流量汇聚到一条链路带宽受限单台三层交换机 VLANIFVLAN 都在同一台三层设备上交换机内置三层转发引擎跨设备时依然需要上层路由多台三层交换机 静态路由多设备、拓扑相对稳定每台设备显式配置下一跳拓扑变化需要人工维护从这张表能看出来真正需要“静态路由”的通常是最后一个场景。如果所有 VLAN 的网关都落在同一台三层交换机上VLANIF 会生成直连路由设备内部的流量直接转发不需要额外配静态路由。1.3 三层转发是前提静态路由解决的是“下一跳该给谁”不管是哪种方案VLAN 间通信的本质都是三层转发。一台电脑要访问另一个 VLAN 的服务器它先把数据包发给自己的网关网关根据目的地址查路由表决定把包交给哪个下一跳最后到达目标 VLAN 的网关再通过二层转发送到具体主机。这里的关键是静态路由解决的就是“下一跳该给谁”这一步。它不是让路由表凭空生成一条路径而是由你告诉设备去某个目标网段把包交给某个 IP。如果前面网关地址错了、VLANIF 没起来、Trunk 没放行静态路由配得再对流量也走不到该走的地方。2. 为什么说静态路由的价值不是“让 VLAN 互通”而是“让路由可控”2.1 VLANIF 自带的直连路由能覆盖大部分同设备场景在华为 VRP 系统里创建 VLANIF 接口并配置 IP 地址后设备会自动生成对应的直连路由。比如配置了 interface Vlanif 10 的 IP 是 192.168.10.254/24那么路由表里会出现 192.168.10.0/24 的直连路由下一跳就是本机。同设备内的 VLAN 10 和 VLAN 20 通信时只要两边都有 VLANIF且对应物理端口 UP设备内部就能直接转发。这一步不需要人工写任何静态路由。很多教程一上来就让配静态路由反而容易让人误解以为是没配静态路由才导致 VLAN 不通。实际上VLAN 10 和 VLAN 20 都在同一台三层交换机上通了是三层交换机的本分不通要先查 VLANIF、物理端口和 Trunk。2.2 流量一旦跨设备逐跳转发就需要显式路径静态路由真正发力的场景是跨设备。假设公司有两栋楼每栋楼各有一台三层交换机办公楼里的 VLAN 10 要访问机房楼的 VLAN 30。这时候数据包要经过两台三层设备办公楼交换机会把包转发到机房楼交换机的互联地址机房楼交换机再转给 VLAN 30 的网关。问题来了办公楼交换机默认只知道自己的直连网段它不知道 192.168.30.0/24 在哪里。你必须给这台交换机写一条静态路由告诉它“去 192.168.30.0/24下一跳是互联接口的 192.168.100.2”。否则它查路由表发现没有匹配项直接就把包丢弃。这才是“配置静态路由实现 VLAN 间通信”的核心场景。2.3 静态路由比动态路由更省资源但需要你清楚整个拓扑和 OSPF、RIP 这类动态路由协议相比静态路由不交换路由信息不占额外带宽也不依赖协议状态。只要拓扑是稳定的、路径是明确的静态路由往往是中小型网络里最简单、最可控的选择。它的问题是不会自动感知链路故障并切换路径。如果两台设备之间的链路断了静态路由仍然停留在路由表里包发过去却没人接收直到你人工去改。所以在实际工作里静态路由适合“拓扑关系清晰、路径变化不频繁、设备数量不多”的网络。一旦出现多条冗余链路、需要快速故障切换就该考虑动态路由协议了。这个边界后面会展开讲。3. 配置前先把网络模型画出来再动手写命令3.1 一个典型的中小企业组网模型我建议所有初学者都先做一件事把拓扑画出来。画拓扑不是画得好看而是要把三层关系画清楚——哪些设备是二层接入、哪些设备承担网关、设备之间互联地址是什么、终端网关落在哪里。一个典型的小企业组网有两种做法全部 VLAN 的网关都在一台核心三层交换机上接入交换机只做二层透传。多台三层交换机各承担一部分 VLAN 的网关设备之间用独立网段互联。如果你遇到的是第一种配置重点在 VLAN、Trunk 和 VLANIF静态路由通常不是主要工作。第二种才需要认真设计互联地址和双向静态路由。3.2 VLAN 与 IP 地址规划这里给一个常见规划示例后面所有命令都基于它对象VLAN网段网关办公区VLAN 10192.168.10.0/24192.168.10.254财务部VLAN 20192.168.20.0/24192.168.20.254服务器区VLAN 30192.168.30.0/24192.168.30.254交换机互联独立互联 VLAN192.168.100.0/30—互联地址为什么用 /30因为两端设备只需要两个可用 IP/30 有 2 个可用主机地址正好够两台设备用又能避免浪费。很多人习惯用 /24 做设备互联实际会留下大量无用地址也会让路由表更宽。这个细节在工程里要注意。3.3 接口角色Access、Trunk、Hybrid交换机端口有三种常见链路类型Access连接终端只能属于一个 VLAN发出时剥掉 Tag。Trunk连接交换机之间默认放行指定 VLAN保留 Tag。Hybrid华为特有的混合模式既能接终端也能接交换机但配置相对复杂。初学者最容易踩的坑是两台交换机之间用了 Access 口或者 Trunk 没有放行对应 VLAN。Access 口只认一个 PVID跨交换机传递多个 VLAN 时必须用 Trunk并且要在 Trunk 上放行所有需要跨设备传输的 VLAN。3.4 用 ensp 模拟还是真机练习如果你手上没有真机可以用华为的 ensp 仿真平台练习。ensp 里可以搭交换机、路由器、PC练 VLAN、Trunk、VLANIF、静态路由这些基础操作非常方便而且能在图形界面里看到链路状态和路由表。要注意一点模拟器对硬件细节、性能瓶颈的模拟和真机有差距命令验证通了不等于真机上一定没有性能问题但从学习路由逻辑和配置流程来看ensp 是足够用的。4. 单台三层交换机上的 VLAN 互通VLANIF 起路由4.1 创建 VLAN 并划分端口在华为 VRP 系统里第一步是批量创建 VLANsystem-view vlan batch 10 20 30然后把连接终端的接口划入对应 VLANinterface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/3 port link-type access port default vlan 30如果你的接入交换机连接核心交换机上联口要配 Trunkinterface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 30这里的allow-pass vlan决定了哪些 VLAN 的帧能通过这条 Trunk 链路。漏掉任何一个 VLAN都会导致那个 VLAN 的流量在交换机之间断掉而且报错不明显。4.2 创建 VLANIF 三层接口接下来在三层交换机上给每个业务 VLAN 配置网关地址interface Vlanif 10 ip address 192.168.10.254 255.255.255.0 interface Vlanif 20 ip address 192.168.20.254 255.255.255.0 interface Vlanif 30 ip address 192.168.30.254 255.255.255.0配置完成后用display ip routing-table能看到 192.168.10.0/24、192.168.20.0/24、192.168.30.0/24 三个直连路由。到这一步同一台三层交换机上的 VLAN 之间已经能互通了不需要静态路由。4.3 验证PC 网关配置与 ping 测试PC 的 IP 要配成对应网段内的地址网关写 VLANIF 的地址。比如 VLAN 10 的一台终端IP192.168.10.100/24网关192.168.10.254然后从这台 PC ping 192.168.20.100如果 VLAN、网关、物理链路都正常就能通。如果 ping 不通先检查终端网关、VLANIF 是否 UP、接口是否 UP不要急着去配静态路由。注意VLANIF 接口要处于 UP 状态前提是这个 VLAN 里至少有一个物理接口处于 UP 状态。如果 VLANIF 是 DOWN 的说明该 VLAN 没有活跃端口或者对应端口被 shutdown 了。4.4 为什么这一步还没有出现静态路由这里要再强调一遍单台三层交换机上的 VLAN 间通信靠的是 VLANIF 生成的直连路由设备查表后直接在本机三层引擎转发。静态路由解决的不是“同一个设备上两个 VLAN 怎么通”而是“去往某个网段的下一条路怎么走”。把这个概念理清了你就不会在简单的单机场景里乱配静态路由也不会在真正需要静态路由的跨设备场景里漏配。5. 两台三层交换机之间的 VLAN 互通静态路由正式上场5.1 组网需求与互联地址规划现在升级到真实场景公司有两个区域A 区的三层交换机上跑着 VLAN 10 和 VLAN 20B 区的三层交换机上跑着 VLAN 30。A 区和 B 区之间用一条直连链路互联。目标三个 VLAN 之间全部互通。规划如下SW-AVlanif10 192.168.10.254/24Vlanif20 192.168.20.254/24互联接口 Vlanif100 192.168.100.1/30SW-BVlanif30 192.168.30.254/24互联接口 Vlanif100 192.168.100.2/30在 SW-A 上创建 Vlanif100 时需要先把互联物理口划进 VLAN 100端口类型用 Access 或 Trunk 都可以只要两端注册在同一个 VLAN。工程里更推荐 Trunk因为以后如果要在这条链路上扩展其他 VLAN不需要改动端口类型。要注意互联 VLAN 最好是独立的业务隔离 VLAN不要和业务 VLAN 混在一起。5.2 左侧交换机 SW-A 的配置system-view vlan batch 10 20 100 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 100 interface Vlanif 10 ip address 192.168.10.254 255.255.255.0 interface Vlanif 20 ip address 192.168.20.254 255.255.255.0 interface Vlanif 100 ip address 192.168.100.1 255.255.255.252 ip route-static 192.168.30.0 255.255.255.0 192.168.100.2最后这条ip route-static是关键告诉 SW-A去往 192.168.30.0/24 的流量下一跳是互联地址 192.168.100.2也就是 SW-B。5.3 右侧交换机 SW-B 的配置system-view vlan batch 30 100 interface GigabitEthernet0/0/1 port link-type access port default vlan 30 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 100 interface Vlanif 30 ip address 192.168.30.254 255.255.255.0 interface Vlanif 100 ip address 192.168.100.2 255.255.255.252 ip route-static 192.168.10.0 255.255.255.0 192.168.100.1 ip route-static 192.168.20.0 255.255.255.0 192.168.100.1注意 SW-B 上要配两条静态路由分别指向 VLAN 10 和 VLAN 20 的网段。如果只配了去 VLAN 10 的路由VLAN 20 的回应流量到了 SW-B 之后会被丢弃因为 SW-B 不知道 192.168.20.0/24 在哪里。5.4 回程路由最容易被忽略的半步这是整个配置里最常见的失败原因。很多人在 SW-A 上写了一条去 VLAN 30 的静态路由然后在 PC 上 ping 192.168.30.100发现不通就开始怀疑命令写错了。其实单向路由只解决了请求的问题响应包回来时SW-B 也必须知道怎么到达源设备。一旦漏掉回程路由表现就是“ping 请求发出去没回应”。所以在配置静态路由时一定要坚持一个习惯从源到目的、再顺着路径反方向检查一遍。每一个转发节点都要有去和回两条路径信息。这就像寄快递你不能只写收件地址不写寄件地址。5.5 配置完成后的验证方法配置完先不急着从 PC ping逐步验证在两台交换机上display ip routing-table确认静态路由存在且下一跳正确。先从 SW-A ping SW-B 的互联地址 192.168.100.2确认三层链路通。从 SW-A ping 192.168.30.254VLAN 30 的网关确认能到达 VLAN 30 的 VLANIF。最后从 PC ping 对端 VLAN 的 PC确认终端整条链路通。这样一层层向上验证能很快定位是链路问题、路由问题还是终端问题。注意ping 不通时不一定是静态路由错了也可能是 ICMP 被 ACL、防火墙或终端系统拦截。验证时可以先 ping 网关、再 ping 网关的对端 VLANIF逐跳缩小范围。6. 流量不通时按这个顺序排查最省时间6.1 从终端逐层向上检查实际工作中遇到的 VLAN 间通信问题八成以上都不是静态路由本身的问题。按我的习惯先走一遍从底层到上层的排查顺序看终端IP、掩码、网关是否配置正确网关是否指到了对应的 VLANIF 地址。看物理接口两端接口是否 UP网线、光模块、协商模式是否正常。看 VLAN端口是否在正确的 VLAN 里Trunk 是否放行了对应 VLANPVID 是否一致。看 VLANIF接口是否 UPIP 是否配置正确是否和终端网关一致。看路由表目标网段是否有静态路由或直连路由下一跳是否可达。看回程目标设备所在的交换机是否有返回源网段的静态路由。看策略ACL、防火墙规则、端口安全是否拦截了流量。每一步都可能成为断点但跳着查容易漏。尤其是新手一上来就盯静态路由反而忽略了前面更基础的环节。6.2 常见坑VLANIF 不 UP、Trunk 未放行、PVID 不一致这三个问题出现的频率最高。VLANIF 不 UP原因通常是该 VLAN 下没有任何 UP 的物理端口。如果业务 VLAN 的终端没有接上线VLANIF 会一直 DOWN路由表里对应直连路由也不会出现。Trunk 未放行跨交换机传递多个 VLAN 时Trunk 口只放行了部分 VLAN另一个 VLAN 的帧在链路上被丢弃。现象是某个 VLAN 内部通、跨交换机不通。PVID 不一致Access 口的 PVID 就是 default vlanTrunk 口收到不带 Tag 的帧时会打上本端 PVID。如果对端交换机没有放行这个 PVID 对应的 VLAN或者 PVID 设置不一致也会产生二层的丢包。华为交换机上调节 PVID 的命令是port trunk pvid vlan 10一般不建议乱改默认值除非你已经清楚整条链路的 Tag 规则。排查这些可以用display port vlan、display vlan brief、display int vlan brief等命令先观察端口和 VLAN 的状态再决定改哪里。6.3 常见坑回程路由缺失、下一跳不可达、ACL 拦截除了二层问题三层问题里最常见的就是回程路由缺失和下一跳不可达。回程路由缺失源和目标之间是双向通信只配了去程、没配回程就是单向通。判断方法是在源设备上能 ping 通目标网关但目标 VLAN 内的 PC 回应不了或者反过来也不行。解决方法是补全每一台三层设备上的往返路由。下一跳不可达静态路由写了一个下一跳但该下一跳 IP 在设备上并不存在或者没有对应的直连路由可以到达。比如互联地址写成了 192.168.100.2但本机互联接口根本不是 192.168.100.0 网段这条静态路由就不会生效。ACL 拦截有时路由表完全正常但中间设备或终端有 ACL、防火墙策略。如果设备上配置过 ACL 且绑定了接口要检查匹配规则的方向和动作。6.4 一套可复用的排查框架把上面的经验收拢成一个可复用流程先确认现象是完全不通、单向通、还是偶发丢包。再确认终端配置IP、掩码、网关。逐跳 pingPC → 本端网关 → 对端网关 → 对端 PC。在每一跳设备上查路由表和 ARP 表确认转发路径。最后查策略ACL、防火墙、安全端口。这个流程在任何厂家的设备上都能用因为本质是“沿着数据包的转发路径逐层验证”而不是靠猜。把这个习惯养成之后网络排障的效率会明显提升。7. 静态路由的边界不是所有 VLAN 互通问题都该用它7.1 静态路由适合的网络规模静态路由不是万能的。它适合的是拓扑清晰、路径稳定、设备数量不多的环境比如中小企业办公网、校园网的部分区域、分支机构之间的少量互联。在这些场景里静态路由配置简单、不依赖协议、排查思路直观是很务实的选择。但在实际网络里静态路由常常不是单独存在的。比如核心交换机可以写一条默认路由指向出口设备业务网段之间再写明细静态路由边缘设备只需要一条默认路由就能到达所有网段。这种“明细 默认”的组合能减少路由条目数量也让维护更轻松。如果网络里有大量网段、多条冗余链路、需要快速切换故障路径静态路由的维护成本会迅速上升。例如一个核心层有三台设备汇聚层有十台设备每个汇聚都要写去往所有业务网段的静态路由还要人工维护备份路径这种场景用 OSPF 会合理得多。动态路由协议能自动发现链路变化并收敛虽然它本身也有学习成本和排障复杂度。7.2 多厂商命令差异提醒静态路由的核心理念在所有厂家设备上是一致的目标网段 下一跳。但命令格式有差异。以单条静态路由为例厂商常见命令写法华为VRP 常见版本ip route-static 192.168.30.0 255.255.255.0 192.168.100.2华三Comware 常见版本与华为命令相近常见写法同为ip route-static思科IOS 常见版本ip route 192.168.30.0 255.255.255.0 192.168.100.2VLANIF 的写法也不一样。华为是interface Vlanif 10思科是interface vlan 10并且要先ip routing开启三层转发华三和华为类似但部分命令单词不同。如果你在某个项目里要跨厂商设备落地前一定要先查该设备版本对应的命令手册不要凭记忆硬写。提醒命令在不同版本、不同产品系列之间会有细微差别。比如华为 S 系列和 CE 系列虽然大框架一致但命令行细节和默认行为可能存在差异。生产环境操作前先在测试环境或官方文档里确认版本和命令。7.3 我的建议先拓扑再配置最后验证从做网络配置的第一天起我就坚持一个原则先画拓扑再写配置最后验证。画拓扑能帮你理清数据路径写配置是把路径固化成命令验证是确认固化结果和设计一致。这套流程放在静态路由配置上尤其合适。另外配置完成后记得保存配置。在华为设备上是save在思科设备上是write或copy running-config startup-config。不要以为命令行敲进去就完事了设备一旦重启没有保存的配置会全部丢失。这个动作看起来小但实际决定了这次配置能不能长期存在。如果这篇文章只能留一句话我想说的是静态路由不是一条让 VLAN 互通的魔法命令它只是把“这条路应该怎么走”的决策显式地告诉每一台设备。你要做的不是背命令而是先看清楚流量从源到目的要经过哪些节点、哪些回程路径必须补上、哪些边界决定了该用静态还是动态路由。把这些想清楚VLAN 间通信的问题自然就解决了。
返回列表