跳到主要内容

VPC 交换机

VPC 交换机是 QVMConsole 虚拟网络的核心组件。按上行拓扑划分,交换机有三种形态:

  • NAT 模式:接入系统 OVS 网桥(默认 br-ovs),内置 dnsmasq 提供 DHCP/DNS 并经 NAT 出网
  • 物理直通模式:绑定物理网卡(uplink),虚拟机流量经 OVS 直通网桥进出物理网络;多个交换机可共享同一物理网卡并按 VLAN ID 隔离
  • 空交换机(独立二层域):无上行、无 DHCP 的受信任二层域,IP 由外部网络或虚拟机自行管理,常用于软路由 LAN 或审计/镜像目标

通过 VPC 交换机,管理员可以为不同的租户或业务创建独立的虚拟网络环境,实现网络资源的精细化管理和流量控制。

交换机架构

每个用户的账户激活时会自动获得一个系统基础网络(系统交换机,不可编辑删除),作为该用户的缺省接入网络。

配额概览

交换机提供流量和带宽两个维度的配额管理,配额来自用户级配额(max_traffic_down/upmax_bandwidth_down/up):

配额类型说明单位
下行流量每月下行流量配额GB/月
上行流量每月上行流量配额GB/月
下行带宽下行带宽配额Mbps
上行带宽上行带宽配额Mbps

GET /vpc/quota 返回用户配额、所有交换机已分配合计与剩余额度(管理员可查询指定用户):

max_traffic_down / allocated_traffic_down / remaining_traffic_down
max_traffic_up / allocated_traffic_up / remaining_traffic_up
max_bandwidth_down / allocated_bandwidth_down / remaining_bandwidth_down
max_bandwidth_up / allocated_bandwidth_up / remaining_bandwidth_up
分配规则
  • 配额值为负数会被拒绝
  • 当用户某方向配额为有限值(大于 0)时,交换机该方向配额必须大于 0(不允许在有限用户配额下设置"不限")
  • 所有交换机配额合计不得超过用户配额
  • 用户配额为 0(不限)时,交换机可自由分配

交换机配置项

交换机创建/编辑表单分为基本信息、动态网络配置、桥接安全、配额设置四个区块。

基本信息

配置项说明必填默认行为
所属用户交换机归属(仅管理员可指定)默认当前操作者
名称交换机唯一标识(空白自动转为短横线)同一用户内唯一
物理上行网卡选择后进入物理直通模式(仅管理员可选)留空时按 NAT/空交换机处理
内置 DHCP是否由面板托管 DHCP(选择上行后才可配置)关闭

NAT 模式(系统上行 + 托管 DHCP)

配置项说明必填默认行为
子网 CIDRIPv4 子网自动从子网池分配(默认 10.200.x.0/24KVM_VPC_SUBNET_PREFIX 可配置)
网关地址子网网关自动取子网内第一个 IP
DHCP 范围自动分配 IP 的范围自动计算(/24 子网即 .10 ~ .250
月下行/上行流量月流量配额(GB)0=不限(受用户配额约束)
下行/上行带宽带宽配额(Mbps)0=不限(受用户配额约束)

自定义 CIDR 校验规则:仅支持 IPv4;掩码范围 /16 ~ /29;全局唯一且不得与宿主机网段冲突;网关必须位于子网内且不能是网络/广播地址;DHCP 范围必须位于子网内且起始不大于结束。子网四项(CIDR/网关/DHCP 起止)必须同时填写或同时留空

DNS 与内部 VLAN

NAT 交换机的 DHCP DNS 使用全局配置 KVM_VPC_DNS(默认 223.5.5.5,223.6.6.6),每交换机没有独立 DNS 配置。NAT 交换机使用系统自动分配的内部 VLAN ID(KVM_VPC_VLAN_START~KVM_VPC_VLAN_END,默认 100-4094),不与桥接 VLAN 混用。

物理直通模式

物理直通交换机将虚拟机直接接入物理二层网络(IP 由上级路由器分配),仅管理员可创建

配置项说明必填默认值
物理上行网卡直通绑定的物理网卡-
桥接 VLAN ID0 = 不打 VLAN 标签;1-4094 = 打指定 VLAN 标签0
迁移宿主机 IP物理口承载宿主机地址或默认路由时,将 IP/网关/metric/DNS 迁移到网桥关闭
上行网关自动检测不到默认路由时手动指定的物理出口网关(托管 DHCP 时需要)视情况自动检测
桥接安全混杂模式 / MAC 地址更改 / 伪传输三个开关全部禁用
IPv6 端口防护ipv6_security_enabled + 可信 IPv6 前缀(需全局端口安全开启)禁用
流量/带宽配额同 NAT 模式0=不限

物理直通模式没有 CIDR/DHCP 范围配置(关闭内置 DHCP 时置空)。

共享直通网桥

多个物理直通交换机可以共享同一物理上行网卡,实现单物理口上的多租户 VLAN 隔离:

  • 首个交换机创建时拥有该直通网桥(owns_bridge),负责网桥维护、宿主机 IP 迁移与开机恢复;后续交换机共享同一网桥
  • 共享上行的交换机必须配置互不相同的非零桥接 VLAN IDbridge_vlan_id 1-4094),VLAN 0 不打标签,不能与其他交换机共享同一物理口
  • 删除拥有网桥的交换机时,网桥所有权会自动移交给同上行上的其他交换机(若不存在则清理网桥)

网络概览的物理网卡列表会展示每张网卡的直通占用情况(所属交换机名与已用 VLAN ID 列表),创建交换机时可据此选择空闲 VLAN。

空交换机

不选择物理上行、且关闭内置 DHCP 的交换机是空交换机:拥有自己的 OVS 网桥但没有上联网卡,也不提供 DHCP,是一个受信任的独立二层域。

  • 空交换机常用于软路由 LAN 口、端口镜像目标或纯二层互联场景
  • 空交换机的网口不进入端口安全的链路隔离(创建后立即可用)
  • 空交换机内的 IP 分配由外部设备或虚拟机自行负责

编辑与重配置

规则说明
系统基础网络不可编辑、不可删除
子网 CIDR / 网关(托管 DHCP)编辑时受 CIDR 校验规则约束
非拓扑字段(名称、配额、桥接安全、IPv6 防护等)通过 PUT /vpc/switches/:id 直接更新
拓扑字段(上行网卡、DHCP 开关、子网、VLAN 等)通过重配置接口提交异步任务(见下文)
所属用户仅管理员可变更

交换机重配置(异步任务)

修改上行网卡、内置 DHCP 开关、子网或桥接 VLAN 等拓扑字段时,前端会改走 POST /vpc/switches/:id/reconfigure

编辑后系统会重放绑定虚拟机的运行态配置、按新配额重新评估限速状态,并触发端口安全协调。

旧交换机迁移为空交换机

历史版本创建的旧式用户交换机会被标记 legacy_migration_required,在交换机列表中以提示形式展示(仅管理员可见「迁移为空交换机」操作)。迁移会提交一次重配置:清空上行、关闭 DHCP,把旧交换机转换为独立二层(空)交换机,保留绑定关系不受影响。

运行态实现原理

NAT 交换机运行时

  • 每个 NAT 交换机在 br-ovs 上创建 internal 端口 vpcsw<ID> 作为网关
  • 每交换机独立运行一个 dnsmasq 实例(DHCP 范围、静态绑定、租约文件相互隔离)
  • 出网通过 iptables MASQUERADE 与 FORWARD 规则放行
  • 系统基础网络(内部 VLAN 为 0)不创建独立网关与 dnsmasq

物理直通交换机运行时

  • 首个直通交换机负责创建 OVS 直通网桥并把上联网卡加入网桥;开启「迁移宿主机 IP」时同步迁移地址/网关/DNS 并生成开机恢复
  • 物理上行且开启 DHCP 的交换机会创建专属策略路由,保证出站流量经指定物理口
  • 关闭 DHCP 时保留最近一次托管网段(CIDR/网关/DHCP 范围),重新启用可直接复用
  • 面板启动时会清理数据库已删除但 OVS 上残留的交换机端口与 dnsmasq(孤儿清理)

虚拟机网口 VLAN

虚拟机网口的 VLAN 标签取自所属交换机:NAT 交换机使用系统分配的内部 VLAN,物理直通交换机使用配置的桥接 VLAN ID(bridge_vlan_id)。VLAN 同时写入持久化 XML(<vlan><tag id='...'/></vlan>)与运行态 OVS 端口 tag,重启后保持一致。详见网络配置

流量统计与限速

  • 流量统计:按月聚合绑定虚拟机监控记录(vm_stats_records)的网络字节增量;每月 1 日自动重置,历史月度记录保留 12 个月
  • 超限限速:当月有效流量达到配额后标记为受限(is_limited_down/up),带宽被压到惩罚值 1Mbps,直至重置流量或提高配额
  • 带宽实现:NAT 交换机下行用网关端口 TC 限速、上行用 OVS meter;子网内互访流量(源和目的都在子网内)走快速路径不限速

OpenFlow 与 meter 细节

说明
流表 Cookiefnv64a("kvm-console-vpc-switch:<id>") 前缀,便于按交换机批量清理
meter ID 空间交换机带宽占用 150000-189999(VM 级带宽为 100000-139999,端口安全为 1000-99999)
流表位置端口安全关闭时使用 table 0;端口安全开启时带宽流落在 table 30(与端口安全的 table 10/20 协同)
源 MAC 限制物理直通模式下按下文「桥接安全」策略安装

桥接安全策略

物理直通交换机提供三个安全开关(界面称「桥接安全」),全部禁用为最严格的多租户安全配置:

混杂模式(allow_promiscuous)

控制虚拟机网卡是否可以接收泛洪到它的非单播流量:

状态OVS 行为安全风险
禁用(默认)ovs-ofctl mod-port <bridge> <port> no-flood,端口不参与泛洪防止嗅探攻击
启用mod-port ... flood,端口参与泛洪可用于网络监控,存在嗅探风险

MAC 地址更改与伪传输(allow_mac_change / allow_forged_transmits)

这两个开关共同决定是否为端口安装源 MAC 严格匹配流表

  • 只要任意一个开关为禁用,系统就会为该端口安装源 MAC 过滤规则:
    • priority=90:仅放行源 MAC 与网口 MAC 一致的数据包(可叠加带宽 meter)
    • priority=85:丢弃其余源 MAC 的数据包(阻止伪造源 MAC)
  • 两个开关都启用时不安装过滤规则,虚拟机可自由更换/伪造 MAC
  • 网口允许地址(端口安全的 allowed IPv4/IPv6)与源 MAC 过滤协同工作,详见 端口安全

IPv6 端口防护

仅物理直通交换机可配置,且需要全局端口安全功能处于开启状态:

配置项说明
IPv6 防护开关启用后按可信前缀严格校验该端口的 IPv6 流量
可信 IPv6 前缀允许该端口使用的 IPv6 前缀列表(开启防护时必填,支持逗号/分号/换行分隔)

安全策略选择建议

场景推荐配置
多租户生产环境三开关全部禁用 + IPv6 防护按需开启
网络监控/抓包仅启用混杂模式
测试开发环境按需放宽,不建议生产使用
安全风险提示

启用杂模式、MAC 地址更改或伪传输可能带来网络嗅探、ARP 欺骗、MAC 泛洪等风险。除非有明确业务需求,建议保持全部禁用。

交换机操作

创建交换机

  1. 管理员:选择所属用户 → 输入名称
  2. 配置配额(月流量 / 带宽)
  3. 选择上行拓扑:NAT(留空物理上行 + 开启 DHCP)、物理直通(选择网卡 + VLAN + 安全策略)或空交换机(留空物理上行 + 关闭 DHCP)
  4. 提交后自动分配内部 VLAN / 子网,创建交换机并应用运行态

重置流量

将交换机的月度流量统计清零并解除超限限速(仅管理员):

  • 重置把当前已统计的原始流量记为基线偏移(offset),流量统计归零
  • 若交换机处于超限限速状态,重置后立即恢复正常带宽

删除交换机

条件说明
系统基础网络受保护,不可删除
存在绑定虚拟机需确认强制删除:先解绑并移除虚拟机对应网口,再删除交换机
删除后清理 ACL 规则与运行态资源(dnsmasq、网关端口、流表等);拥有直通网桥的交换机会移交网桥所有权或清理网桥

API 接口

方法路径说明
GET/vpc/switches交换机列表
POST/vpc/switches创建交换机
PUT/vpc/switches/:id更新交换机(非拓扑字段)
POST/vpc/switches/:id/reconfigure重配置交换机拓扑(异步任务)
GET/vpc/switches/:id/vms查询交换机下虚拟机
DELETE/vpc/switches/:id删除交换机
POST/vpc/switches/:id/traffic/reset重置月度流量
GET/vpc/quota用户 VPC 配额查询

交换机与虚拟机

关系说明
连接关系虚拟机网口通过 VPC 绑定记录(vpc_vm_bindings)连接到交换机,支持多网口(interface_order)
IP 分配NAT 模式由交换机 dnsmasq 分配;物理直通由上级路由器分配;空交换机自行管理
可见性非管理员只能看到自己的 NAT 交换机与系统基础网络

最佳实践

  1. 按业务划分:为不同业务创建独立交换机,便于隔离与配额管理
  2. 子网规划:NAT 子网池默认 10.200.x.0/24,如需更大地址空间可自定义 CIDR(不超过 /16)
  3. 共享上行:单物理口承载多租户时,为每个租户分配独立的非零桥接 VLAN ID,避免二层串扰
  4. 配额预留:为关键业务预留流量与带宽配额余量,避免超限触发 1Mbps 惩罚限速
  5. 桥接安全:多租户环境保持三开关全部禁用;监控需求单独建交换机放开
  6. 端口镜像:审计与抓包场景请使用空交换机作为镜像目标,详见端口镜像