外观
SDN Zone 实战:Simple、VLAN、QinQ、VXLAN、EVPN
看完SDN 概念,这篇动手建一个 Zone 和 VNet。五种 Zone 类型的复杂度和前提条件差别很大,本文按由简到繁的顺序讲,多数家庭和小团队场景用 Simple 或 VLAN 类型就够了。
Apply 会在相关节点上重新生成网络配置
创建或修改 Zone / VNet 后点 Apply Configuration,PVE 会在所有涉及的节点上重新生成网络接口配置(VLAN、VXLAN 场景还会改 /etc/network/interfaces.d/ 下的内容)。配置错误可能影响这些节点原有的网络连通性,尤其是 VLAN 类型复用了已有网桥的情况。
开始前确认你有以下至少一条退路:物理控制台、IPMI/BMC,或者机器就在手边。失联后的自救步骤见改静态 IP 与失联自救。建议先在测试节点或非生产时段做第一次尝试。
开始之前
- 已阅读 SDN 概念,理解 Zone / VNet / Subnet 的关系。
- 核心 SDN 功能自 PVE 8.1 起默认安装;如果是从更早版本升级上来的,先确认已安装
libpve-network-perl(以及旧版还需要的ifupdown2)。 - 备份当前网络配置:
sh
# 宿主机 shell,在每个相关节点上执行
cp /etc/network/interfaces /root/interfaces.bak各类型 Zone 需要什么
| 类型 | 关键前提 | 复杂度 |
|---|---|---|
| Simple | 无,PVE 自动建一个孤立网桥 | 低,但网络只在本节点内部,不跨节点 |
| VLAN | 每个节点上已存在同名的 VLAN-aware Linux(或 OVS)网桥 | 低,跨节点靠物理网络的 VLAN 转发 |
| QinQ | 每个节点已有 VLAN-aware 网桥;交换机支持堆叠 VLAN(QinQ) | 中,MTU 要预留 4 字节开销 |
| VXLAN | 节点间三层可达;需要列出所有节点的对等地址,或接入一个 SDN Fabric 自动填充 | 中高,MTU 要预留 50 字节开销 |
| EVPN | 需要一个 EVPN Controller,节点上启用 FRR 服务 | 高,涉及 BGP,排错门槛最高 |
做法一:创建一个 VLAN 类型的 Zone(推荐起点)
适合你已经有一个 VLAN-aware 网桥,想让 SDN 帮你在这个网桥上快速开新的 VNet,而不用每次都手动分配 VLAN ID、更新每个节点的配置。
操作步骤
数据中心 → SDN → Zones → Create → VLAN。填写:
字段 填什么 ID Zone 的名字,例如 homelanBridge 已经在每个节点上存在的 VLAN-aware 网桥名,例如 vmbr0Nodes 这个 Zone 生效的节点范围,留空表示所有节点 数据中心 → SDN → VNets → Create,填写:字段 填什么 ID VNet 名字,最多 8 个字符,例如 iotZone 上一步建的 homelanTag 这个 VNet 对应的 VLAN ID (可选)给 VNet 加一个 Subnet:
VNets → 选中 iot → Subnets → Add,填 CIDR、网关,需要自动分配地址的话勾选 IPAM。回到
数据中心 → SDN总览页,点 Apply Configuration。
使用
创建虚拟机/容器网络时,把 Bridge 选成这个 VNet(例如 iot),效果等价于手动在网卡上打对应的 VLAN Tag,但不需要在每个节点上分别维护 VLAN 规划。
做法二:VXLAN Zone(跨节点、不依赖物理 VLAN)
适合节点之间只有三层(IP)可达,或者不方便在物理交换机上配置额外 VLAN 的场景,比如多机房、跨地域的场景。VXLAN 用 UDP(默认端口 4789)封装二层帧,本身不加密,跨公网使用建议叠加站点到站点的 VPN。
数据中心 → SDN → Zones → Create → VXLAN。- 填写 Peers Address List:列出所有参与节点的 IP 地址;如果已经配置了 SDN Fabric,可以选择用 Fabric 自动填充对等地址,不用手动维护列表。
- MTU 记得比物理链路小 50 字节(例如物理链路是 1500,这里填 1450),否则大包会在封装后被丢弃或分片,细节见 MTU 与巨型帧。
- 后续创建 VNet 和 Subnet 的步骤与 VLAN 类型一致。
做法三:QinQ Zone
适合你已经在用 VLAN,但 VLAN ID 数量(4094 个)不够用,或者要给不同租户再叠一层隔离。需要交换机支持堆叠 VLAN(802.1ad 或用 802.1q 模拟)。
关键字段:Bridge(已有的 VLAN-aware 网桥)、Service VLAN(外层标签,由 Zone 统一定义)、Service VLAN Protocol(默认 802.1q,也可选 802.1ad)、MTU(比照physical链路预留 4 字节)。VNet 里再定义内层 VLAN Tag。
做法四:EVPN Zone(复杂场景)
适合需要跨节点、跨机房的可路由三层网络,并且愿意投入学习 BGP 相关概念的场景。它需要先创建一个 EVPN Controller(关键字段:ASN、SDN Fabric 或对等地址、涉及节点),并在这些节点上启用 FRR:
sh
# 宿主机 shell,每个涉及的节点
apt install frr frr-pythontools
systemctl enable --now frrZone 本身还需要填 VRF VXLAN ID、Primary Controller、Exit Nodes 等字段,配合 SDN Fabrics 里的 BGP 或 OSPF Fabric 一起使用效果最好。这是本文覆盖的类型里复杂度最高的一种,建议先在测试集群里跑通整套流程,再考虑用到生产环境。
检查结果
sh
# 宿主机 shell,确认 VNet 对应的网桥已生成
ip link show type bridge
# VXLAN 场景确认隧道接口存在
ip -d link show type vxlan创建一台测试虚拟机,网络接到新建的 VNet,确认能拿到 Subnet 里配置的网段地址(或手动配置后能 ping 通同一 VNet 内的其他客户机)。跨节点的 Zone 类型(VLAN/QinQ/VXLAN/EVPN),要在至少两个节点上各起一台客户机测试互通,才算真正验证了跨节点能力。
常见问题
VLAN 类型的 Zone 创建后客户机连不通。 确认填写的 Bridge 名字在每一个涉及节点上都存在且是 VLAN-aware 的,某个节点上网桥名字不一致或没开 VLAN-aware 是最常见的原因。
VXLAN 场景大包传不过去,小包正常。 典型的 MTU 没扣除封装开销,回看 MTU 与巨型帧里的 50 字节说明。
EVPN Controller 一直连不上。 检查涉及节点上 frr.service 是否正常运行,以及 Controller 里填的 ASN、对等地址是否正确,这一层排错本质上是排查 BGP 邻居关系,门槛较高。
应用配置后,其他不相关的 Zone 也显示重新生成了。 这是预期行为,Apply 是集群范围、覆盖所有待生效改动的操作,不是只针对你刚编辑的那一项。
参考资料
- Software-Defined Network - Proxmox VE Wiki
- Proxmox VE Administration Guide - Software-Defined Network