2026/10/8 1:57:20

华为S5700交换机VLAN配置实战:PVID、Trunk与VLAN间通信避坑指南

华为S5700交换机VLAN配置实战:PVID、Trunk与VLAN间通信避坑指南 简介这份PDF资料聚焦华为S5700三层交换机的VLAN配置面向网络运维初学者与需要快速上手的网络技术人员帮助解决VLAN划分、管理IP设置及与路由器互联等实际问题。资源为1个PDF文件压缩包约1.43MB内容以图文与命令示例为主便于对照操作。资料从VLAN基本概念讲起涵盖Console登录、管理IP与Web用户配置、Access端口划分VLAN、vlanif接口及静态路由、路由器NAT与回程路由等关键环节并给出tp-link路由器、S5700与普通交换机、PC端组成的网络拓扑读者可据此搭建实验环境、理解三层交换与VLAN间通信的配置逻辑。目前已有697人学习适合作为网络配置入门与排错参考。1. 华为 S5700 的 VLAN 设置为什么你照着旧文档敲命令PC 还是不通机房里最常见的翻车现场不是命令敲错而是敲对了却不通。一台华为 S5700 摆在机柜里你按手头那份《华为s5700交换机vlan设置[整理].pdf》把接口划进 VLAN、把上行口配成 trunk结果两台 PC 一个 ping 不通另一个或者能通但网关 ping 不到。问题往往不在 VLAN 本身而在 PVID、放通列表、接口类型这三者的组合关系上——它们是一套联动机制任何一处对不上流量就被静默丢弃交换机连个报错都不给你。这篇笔记面向的是手里真有 S5700、需要把 VLAN 划分、VLAN 间通信、trunk 放通这几件事一次做对的人。我会按「先讲清接口类型和 PVID 的判定逻辑 → 再给可抄的最小配置 → 然后拆 VLAN 间通信的两条路 → 最后把踩过的坑逐条列出来」的顺序走。命令基于 S5700 的 VRP 命令行不同版本细节略有差异但判定逻辑是通用的。看完你应该能独立完成一台接入交换机的 VLAN 落地并且知道不通时该从哪一层开始查。2. 接口类型与 PVIDS5700 转发 VLAN 报文的判定逻辑2.1 Access、Trunk、Hybrid 三种口到底怎么选S5700 的接口在 VLAN 维度上只有三种身份选错身份是绝大多数「不通」的根因。Access 口只属于一个 VLAN收到不带标签的帧就打上该 VLAN 的 PVID发出时剥掉标签——它面向的是终端设备PC、打印机、摄像头这类不会自己打标签的家伙。Trunk 口可以属于多个 VLAN默认只放通 PVID 对应的那个 VLAN 的不带标签流量其余 VLAN 必须显式放通发出时带标签——它面向的是交换机与交换机之间、交换机与路由器之间的干道。Hybrid 口是前两者的超集可以按 VLAN 分别指定「发出时带不带标签」灵活但也最容易配乱。选型上我一般这么定接终端的口一律 Access别图省事用 Hybrid交换机互联的口用 Trunk只有遇到「一个口既要接服务器又要接多个 VLAN」这种非标场景才动 Hybrid。很多旧文档把 Hybrid 当万能口推荐结果新手配完自己都说不清哪个 VLAN 带标签出去排查时直接抓瞎。2.2 PVID 与放通列表一个帧进来会发生什么理解 S5700 的转发关键是记住「入方向看 PVID出方向看放通列表和标签策略」。一个不带标签的帧从 Access 口进来交换机给它打上该口 PVID 的标签然后查 MAC 表如果要从一个 Trunk 口出去先检查这个 Trunk 口是否放通了这个 VLAN放通才转发且默认带标签发出。如果没放通帧被丢弃没有任何日志。这里有个反直觉的点Trunk 口的 PVID 默认是 VLAN 1如果你不改那么从对端过来的不带标签帧会被归到 VLAN 1而不是你以为的业务 VLAN。这就是「两端都配了 trunk 却不通」的经典原因——一端把业务 VLAN 设成了 PVID另一端没设两边对不带标签帧的归属理解不一致。# 查看接口当前的 PVID 和放通情况排查第一步 display port vlan # 输出里 Port 列是接口名PVID 列是缺省 VLAN # Trunk 行的 VLAN List 就是放通列表重点看业务 VLAN 在不在里面display port vlan是排查 VLAN 问题的第一命令它一次性把每个口的类型、PVID、放通列表列清楚。参数上没什么可调的但要看懂输出如果业务 VLAN 不在某个 Trunk 口的 VLAN List 里那这个方向一定不通不用再往下查了。2.3 用最小配置把两台 PC 划进同一 VLAN先做最简单的一台 S5700两台 PC 接在 GE0/0/1 和 GE0/0/2要求它们互通且和别的口隔离。system-view sysname SW1 # 批量创建业务 VLAN vlan batch 10 20 # 把两个接入口划进 VLAN 10 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/2 port link-type access port default vlan 10 quit # 保存配置否则重启全丢 saveport link-type access把接口定为接入模式port default vlan 10同时完成两件事把接口加入 VLAN 10并把 PVID 设为 10。这两条命令的顺序不能反先设 default vlan 再改 link-type 在某些版本上会被拒绝。配完两台 PC 应该能互通因为它们同属 VLAN 10二层直接转发。如果这时不通先确认 PC 的 IP 在同一网段、网线插的口和配置的口一致再用display mac-address看交换机有没有学到两台 PC 的 MAC。学不到 MAC 说明物理层或接口配置有问题学到了 MAC 但 ping 不通才轮到查 VLAN。3. Trunk 放通与 VLAN 间通信把跨交换机和跨网段跑通3.1 两台 S5700 级联Trunk 口放通列表怎么写单台交换机内部互通只是热身真实网络里 VLAN 要跨交换机延伸。假设 SW1 和 SW2 用 GE0/0/24 互联VLAN 10 和 VLAN 20 都要跨过去。# SW1 上行口配置 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit # SW2 上行口配置必须对称 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quitport trunk allow-pass vlan 10 20是放通列表只有列进去的 VLAN 才能从这个口带标签出去。两端必须放通相同的 VLAN一端放通一端没放通流量单向丢弃表现为「一个方向能通另一个方向不通」这种玄学现象。如果 VLAN 数量多可以用port trunk allow-pass vlan all放通全部但生产环境我不建议等于放弃了 VLAN 的隔离意义。提示Trunk 口的 PVID 默认是 1如果两端都保持默认那么不带标签的帧归 VLAN 1业务 VLAN 的帧带标签传输互不干扰。除非有特殊需求不要随意改 Trunk 口的 PVID。3.2 三层交换机做 VLAN 间路由VLANIF 接口配置VLAN 之间默认隔离要互通就得有路由。S5700 里带「SI」后缀的是二层机型做不了 VLAN 间路由带「EI」或「HI」的是三层机型可以用 VLANIF 接口。这是选型时最容易忽略的一点——买错了型号后面所有跨网段需求都得靠外接路由器。三层机型上给每个 VLAN 配一个 VLANIF它就相当于这个 VLAN 的网关。# 创建 VLANIF 接口作为网关 interface Vlanif10 ip address 192.168.10.1 255.255.255.0 quit interface Vlanif20 ip address 192.168.20.1 255.255.255.0 quit # 确认路由表里有直连路由 display ip routing-table配完 VLANIF 后VLAN 10 的 PC 把网关指向 192.168.10.1VLAN 20 的 PC 指向 192.168.20.1两者就能互 ping。display ip routing-table里应该能看到两条直连路由如果没有说明 VLANIF 没起来——常见原因是这个 VLAN 下没有任何 up 的物理口VLANIF 会保持 down 状态。3.3 单臂路由只有二层交换机时的替代方案手头只有二层 S5700又必须让两个 VLAN 通信就得靠外接路由器的单臂路由。做法是把路由器的一个物理口用子接口承载多个 VLAN交换机侧对应口配成 Trunk。# 交换机侧连接路由器的口配 Trunk放通两个 VLAN interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit路由器侧以常见 VRP 路由器为例创建子接口每个子接口终结一个 VLAN 的标签并配上网关地址。子接口要开 ARP 广播否则学不到终端 MAC。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 quitdot1q termination vid 10让子接口剥离 VLAN 10 的标签arp broadcast enable允许这个子接口转发 ARP 广播——漏了这条PC 能配上网关却 ping 不通因为 ARP 请求根本出不去。单臂路由的瓶颈在物理口带宽所有 VLAN 流量挤一条线适合小规模过渡不适合长期方案。4. 避坑与排查S5700 VLAN 配置里最容易翻车的五件事4.1 现象两端都配了 Trunk只有一个方向通原因几乎总是放通列表不对称。A 端allow-pass vlan 10 20B 端只写了allow-pass vlan 10那么 VLAN 20 的流量从 B 往 A 走时在 B 的出方向就被丢了。解决方法是两端逐条比对display port vlan的输出把 VLAN List 对齐。我习惯配完一端立刻display一次再配另一端避免凭记忆写。4.2 现象Access 口划进 VLAN 了PC 还是不通先别怀疑交换机用display mac-address看有没有学到 PC 的 MAC。学不到问题在物理层或 PC 网卡学到了但 ping 不通检查 PC 的 IP 掩码和网关。还有一种隐蔽情况接口被 shutdown 了display interface GigabitEthernet0/0/1看第一行是不是 DOWN。血泪经验是批量配置脚本里如果带了shutdown而没跟undo shutdown接口会一直是关的。4.3 现象VLANIF 配了地址路由表里却没有VLANIF 的状态依赖它对应 VLAN 下有没有 up 的成员口。如果 VLAN 10 里一个 up 的口都没有VLANIF10 就是 down直连路由不会生成。解决方法是先确认至少有一个 Access 口划进了这个 VLAN 且物理 upVLANIF 会自动起来。这个机制新手很难想到因为接口明明配了地址看起来「应该」是好的。4.4 现象改了 PVID 之后原本通的业务断了Trunk 口改 PVID 会改变不带标签帧的归属。如果对端发的是不带标签帧而你这边 PVID 改成了业务 VLAN这些帧就被归到业务 VLAN可能和预期不符。除非明确知道对端行为Trunk 口 PVID 保持默认 1。改之前先想清楚「这个口会不会收到不带标签的帧」想不清楚就别改。4.5 现象配置当时生效重启后全没了S5700 的配置默认在内存里不save就丢。save会提示确认文件名直接回车用默认的 vrpcfg.zip 即可。更隐蔽的是有人save了但保存到了错误的位置或者设备有多个配置文件。稳妥做法是save之后display saved-configuration看一眼确认关键配置在里面。这个坑不常踩但踩一次就是半夜被叫起来重配。5. 批量下发与验证把 VLAN 配置从手工活变成可复现流程单台设备手工配没问题十几台接入交换机就是灾难。我现在的习惯是先把配置写成脚本再通过 console 或 SSH 批量下发。S5700 支持在用户视图下用system-view进配置但批量场景更常用的是把命令写进文本通过终端工具逐行粘贴或者用 Python 的 paramiko 库走 SSH。import paramiko import time # 待下发的 VLAN 配置按设备角色区分 access_cfg [ system-view, vlan batch 10 20 30, interface GigabitEthernet0/0/1, port link-type access, port default vlan 10, quit, interface GigabitEthernet0/0/24, port link-type trunk, port trunk allow-pass vlan 10 20 30, quit, save, y, ] def push(ip, user, pwd, cmds): cli paramiko.SSHClient() cli.set_missing_host_key_policy(paramiko.AutoAddPolicy()) cli.connect(ip, usernameuser, passwordpwd, timeout10) shell cli.invoke_shell() time.sleep(1) for c in cmds: shell.send(c \n) time.sleep(0.5) # 等设备回显太快会丢命令 out shell.recv(65535).decode() cli.close() return out # 逐台下发注意 save 的确认交互 print(push(192.168.1.10, admin, yourpass, access_cfg))这段脚本的关键在time.sleep(0.5)——S5700 处理命令有延迟发太快会丢尤其是save这种带交互确认的命令。save之后要单独发一个y确认脚本里已经带上。参数上timeout设 10 秒够用recv的缓冲区给大一点避免截断回显。下发完必须逐台display port vlan验证脚本成功执行不等于配置正确回显里可能藏着Error而你没注意。验证环节我固定查三样display port vlan看接口类型和放通列表display vlan看每个 VLAN 的成员口display ip routing-table看三层路由如果是三层机型。三样都对再让现场同事 ping 测。这套流程跑下来十几台接入交换机的 VLAN 配置能在半小时内完成并验证比一台台手工敲可靠得多。最后说个我自己的习惯每次配完 VLAN我会把display current-configuration的输出存一份到本地命名带上设备名和日期。出问题时对比「上次好的配置」和「现在的配置」差异一目了然比对着屏幕猜快十倍。这个习惯帮我省下的排查时间远比存文件那几秒钟多。希望帮到你。本文还有配套的精品资源点击获取