找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3215

积分

0

好友

455

主题
发表于 8 小时前 | 查看: 3| 回复: 0

你是不是也被 PVE 集群里这些 SDN 名词搞懵了?Zone、VNet、IPAM、VNet Firewall……听起来高大上,实际用起来却一头雾水?别担心,这篇教程就是为你准备的。我们会用最接地气的方式,把这些概念和它们之间的配合关系一次性讲清楚。

先打个比方,秒懂各组件

想象一下,你要开一家公司,需要布置办公场地和网络。PVE 的 SDN 组件完全可以对应起来理解:

PVE里的组件 对应现实中的 一句话说明
Zone 整栋写字楼 决定这栋楼用哪种网络技术(VLAN/VXLAN)
VNet 楼里的一层办公室 具体的一层,与其他层是隔离的
Subnet 这层楼的门牌号范围 比如这层房间号是 100-199
IPAM 前台登记系统 自动分配房间号,确保不重复、不冲突
VNet Firewall 这层楼的门禁系统 控制谁能进、谁能出,规则由你定

是不是清晰多了?下面我们逐一展开,详细说说每个组件到底怎么用。

Zone:你的“网络大楼”

Zone 是 SDN 的地基。你得先“盖好楼”,才能在里面划分楼层和房间。

PVE 支持几种“楼型”,也就是 Zone 的类型:

  • Simple:简易板房。仅适用于测试环境,生产环境不建议使用。
  • VLAN:标准写字楼。需要物理交换机配合(端口需配置为 Trunk 模式)。
  • VXLAN:跨园区的连锁办公楼。适合多节点、跨物理网络的集群,能创建 overlay 网络。
  • EVPN:智能大厦。功能强大但配置复杂,通常用于大型、自动化程度高的网络。

新手建议:先从 VLAN 类型开始入手。Simple 过于简陋,而 VXLAN 和 EVPN 可以等熟悉基础后再探索。

创建一个 Zone 时,你需要配置:

  • 使用哪张物理网卡(例如 vmbr1)。
  • 如果是 VLAN 类型,需要指定 VLAN 标签的范围(例如 10-100)。
  • 是否需要与其他 Zone 建立连接(Peering)。

VNet:楼里的“具体一层”

Zone 建好后,就需要划分具体的办公区域了。一个 Zone 里可以创建多个 VNet,它们彼此之间默认是完全隔离的

举个例子:

  • Zone 名叫“公司总部”。
  • VNet 10 是“研发部”(对应 VLAN 10)。
  • VNet 20 是“财务部”(对应 VLAN 20)。
  • VNet 30 是“市场部”(对应 VLAN 30)。

每个 VNet 在 PVE 节点上会生成一个对应的虚拟网桥(例如 vnet10vnet20)。虚拟机连接到哪个 VNet,就相当于进入了哪个“部门”。

关键点:不同 VNet 之间的网络默认是不通的!研发部的虚拟机无法直接访问财务部,除非你配置路由、对等连接(Peering)或者使用多网卡。

Subnet:门牌号怎么编排

VNet(这一层办公室)有了,接下来得给每个“工位”编号,这就是 Subnet(子网)负责的事。

配置非常简单,主要就是三项:

  • 网段:例如 192.168.10.0/24
  • 网关:通常是网段的第一个可用 IP(例如 .1),它是这层楼对外的“大门”。
  • DNS:虚拟机用来解析域名的服务器地址。

一个 VNet 下可以配置多个 Subnet。例如,你可以划分 192.168.10.0/24 给虚拟机使用,再划一个 10.0.0.0/24 给容器使用。但对于新手,建议一个 VNet 只配一个 Subnet,足够清晰且易于管理。

IPAM:前台小姐姐自动派号

这是最让人省心的功能,强烈建议开启!

在传统方式中,创建虚拟机时需要手动填写 IP 地址,很容易出错导致冲突。开启 IPAM(IP 地址管理)后,流程变成这样:

  1. 创建虚拟机时,在网络配置中将 IPv4 地址栏留空。
  2. PVE 会自动从关联的 Subnet 地址池中挑选一个未被使用的 IP。
  3. 系统会自动记录这个 IP 分配给了哪台虚拟机。
  4. 删除虚拟机时,IP 地址会被自动回收。

IPAM 有三种工作模式:

  • Disabled:不使用 IPAM,完全手动配置(容易出错)。
  • PVE:使用 PVE 内置的 IPAM 系统,推荐新手选择这个
  • External:对接外部 IPAM 系统(如 phpIPAM),属于企业级用法。

新手操作:创建 Subnet 时,直接在 IPAM 下拉菜单选择“PVE”。之后创建虚拟机时,网络选择 SDN 对应的 VNet,IP 配置选择“自动获取”,一切就搞定了。

VNet Firewall:这层楼的“门禁系统”

传统防火墙的规则通常基于物理网卡(例如控制 vmbr0 的进出流量)。而 SDN 的 VNet Firewall 粒度更细——它直接作用在 VNet 层面。

它能做什么?

  • 控制同一 VNet(如研发部)内虚拟机之间的访问,你可以允许或禁止特定机器互访。
  • 禁止一个 VNet(研发部)访问另一个 VNet(财务部)。
  • 只允许带有特定标签的虚拟机开放特定端口(例如,只允许标记为“Web服务器”的机器开放 80/443 端口)。

它比传统防火墙强在哪里?

  • 策略跟随 VNet:规则在集群内自动同步,无需在每个节点上单独配置。
  • 配置可视化:通过 Web 界面点选即可完成配置,无需手动编写复杂的 iptables 规则。

注意:VNet Firewall 和 PVE 节点的本地防火墙是两套独立的系统。建议只启用其中一套(推荐 VNet Firewall),避免规则冲突,让排查问题变得更复杂。

工作流程:一张图看懂它们如何协同

假设你按以下结构创建了 SDN 网络:

Zone(VLAN类型,使用物理网卡vmbr1)
    └── VNet “研发部”(ID 10,对应VLAN 10)
            └── Subnet 192.168.10.0/24
                    ├── 网关:192.168.10.1
                    ├── IPAM:PVE(自动分配)
                    └── Firewall规则:禁止访问财务部网络
                            ├── VM1:自动获得192.168.10.10
                            ├── VM2:自动获得192.168.10.11
                            └── VM3:手动指定192.168.10.100

    └── VNet “财务部”(ID 20,对应VLAN 20)
            └── Subnet 192.168.20.0/24
                    └── ...

整个工作流程可以概括为:

  1. Zone 定基调:决定网络使用 VLAN 模式,并通过 vmbr1 物理网卡上行。
  2. VNet 划圈子:在 Zone 内创建独立的“研发部”(VLAN 10)和“财务部”(VLAN 20)。
  3. Subnet 分IP:为每个 VNet 划分 IP 地址段(192.168.10.x/20.x)。
  4. IPAM 自动派号:VM1、VM2 启动时自动获取 IP,VM3 使用固定 IP。
  5. Firewall 守门:根据规则,“研发部”的虚拟机无法访问“财务部”的网络。

新手上手三步走

第一步:创建 Zone(盖楼)
路径:数据中心 -> SDN -> Zones -> 创建

  • 类型:选择 VLAN
  • 节点物理接口:选择你拥有上行链路的节点和网桥(例如 vmbr1

第二步:创建 VNet 和 Subnet(分层+分号)
路径:数据中心 -> SDN -> VNets -> 创建

  • Zone:选择你刚创建的 Zone。
  • VNet ID:填写一个数字标识,例如 10
  • 创建完成后,点击这个 VNet 进入详情页,添加 Subnet。填写网段(如 192.168.10.0/24),配置网关和 DNS,最关键的是将 IPAM 设置为 PVE

第三步:创建虚拟机时使用 SDN 网络
在创建虚拟机的“网络”配置环节:

  • 桥接:选择你刚创建的 VNet(例如 vnet10)。
  • IPv4/CIDR:选择 Static,但将地址输入框留空
  • 启动虚拟机后,查看其“摘要”页面,你会发现系统已经自动为其分配了 IP 地址。

避坑指南(来自实践的经验)

🚨 坑1:虚拟机连接了 VNet 但获取不到 IP

  • 检查 Subnet 配置中的 IPAM 是否已启用(并选择 PVE)。
  • 检查 Subnet 的网关地址是否已正确配置。
  • 如果 Zone 是 VLAN 类型,请确认连接 PVE 节点的物理交换机端口是否已配置为 Trunk 模式,并允许相应的 VLAN 通过。

🚨 坑2:两个不同 VNet 下的虚拟机无法互相 Ping 通

  • 这是正常现象!不同 VNet 之间默认就是隔离的
  • 如果需要互通,你有几个选择:配置 VNet 之间的 Peering;在某个 VNet 中部署一个软路由器做转发;或者给虚拟机配置多张网卡,分别接入不同的 VNet。

🚨 坑3:启用 VNet Firewall 后所有网络都断了

  • VNet Firewall 的默认策略可能是“拒绝所有”。你需要添加明确的允许规则
  • 在排查网络问题时,可以暂时关闭 VNet Firewall 功能,以判断问题是否由防火墙规则引起。

🚨 坑4:出现 IP 地址冲突

  • 如果你手动为虚拟机指定了一个 IP,但这个 IP 没有在 IPAM 的管理范围内,PVE 可能会在下次分配时将这个 IP 再分配给其他虚拟机。
  • 建议:在同一个 Subnet 下,要么全部使用 IPAM 自动分配,要么全部手动管理并做好记录,尽量避免混用。

总结

用一句话来概括:Zone 是地基,VNet 是房间,Subnet 是门牌,IPAM 是前台,Firewall 是保安。

按照这个逻辑顺序进行配置,即使是新手也能逐步掌握 PVE SDN 的核心用法。如果在配置过程中遇到问题,可以多查看 PVE 节点上 /etc/network/interfaces.d/sdn 这个目录下的文件,里面记录了 SDN 模块生成的实际网络配置,是排查问题的重要依据。

希望这篇指南能帮助你顺利搭建和管理 PVE 的软件定义网络。对于更复杂的网络场景和深入的防火墙策略,你可以在云栈社区找到更多相关的讨论和实战案例。




上一篇:借助 Cloudflare Workers 构建垂直微前端架构,实现团队独立与统一体验
下一篇:Go bytes包源码深度解析:Equal、Index、Replace等核心函数实现与优化
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-3 19:09 , Processed in 0.277896 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表