在实际网络项目中通过静态路由实现交换机 VLAN 间的通信是很常见的需求。很多新手用单台三层交换机创建两个 VLAN配置 VLANIF 后会发现 PC 可以直接互通于是误以为静态路由没有用。一旦组网变成两台交换机VLAN10 的终端在一台设备上VLAN20 的终端在另一台设备上单台交换机上的直连路由已经覆盖不到对端网段就必须在三层设备之间引入路由协议而静态路由就是最直观、最容易排错的一种。这篇文章以华为 VRP 设备和 eNSP 模拟器为例带你把两台三层交换机、两个 VLAN、一段三层互联链路和两条静态路由完整配置起来。学完后你会清楚VLAN 隔离了什么VLANIF 负责什么静态路由解决什么以及遇到 PC 互通失败时应该按什么顺序排查。1. 先理解 VLAN 隔离后为什么不能直接互通1.1 VLAN 的隔离作用VLAN 把一台交换机从逻辑上拆成多台交换机。默认情况下不同 VLAN 的端口之间不能进行二层通信广播帧也不会跨 VLAN 传播。这样做的好处是减少广播域、提高安全性、隔离故障域但代价是不同 VLAN 的终端默认不互通。例如 PC1 在 VLAN10PC2 在 VLAN20。即使两台 PC 接在同一台交换机上只要它们的 MAC 地址表项属于不同 VLAN交换机就不会把它们之间的数据帧转发到对方端口。VLAN 技术解决的是“要不要通”的问题而真正让它们通起来需要三层路由。1.2 三层交换机通过 VLANIF 提供直连路由三层交换机可以在 VLAN 上创建三层逻辑接口也就是 VLANIF 接口。给 VLANIF 配置 IP 地址后交换机就拥有了这个网段的路由称为直连路由。以 PC1 所在 VLAN10 为例在交换机上执行interface Vlanif10 ip address 192.168.10.1 255.255.255.0当 PC1 的网关指向 192.168.10.1 时PC1 发出的跨网段流量会先以二层帧形式送给网关。交换机收到后发现目的 IP 不是本机而是另一个网段就会查路由表并决定从哪个接口转发。这里要注意一个关键认知如果 VLAN10 和 VLAN20 都在同一台三层交换机上那么只要两个 VLANIF 都配置了 IP路由表里就会同时存在两条直连路由交换机不需要配置静态路由就能让两个 VLAN 互通。1.3 静态路由在跨交换机 VLAN 通信中的位置当 VLAN10 在 SW1 上VLAN20 在 SW2 上时SW1 的路由表中只有 192.168.10.0/24 和互联网段的路由没有 192.168.20.0/24 的路由。SW2 的路由表里也没有 192.168.10.0/24。此时必须通过路由协议或手工静态路由让两台设备互相告诉对方“某个网段该往哪里走”。静态路由非常适合这种拓扑固定、网段数量少的小型网络。它不依赖协议协商路由条目由管理员手工指定行为可预期排错链路短。三类路由来源可以这样对比路由来源产生方式适用场景在本文实验中的表现Direct 直连路由接口配置 IP 且接口 Up本设备直接可达的网段SW1 上有 192.168.10.0/24 和互联网段Static 静态路由管理员手工指定目的网段和下一跳非直连但拓扑固定SW1 上配置到达 192.168.20.0/24 的静态路由Dynamic 动态路由OSPF、RIP 等协议自动计算拓扑复杂或需要高可用本文不涉及2. 实验环境用两台三层交换机模拟跨设备 VLAN 通信2.1 为什么选择 eNSP 和 S5700eNSP 是学习华为网络设备配置比较方便的模拟工具内置了路由器、交换机、PC 和连接线缆。下面的配置基于华为 VRP 平台以 eNSP 自带的 S5700 三层交换机为例。真机命令与模拟器大体相同但接口编号、系统版本和默认特性会有差异落地到真机前要先确认设备型号和版本。S5700 这类三层交换机支持 VLANIF 和静态路由足够完成跨交换机 VLAN 通信实验。如果你手里的设备是纯二层交换机不支持 VLANIF 或路由功能那就需要外接路由器或者换成三层交换机再做这个实验。2.2 拓扑与 IP 规划实验拓扑如下SW1 上创建 VLAN10PC1 属于 VLAN10。SW2 上创建 VLAN20PC2 属于 VLAN20。SW1 与 SW2 之间使用 Trunk 链路承载 VLAN100作为两台设备之间的三层互联链路。SW1 和 SW2 分别创建 Vlanif100配置同一网段地址形成三层直连。最后分别配置静态路由让两台设备能互相到达对方的业务网段。IP 规划表如下设备VLAN接口IP 地址作用SW110Vlanif10192.168.10.1/24PC1 网关SW1100Vlanif100192.168.100.1/30与 SW2 三层互联SW220Vlanif20192.168.20.1/24PC2 网关SW2100Vlanif100192.168.100.2/30与 SW1 三层互联PC110以太网口192.168.10.10/24终端PC220以太网口192.168.20.10/24终端链路规划源设备源接口对端设备对端接口链路类型允许 VLANSW1GE0/0/1PC1EthernetAccessVLAN10SW2GE0/0/1PC2EthernetAccessVLAN20SW1GE0/0/24SW2GE0/0/24TrunkVLAN1002.3 配置前三分钟检查清单开始配置前先把基础条件理清楚能省去后面不少排错时间确认使用的是三层交换机而不是纯二层交换机。确认 PC1 的网关是 SW1 的 Vlanif10 地址 192.168.10.1。确认 PC2 的网关是 SW2 的 Vlanif20 地址 192.168.20.1。确认两台交换机之间的互联接口编号不要照抄其他拓扑的 GE0/0/24。确认互联 VLAN100 没有被业务 VLAN 占用。确认模拟器中两台设备已经正常启动接口没有处于 shutdown 状态。3. 从零配置静态路由让 VLAN10 和 VLAN20 互通3.1 创建 VLAN 并将终端口加入对应 VLAN首先配置 SW1。进入系统视图修改设备名称创建 VLAN10 和 VLAN100system-view sysname SW1 vlan batch 10 100将 GE0/0/1 配置为 Access 口并放入 VLAN10。Access 口通常用于连接终端设备端口只能属于一个 VLANinterface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit将 GE0/0/24 配置为 Trunk 口并允许 VLAN100 通过。两台交换机之间的链路要承载互联 VLAN100所以不能使用 Access 口而应该使用 Trunk 口interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 100 quitSW2 做类似配置但业务 VLAN 是 VLAN20system-view sysname SW2 vlan batch 20 100 interface GigabitEthernet0/0/1 port link-type access port default vlan 20 quit interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 100 quit这里要特别强调不要只配置port link-type trunk还要配置port trunk allow-pass vlan 100。缺少 allow-pass 时VLAN100 的帧不会从该 Trunk 口通过VLANIF100 之间根本无法通信。3.2 配置 VLANIF 三层接口VLANIF 接口是 VLAN 的三层入口。在 SW1 上创建 Vlanif10 作为 PC1 的网关创建 Vlanif100 作为与 SW2 互联的三层接口interface Vlanif10 ip address 192.168.10.1 255.255.255.0 quit interface Vlanif100 ip address 192.168.100.1 255.255.255.252 quitSW2 上创建 Vlanif20 和 Vlanif100interface Vlanif20 ip address 192.168.20.1 255.255.255.0 quit interface Vlanif100 ip address 192.168.100.2 255.255.255.252 quitVLANIF 接口的 Up 状态依赖两个条件一是 VLAN 已经创建二是该 VLAN 内至少有一个物理接口处于 Up 状态。在 eNSP 中如果互联接口没有配置为 Trunk 并允许 VLAN100Vlanif100 会处于 Down 状态后续路由配置即使正确也无法转发流量。3.3 配置双向静态路由现在 SW1 缺到 192.168.20.0/24 的路由SW2 缺到 192.168.10.0/24 的路由。分别配置静态路由。SW1 上配置到达 PC2 网段的静态路由ip route-static 192.168.20.0 255.255.255.0 192.168.100.2含义是如果目的网段是 192.168.20.0/24就把报文交给下一跳 192.168.100.2也就是 SW2 的 Vlanif100 地址。SW2 上配置到达 PC1 网段的静态路由ip route-static 192.168.10.0 255.255.255.0 192.168.100.1含义是如果目的网段是 192.168.10.0/24就把报文交给下一跳 192.168.100.1也就是 SW1 的 Vlanif100 地址。很多人会忘记 SW2 也需要一条返回路由。即使 SW1 能把报文转发到 SW2如果 SW2 不知道 192.168.10.0/24 怎么走回包就会丢失。跨设备通信必须保证去程和回程路由都完整。3.4 为终端配置 IP 地址和网关在 eNSP 中双击 PC1进入 IP 配置界面IPv4 地址192.168.10.10子网掩码255.255.255.0网关192.168.10.1PC2 配置为IPv4 地址192.168.20.10子网掩码255.255.255.0网关192.168.20.1终端网关必须指向本 VLAN 的 VLANIF 地址。如果 PC1 的网关误写成 192.168.20.1PC1 发出的跨网段报文根本找不到对应的直连网关二层广播发送 ARP 请求也不会有人应答。4. 关键命令与原理分析4.1 ip route-static 参数速查静态路由的核心命令格式如下ip route-static 目的网段 掩码 下一跳地址 [ preference 优先级 ]也可以写掩码长度ip route-static 192.168.20.0 24 192.168.100.2常用参数说明如下表参数含义示例说明目的网段要到达的目标网络192.168.20.0通常是终端所在网段掩码或掩码长度目的网段的范围255.255.255.0 或 24掩码越大路由覆盖范围越小下一跳地址报文交给哪个邻居设备192.168.100.2必须是直连网段内可达的地址preference路由优先级60越小越优默认静态为 60还可以指定出接口ip route-static 192.168.20.0 24 Vlanif100 192.168.100.2实际配置中指定出接口通常不是必须的。只要下一跳地址正确交换机可以通过路由表查找对应的出接口。4.2 为什么下一跳写对端 IP而不是只写本端接口有初学者会把命令写成下面这样ip route-static 192.168.20.0 24 Vlanif100这种写法在部分场景下可能工作但更容易出问题。原因是报文要从 Vlanif100 出去时交换机需要知道对端的下一跳是谁。如果只指定出接口而没有指定下一跳在广播网络里交换机可能需要通过 ARP 去解析目的地址而这个目的地址并不在互联网段内最终可能导致转发失败。推荐做法是明确写出下一跳地址ip route-static 192.168.20.0 24 192.168.100.2下一跳 192.168.100.2 与 SW1 的 Vlanif100 地址 192.168.100.1 在同一网段SW1 可以通过 ARP 解析出 SW2 的 MAC 地址然后把 IP 报文封装成二层帧发到 SW2。4.3 用路由表验证路由是否生效配置完成后在 SW1 上查看路由表display ip routing-table正常应该能看到以下关键路由Destination/Mask Proto Pre Cost NextHop Interface 192.168.10.0/24 Direct 0 0 192.168.10.1 Vlanif10 192.168.20.0/24 Static 60 0 192.168.100.2 Vlanif100 192.168.100.0/30 Direct 0 0 192.168.100.1 Vlanif100第一条是 SW1 直连的 VLAN10 网段第三条是直连的互联网段第二条才是手工配置的静态路由。如果 SW1 上缺少第二条路由说明静态路由没有配置成功或者配置后没有生效。SW2 上执行同样的命令应该看到 192.168.20.0/24 为直连192.168.10.0/24 为 Static下一跳为 192.168.100.1。4.4 用 ping 和 tracert 验证互通在 PC1 的命令行里直接 ping PC2ping 192.168.20.10如果配置正确应该出现连续的Reply from 192.168.20.10。如果只出现 Request timed out说明去程或回程某一方向有问题。还可以从交换机发起带源地址的 ping用于区分是终端配置问题还是路由问题SW1 ping -a 192.168.10.1 192.168.20.10这个命令指定源地址为 Vlanif10 的地址相当于从 VLAN10 网关发起测试。如果这条命令能通说明交换机路由和互联链路正常问题更可能出在 PC 的 IP 或网关上。使用 tracert 可以观察路径经过的节点tracert 192.168.20.10它会逐跳显示从 PC1 到 PC2 经过的三层设备地址。PC1 的第一跳应该是网关 192.168.10.1后续跳数会显示 SW1 或 SW2 的互联地址。5. 常见问题排查5.1 先从最外层链路检查跨交换机 VLAN 通信排错不要一上来就怀疑静态路由。建议按下面顺序检查检查物理链路和接口状态。检查 VLAN 和端口类型。检查终端 IP 和网关。检查 VLANIF 接口状态。检查路由表。检查 ARP 表项。这个顺序从下到上先保证二层能通再看三层转发。很多人为了查一条静态路由花大量时间最后发现是 Trunk 口没有 allow VLAN100属于二层基础没打牢。5.2 按现象定位问题问题现象可能原因检查方式处理建议PC1 ping 不通 PC2但能 ping 通网关 192.168.10.1SW1 或 SW2 缺少静态路由在两台交换机上执行display ip routing-table检查 192.168.20.0/24 和 192.168.10.0/24 路由是否都存在PC1 连网关都 ping 不通Access 口 VLAN 或 PC 网关配置错误display vlan、display interface GigabitEthernet0/0/1确认 GE0/0/1 属于 VLAN10PC 网关为 192.168.10.1SW1 能 ping 通 SW2 的 Vlanif100但 PC 不通VLANIF 对应的业务 VLAN 接口 down或终端网关错误display interface Vlanif10、检查 PC 配置确认 Vlanif10 状态为 UpPC 网关正确两台交换机之间 ping 不通 Vlanif100Trunk 口未允许 VLAN100或 VLANIF 未配置 IPdisplay port vlan、display interface Vlanif100在两端 Trunk 口配置port trunk allow-pass vlan 100路由表里静态路由不存在配置写错或未保存display current-configurationinclude ip route-staticping 通去程但回包丢失SW2 缺少回程路由在 SW2 查看 192.168.10.0/24 路由在 SW2 配置到达 192.168.10.0/24 的静态路由5.3 三个容易踩的坑第一个坑只配了 Vlanif没有配静态路由。同一台三层交换机上的 VLAN 可以通过直连路由互通但跨设备必然需要静态路由或动态路由。把静态路由补上之前两台三层交换机都不知道对方的业务网段在哪里。第二个坑下一跳地址写错。下面这种写法看起来像路由实际上方向不对ip route-static 192.168.20.0 24 192.168.20.1SW1 的互联地址是 192.168.100.1192.168.20.1 不在 SW1 直连网段内SW1 根本不知道该把报文交给谁。下一跳必须是本设备直连网段内可达的对端地址。第三个坑Trunk 口配置不完整。只执行port link-type trunk没有执行port trunk allow-pass vlan 100。此时 VLAN100 的帧不会从该口通过Vlanif100 会 Down静态路由即使配置正确也无法转发。配置完后用display port vlan查看端口允许的 VLAN 列表。5.4 排错常用命令清单下面这些命令在排查时非常有用display vlan display port vlan display interface Vlanif10 display interface Vlanif100 display ip routing-table display arp display current-configuration | include ip route-static命令输出可以对照 IP 规划表逐项检查。不要凭记忆猜测路由表和接口状态是最真实的依据。6. 最佳实践与扩展6.1 学习环境与生产环境的差异eNSP 里跑通只能证明你的配置逻辑正确。生产环境还要考虑更多的因素维度eNSP 学习环境生产环境安全策略默认放行不需要额外配置需要检查 ACL、防火墙策略是否放行对应网段接口状态模拟器一般不会自动 Down光模块、线缆、协商模式都会影响接口状态路由规模两条静态路由即可网段多时建议使用静态汇总或动态路由配置回滚重新启动模拟器即可必须规范备份配置回滚要评估影响监控告警不需要需要监控路由丢失、接口 Down、流量异常生产环境建议把配置保存到独立文本或网络管理平台并记录变更时间、变更人、变更内容。静态路由是手工配置一旦写错影响范围往往比动态路由更大必须谨慎。6.2 多条静态路由与浮动静态路由如果 SW2 后面还有多个网段可以像下面这样分别配置ip route-static 192.168.20.0 24 192.168.100.2 ip route-static 192.168.30.0 24 192.168.100.2如果两条目的网段连续则可以汇总成一条ip route-static 192.168.20.0 255.255.254.0 192.168.100.2但汇总路由必须保证被汇总的地址段确实都可达否则会把流量引向黑洞。需要主备链路时可以使用浮动静态路由通过 preference 控制优先级ip route-static 192.168.20.0 24 192.168.100.2 preference 60 ip route-static 192.168.20.0 24 192.168.200.2 preference 80优先级 60 的路由为主路由优先级 80 的路由为备份路由。主下一跳不可达时备份路由才会进入路由表。6.3 什么时候不应该用静态路由静态路由适合网络规模小、拓扑结构长期不变的场景。如果你的交换机数量超过三台或者存在多条冗余链路需要链路故障后快速切换建议使用 OSPF 等动态路由协议。动态路由虽然配置复杂度高一些但能自动感知链路变化避免人工维护大量路由条目。实际组网中静态路由和动态路由也可以结合使用边界设备之间用静态路由核心内部用 OSPF既能控制路径又能减轻维护压力。6.4 给新手的一条实践建议不要急着在一个大拓扑里同时配很多路由。先把两台交换机、两个 VLAN、一个互联 VLAN 的小实验完整跑通然后反复执行display ip routing-table观察路由变化再故意删掉一条静态路由用 ping 验证现象。只有亲手制造过故障排错时才能更快想到根因。跨设备 VLAN 通信的根子始终是每台设备都要知道目的网段走哪个下一跳而静态路由正是把这条路径明确写出来的最简单方式。