4. 分布式交换机端口组与VLAN策略

在 vSphere 分布式交换机(vDS)中,端口组是虚拟机接入网络的逻辑入口,而 VLAN 策略决定了这个入口如何处理二层标签。与标准交换机不同,vDS 的端口组 VLAN 设置是集中定义的,一旦修改,所有绑定该端口组的虚拟机与上行链路都会按新策略生效。理解 VLAN、VLAN Trunk 和 PVLAN 三种类型,是设计多租户、隔离区与安全域网络的基础。

三种 VLAN 类型的本质区别

VLAN 类型(VLAN 访问模式):端口组只承载一个 VLAN ID。虚拟机的虚拟网卡发出的帧不带标签,vDS 在进入上行链路时为其打上该 VLAN ID,回程时剥离标签再交给虚拟机。虚拟机自身完全感知不到 VLAN 的存在,适合绝大多数普通业务虚机。

VLAN Trunk 类型:端口组允许多个 VLAN ID 通过,通常配合“VLAN Trunk 范围”或“所有 VLAN”使用。此时虚拟机的虚拟网卡必须自己发出带 802.1Q 标签的帧,vDS 原样透传。这种模式适合运行在虚机内部的软路由、防火墙、Kubernetes 节点或需要自行管理子接口的网关设备。

PVLAN 类型(专用 VLAN):在同一个主 VLAN 内进一步划分隔离级别,分为混杂(Promiscuous)、隔离(Isolated)和社区(Community)三种端口。混杂端口可与所有端口通信,隔离端口之间完全不能互通,社区端口只能与同社区及混杂端口通信。PVLAN 常用于 DMZ 中多台 Web 前端虚机彼此隔离、只允许与负载均衡器通信的场景。

vDS 端口组三种 VLAN 类型的帧处理与通信范围 VLAN 访问模式 端口组 VLAN ID = 100 VM 虚拟网卡(无标签) 无标签帧 vDS 打上 VLAN 100 标签 带标签帧 上行链路 → 物理交换机 通信范围 同端口组 VM 互通 跨主机同 VLAN 互通 VM 无需感知 VLAN VLAN Trunk 允许 VLAN 100,200,300 VM 虚拟网卡(带标签) 802.1Q 标签帧 vDS 原样透传标签 带标签帧 上行链路 → 物理交换机 通信范围 VM 自行管理子接口 多 VLAN 复用一条链路 适合软路由/防火墙 PVLAN 专用 VLAN 主 VLAN 500 混杂端口(Promiscuous) 隔离端口(Isolated) 社区端口(Community) 通信规则 混杂 ↔ 所有端口 隔离 ↔ 仅混杂 社区 ↔ 同社区+混杂 隔离 ↔ 隔离:禁止 社区 ↔ 异社区:禁止 典型:DMZ Web 前端隔离

实战:三种模式下的虚拟机通信验证

下面以一个双主机 vDS 集群为例,说明如何配置并验证不同 VLAN 模式。假设物理交换机上行端口已配置为 Trunk,允许 VLAN 100、200、300、500 通过。

场景一:VLAN 访问模式。创建端口组 PG-Web-VLAN100,VLAN 类型选“VLAN”,VLAN ID 填 100。将 VM-A 和 VM-B 接入该端口组,分别位于不同 ESXi 主机。两台虚机配置同网段 IP(如 192.168.100.10/24 与 192.168.100.11/24),直接 ping 应通。此时在虚机内执行 ip link 看不到任何 VLAN 子接口,说明标签由 vDS 处理。若把端口组 VLAN ID 改为 200,虚机不重新配置 IP 就会立即断连,这是验证 VLAN 策略生效最直接的方法。

场景二:VLAN Trunk。创建端口组 PG-Router-Trunk,VLAN 类型选“VLAN Trunk”,范围填 100-300。将一台运行 Linux 的软路由虚机接入,在虚机内创建子接口:

ip link add link ens192 name ens192.100 type vlan id 100
ip addr add 192.168.100.1/24 dev ens192.100
ip link set ens192.100 up

ip link add link ens192 name ens192.200 type vlan id 200
ip addr add 192.168.200.1/24 dev ens192.200
ip link set ens192.200 up

此时该虚机可同时作为 VLAN 100 和 200 的网关。验证方法:让 VLAN 100 端口组内的 VM-A ping 192.168.100.1,让 VLAN 200 端口组内的 VM-C ping 192.168.200.1,均应通。若把 Trunk 范围改为仅 100,则 200 子接口立即失效,说明 vDS 在入口处按范围过滤标签。

场景三:PVLAN。先在 vDS 上创建主 VLAN 500 与辅助 VLAN:隔离 VLAN 501、社区 VLAN 502。创建三个端口组:PG-DMZ-Promisc(PVLAN 混杂,主 VLAN 500)、PG-DMZ-Iso(PVLAN 隔离,辅助 501)、PG-DMZ-Comm(PVLAN 社区,辅助 502)。将负载均衡器接入混杂端口组,Web-1 与 Web-2 接入隔离端口组。验证:Web-1 ping Web-2 应不通,但两者都能 ping 通负载均衡器。若把 Web-2 改接到社区端口组,且 Web-1 也在同一社区,则两者可互通,但与另一社区的 Web-3 仍隔离。

PVLAN 的混杂端口通常只放网关或负载均衡器,不要将普通业务虚机放入混杂端口组,否则隔离意义丧失。PVLAN 要求物理交换机上行链路也配置对应的 PVLAN 映射,否则跨主机通信会失败。

配置要点与常见排错

现象可能原因排查动作
同端口组 VM 不通VLAN ID 与物理交换机不一致核对 vDS 端口组 VLAN 与交换机 Trunk 允许列表
Trunk 虚机子接口不通Trunk 范围未包含该 VLAN检查端口组 VLAN Trunk 范围是否覆盖子接口 ID
PVLAN 跨主机不通物理交换机未配 PVLAN 映射在交换机上配置主/辅助 VLAN 关联
改 VLAN 后虚机断连虚机 IP 未随 VLAN 调整同步修改虚机网段或 DHCP 作用域

最后强调一个易错点:vDS 端口组的 VLAN 策略修改是即时生效的,不需要重启虚机,但虚机操作系统内的 IP 配置不会自动跟随。因此变更前应规划好 DHCP 或静态地址的同步调整,避免业务中断。掌握这三种模式后,就可以根据隔离强度、管理复杂度和物理网络能力,为不同业务区选择最合适的端口组类型。