Proxmox VE 的 SDN (Software Defined Networking) 是从 8.1 版本开始正式引入(之前是实验性插件)的重磅功能。它允许你在数据中心级别(Datacenter)统一管理跨节点的复杂网络拓扑,而不再需要去每一台主机的 /etc/network/interfaces 里肉搏。

既然你已经在玩 PVE HA 集群和 Debian 13,SDN 对你来说不是“选修课”,而是管理多节点架构的“必杀技”。


1. PVE SDN 的核心概念

在配置之前,你需要理解这四个层级:

  • Zone (区域): 网络类型。比如 Simple(单机)、VLAN(物理交换机支持)、QinQ、以及最强大的 VxLAN(跨节点二层隧道)。
  • VNet (虚拟网络): 相当于一个“虚拟交换机”。你给虚拟机分配网卡时,直接选这个 VNet 名字。
  • Subnet (子网): 定义这个 VNet 下的 IP 范围、网关和 DHCP 配置。
  • IPAM (IP 地址管理): 自动分配 IP。PVE 自带一个简单的,也可以对接外置的 NetBox。

2. SDN vs. WireGuard:本质区别与优势

虽然两者都能“连接网络”,但它们工作的维度完全不同:

特性PVE SDN (以 VxLAN 为例)WireGuard (VPN)
工作层级Layer 2 (二层)。支持广播、组播、非 IP 协议。Layer 3 (三层)。只负责 IP 包转发。
性能极高。基于内核 VxLAN 模块,支持硬件卸载,内网带宽几乎无损。较高。虽然快,但存在加密解密开销,受限于 CPU 性能。
配置粒度宿主机级。虚拟机完全不知道 SDN 的存在,像插网线一样简单。系统级。每个 VM 内部都需要装客户端、生成密钥、写配置。
集群集成完美。VM 迁移(Migration)到另一台 PVE 后,网络自动无缝漂移。麻烦。迁移后可能需要重新处理路由或保持连接。
主要用途跨物理节点构建统一的虚拟局域网。跨公网或不信任网络构建加密隧道。

简单一句话: 如果你的 PVE 节点都在内网(或有专线),用 SDN;如果你的节点跨越了公网 VPS,用 WireGuard 做底层,SDN 跑在 WireGuard 隧道上面。


3. 进阶经验与实战技巧

A. 针对你的 HA 集群:选 VxLAN

你有多个节点,VxLAN 是最优解。它通过 UDP 封装,让不同物理机上的 VM 感觉自己连在同一个物理交换机上。

  • 技巧: VxLAN 需要一个 Peer Address List(所有节点的内网 IP)。如果有 3 个以上节点,建议开启 EVPN 控制平面,它能自动处理路由发现,避免手动维护 IP 列表。

B. 必备的软件包

SDN 默认没完全装好,你需要手动安装这个包才能在 Web 界面看到完整功能:

apt update && apt install libpve-network-perl
# 安装后需要重启 pve-cluster 服务或重启节点
systemctl restart pve-firewall pvestatd

C. IPAM 与 DHCP 的妙用

你可以为不同的业务(如 Seafile 存储、Mastodon 数据库)划分不同的 VNet,并在 SDN 里开启 DHCP:

  • 经验: 这样你新建 VM 时,不需要手动进系统改 /etc/network/interfaces,开机即联网,配合 Cloud-Init 简直是自动化运维神器。

D. 安全隔离 (Isolation)

在 SDN 的 Zone 配置里,有一个 bridge_ports 的选项。如果你不填,这个 Zone 就是一个纯虚拟隔离网络,里面的 VM 只能互相通信,无法上外网。这非常适合存放你那些敏感的数据库(Postgres/Redis),然后通过一个“跳板机”或者“双网卡 VM”来对外提供服务。


4. 你的“最佳实践”建议

考虑到你正在管理 Seafile 和 Mastodon,你可以这样规划:

  1. 管理 Zone (WireGuard): 保持现在的 wg1,用于你从外网远程操作 PVE 宿主机。
  2. 业务 SDN Zone (VxLAN): 创建一个名为 prod_vnet 的二层网络。将你的 Seafile、Mastodon、Discourse 全部挂在这个 VNet 下。

    • 优势: 哪怕你把 Seafile 容器从节点 A 迁移到节点 B,它的内网 IP 永远不变,服务不会中断。
  3. DB 专属隔离 Zone: 把数据库放在一个没有外部网关的 SDN 子网里,只允许应用服务器访问。

注意: 每次在 Web 界面修改 SDN 配置后,记得点击那个蓝色的 「Apply」 按钮,否则配置不会下发到各个节点。