如果使用了 SDN 网络,必须先安装 dnsmasq 和 frr-pythontools,再进行 SDN 网络的创建。
安装依赖
1 | apt install dnsmasq frr-pythontools -y |
建议在换源后执行此命令。这个必须执行后再创建 SDN 网络。
主 dnsmasq.service 冲突问题
安装 dnsmasq 后,会部署一个全局主服务 dnsmasq.service。它和 SDN 的 dnsmasq@.service 模板实例之间存在端口抢占问题。
为什么会产生冲突
主 dnsmasq.service 的存在原因:
为什么以前没注意到?
在 Proxmox SDN 环境中,主 dnsmasq.service 完全多余,应该永久禁用。SDN 的每个 VNet 都由自己的 dnsmasq@<vnet>.service 接管。
禁用命令(一次执行,永久生效)
1 | systemctl stop dnsmasq.service # 立即停止 |
mask 会创建一个指向 /dev/null 的符号链接,任何试图启动该服务的操作都会被阻止,这是最安全的做法。
验证
1 | systemctl status dnsmasq.service # 应显示 masked (inactive) |
之后,只有 dnsmasq@H1、dnsmasq@H2、dnsmasq@H3 这些模板实例会运行,每个实例各自绑定到对应 VNet 的网关 IP 上,互不干扰。
推荐防火墙设计(数据中心级简配方案)
防火墙规则表
| # | 方向 | 动作 | 协议 | 源端口 | 目的端口 | 说明 |
|---|---|---|---|---|---|---|
| 1 | in | ACCEPT | UDP | 68 | 67 | DHCP 服务器接收 |
| 2 | in | ACCEPT | UDP | any | 53 | DNS 查询 |
| 3 | in | ACCEPT | TCP | any | 53 | DNS 大包(可选) |

这个必须配置,保存后立即生效,H2/H3 所有网络恢复正常。
SDN-区域
Proxmox VE 的 SDN 提供了五种区域类型,分别对应不同的隔离技术和跨节点通信方案。
五种区域类型概览
| 区域类型 | 底层技术 | 作用范围 | 跨节点 | 隔离标识数量 | 依赖物理设备 | 典型场景 |
|---|---|---|---|---|---|---|
| Simple | Linux Bridge | 单节点 | 否 | 无限制(软件限定) | 无 | 单机隔离、开发测试 |
| VLAN | 802.1Q VLAN Tag | 物理网络 | 是 | 4094 个 | 交换机需支持 VLAN | 与物理网络融合、传统虚拟化 |
| VXLAN | VXLAN Overlay | Underlay 可达 | 是 | 1600 万个 | 仅要求 IP 可达 | 大规模云、多租户、跨机房 |
| Q-in-Q | 802.1ad Provider Bridge | 物理网络 | 是 | 两层 VLAN:每层 4094,共约 1600 万 | 交换机需支持 Q-in-Q | 运营商环境、多租户共享物理线路 |
| EVPN | VXLAN + BGP EVPN | Underlay 可达 | 是 | 1600 万个 | IP 可达 + BGP 对等体 | 现代数据中心、多节点、高级路由 |
Simple(简单区域)
- 工作原理:在节点本地创建独立的 Linux Bridge,虚拟机桥接到该网桥。没有隧道封装,也没有 VLAN 标签
- 隔离性:每个 Simple 区域就是一个独立的软件交换机,不同区域间天生隔离
- 跨节点:不支持
- 优点:简单、性能好、无网络依赖
- 适用:单节点环境、开发和功能测试
VLAN(虚拟局域网区域)
solar:layers-bold-duotone
- 工作原理:直接使用 802.1Q VLAN 标签,在以太网帧中插入 VLAN ID
- 隔离性:由交换机按 VLAN ID 隔离,标签范围 1-4094
- 跨节点:是,所有连接到同一交换机、同一 VLAN 的节点都能互通
- 依赖:物理交换机必须配置相应的 VLAN 并允许通过(Trunk 口)
- 适用:需要与现有物理网络打通的场景
VXLAN(虚拟可扩展局域网区域)
solar:cloud-bold-duotone
- 工作原理:将二层的以太网帧封装在 UDP 包中(默认端口 4789),通过标准 IP 网络传输
- 隔离性:VNI 数量可达 1600 万个
- 跨节点:是,只要节点之间 IP 三层可达即可
- 优点:摆脱了物理网络限制,扩展性极强
- 适用:需要跨机架、跨数据中心的大规模虚拟网络
Q-in-Q(802.1ad 双重标签)
solar:layers-minimalistic-bold-duotone
- 工作原理:在以太网帧中打两层 VLAN 标签(S-VLAN + C-VLAN)
- 隔离性:双重标签约 1600 万个隔离通道
- 适用:运营商将多个客户 VLAN 聚合到一条物理线路上时使用
EVPN(以太网虚拟专用网络)
solar:network-bold-duotone
- 工作原理:在 VXLAN 基础上引入 BGP EVPN 作为控制平面,解决 ARP 广播问题
- 优点:支持多活网关、快速收敛、多租户复杂路由策略
- 缺点:架构复杂,配置门槛高
- 适用:中大型生产环境,需要跨多个节点构建弹性、可扩展的虚拟网络
选型建议
Simple
单节点开发/测试
省心省力
VLAN
与物理网络混跑
VLAN 数量 < 200
VXLAN
大规模虚拟化
不想受物理网络限制
Q-in-Q
运营商环境
双重 VLAN 需求
EVPN
中大型生产集群
跨多节点可扩展
SDN VNet 属性
在 Simple 区域中,VNet 有两个关键属性:
端口隔离 (isolate-ports)
需要虚拟机关机再开机才能生效。
VLAN 感知 (VLAN aware)
作用:将 Linux Bridge 配置为 VLAN-aware 模式,允许网桥识别和处理带有 VLAN 标签的帧,实现单网卡多 VLAN(Trunk 模式)。
当 VNet 设置为 VLAN-aware 时,PVE SDN 不允许在该 VNet 上直接附加任何 Subnet。原因是网桥不再代表一个单一广播域,PVE 无法确定网关 IP 属于哪个 VLAN。
直观对比
端口隔离 vs VLAN 感知 table
| 特性 | 端口隔离 (isolate-ports) | VLAN 感知 (VLAN aware) |
|---|---|---|
| 二层效果 | VM 之间禁止直接通信 | 允许 VM 发送带标签的帧 |
| 可附加子网 | 可以 | 不可以 |
| DHCP/DNS 自动配置 | 由 PVE 自动集成 | 需外部提供或手动配置 |
| 典型用途 | 安全隔离、云风格网络 | 让 VM 自己做 Trunk 或多 VLAN |
| 底层实现 | bridge isolate on | bridge vlan_filtering 1 |
