VPC 交换机
VPC 交换机是 QVMConsole 虚拟网络的核心组件,基于 OVS 网桥实现二层网络隔离。通过 VPC 交换机,管理员可以为不同的租户或业务创建独立的虚拟网络环境,实现网络资源的精细化管理和流量控制。
交换机架构
配额概览
VPC 交换机提供流量和带宽的配额管理功能,帮助管理员合理分配网络资源。
配额统计信息
| 配额类型 | 说明 | 单位 |
|---|---|---|
| 下行流量 | 从外部网络下载的数据量 | GB/月 |
| 上行流量 | 向外部网络上传的数据量 | GB/月 |
| 下行带宽 | 从外部网络下载的最大速率 | Mbps |
| 上行带宽 | 向外部网络上传的最大速率 | Mbps |
配额状态显示
| 状态 | 含义 | 处理建议 |
|---|---|---|
| 正常 | 已分配配额在限制范围内 | 无需操作 |
| 接近上限 | 已分配配额接近总配额 | 考虑扩容或优化分配 |
| 超限 | 已分配配额超过总配额 | 立即调整配额分配 |
合理分配流量和带宽配额是确保网络服务质量的关键。建议为关键业务预留足够的配额余量。
交换机配置项
基础配置
| 配置项 | 说明 | 必填 | 默认值 |
|---|---|---|---|
| 名称 | 交换机的唯一标识名称 | 是 | - |
| 目标网桥 | 绑定的 OVS 网桥 | 是 | br-ovs |
| 桥接 VLAN ID | VLAN 标识,用于网络隔离 | 是 | - |
VLAN ID 说明
| 范围 | 用途 | 说明 |
|---|---|---|
| 0 | 无 VLAN | 不使用 VLAN 隔离 |
| 1-4094 | 标准 VLAN | 用于租户间网络隔离 |
每个 VPC 交换机分配独立的 VLAN ID,通过 VLAN 标签实现租户间的网络隔离。不同 VLAN 的虚拟机无法直接通信,确保网络安全。
安全策略配置
| 策略 | 说明 | 默认值 |
|---|---|---|
| allow_promiscuous | 混杂模式,允许网卡接收所有数据包 | 禁用 |
| allow_mac_change | 允许修改 MAC 地址 | 禁用 |
| allow_forged_transmits | 允许伪造源 MAC 地址的数据包 | 禁用 |
安全策略说明
除非有特殊需求,建议保持所有安全策略为禁用状态。启用这些策略可能带来安全风险,如 ARP 欺骗、中间人攻击等。
流量配额管理
月度流量配额
| 配置项 | 说明 | 单位 | 范围 |
|---|---|---|---|
| 月下行流量 | 每月允许的最大下行流量 | GB | 0-无限 |
| 月上行流量 | 每月允许的最大上行流量 | GB | 0-无限 |
带宽配额
| 配置项 | 说明 | 单位 | 范围 |
|---|---|---|---|
| 下行带宽 | 最大下行带宽限制 | Mbps | 0-无限 |
| 上行带宽 | 最大上行带宽限制 | Mbps | 0-无限 |
流量配额工作原理
交换机操作
创建交换机
创建 VPC 交换机时需要配置以下参数:
| 步骤 | 配置项 | 说明 |
|---|---|---|
| 1 | 名称 | 输入交换机名称 |
| 2 | 目标网桥 | 选择绑定的 OVS 网桥 |
| 3 | VLAN ID | 配置 VLAN 标识 |
| 4 | 安全策略 | 设置安全策略选项 |
| 5 | 流量配额 | 配置月度流量限制 |
| 6 | 带宽配额 | 配置带宽限制 |
编辑交换机
编辑交换机时可以修改以下配置:
| 可修改项 | 说明 | 限制 |
|---|---|---|
| 名称 | 交换机标识 | 需保持唯一 |
| VLAN ID | VLAN 标识 | 需避免冲突 |
| 安全策略 | 安全策略选项 | - |
| 流量配额 | 月度流量限制 | - |
| 带宽配额 | 带宽限制 | - |
修改 VLAN ID 可能导致网络中断,建议在业务低峰期进行操作。已连接的虚拟机需要重新配置网络。
删除交换机
删除交换机前需要满足以下条件:
| 条件 | 说明 |
|---|---|
| 无连接的虚拟机 | 交换机上不能有虚拟机连接 |
| 无关联的安全组 | 交换机不能被安全组规则引用 |
| 确认删除 | 需要二次确认删除操作 |
重置流量
重置流量功能用于将交换机的流量统计清零:
| 操作 | 说明 | 适用场景 |
|---|---|---|
| 重置下行流量 | 清零下行流量统计 | 月初重置配额 |
| 重置上行流量 | 清零上行流量统计 | 月初重置配额 |
| 重置全部流量 | 清零所有流量统计 | 配额周期重置 |
限速状态检测
当流量或带宽超过配额限制时,系统会自动启用限速机制。
限速触发条件
| 条件 | 触发阈值 | 限速方式 |
|---|---|---|
| 月流量超限 | 已用流量 ≥ 配额流量 | 限制带宽至最低值 |
| 带宽超限 | 实时带宽 ≥ 配额带宽 | 限制至配额带宽 |
限速状态显示
| 状态 | 图标 | 含义 | 处理建议 |
|---|---|---|---|
| 正常 | 绿色 | 流量和带宽在配额范围内 | 无需操作 |
| 流量限速 | 黄色 | 月流量已超限,正在限速 | 重置流量或增加配额 |
| 带宽限速 | 橙色 | 实时带宽超限,正在限速 | 增加带宽配额 |
限速会显著影响虚拟机的网络性能。建议提前规划好流量和带宽配额,避免业务高峰期触发限速。
VLAN 隔离原理
VPC 交换机通过 VLAN 技术实现租户间的网络隔离:
VLAN 隔离架构
VLAN 隔离优势
| 优势 | 说明 |
|---|---|
| 网络隔离 | 不同租户的虚拟机完全隔离 |
| 安全增强 | 防止跨租户的网络攻击 |
| 资源独立 | 每个 VLAN 独立的广播域 |
| 灵活配置 | 可根据需求调整 VLAN 划分 |
交换机与网桥关系
VPC 交换机与 OVS 网桥的关系如下:
| 关系 | 说明 |
|---|---|
| 绑定关系 | 每个交换机必须绑定一个 OVS 网桥 |
| 多对一 | 多个交换机可以绑定同一个网桥 |
| VLAN 隔离 | 通过 VLAN ID 在同一网桥上实现隔离 |
| 资源共享 | 共享同一网桥的物理网络资源 |
交换机与虚拟机关系
| 关系 | 说明 |
|---|---|
| 连接关系 | 虚拟机通过虚拟网卡连接到交换机 |
| 一对多 | 一个交换机可以连接多个虚拟机 |
| 网络分配 | 虚拟机从交换机获取 IP 地址和网络配置 |
| 流量统计 | 交换机统计连接虚拟机的网络流量 |
安全策略技术原理
桥接模式与杂模式
桥接模式(Bridge Mode)
桥接模式是 VPC 交换机的基础工作模式,通过 OVS(Open vSwitch)实现二层网络交换。
桥接模式特点:
- MAC 地址学习:OVS 自动学习源 MAC 地址与端口的映射关系
- 精确转发:已知目标 MAC 的数据包只转发到对应端口
- 泛洪处理:未知目标 MAC 的数据包泛洪到所有端口(除来源端口)
- 广播域隔离:通过 VLAN 实现不同租户的广播域隔离
杂模式(Promiscuous Mode)
杂模式控制虚拟机网卡是否可以接收所有经过的数据包。
no-flood 模式(默认,杂模式禁用):
flood 模式(杂模式启用):
技术实现细节:
QVMConsole 通过 OpenFlow 规则控制杂模式:
| 模式 | OpenFlow 命令 | 效果 |
|---|---|---|
| no-flood | ovs-ofctl mod-port <bridge> <port> no-flood | 禁止泛洪,只接收目标 MAC 匹配的数据包 |
| flood | ovs-ofctl mod-port <bridge> <port> flood | 允许泛洪,可接收所有数据包 |
安全影响:
- 禁用杂模式:虚拟机只能接收到发送给自己的数据包,防止嗅探攻击
- 启用杂模式:虚拟机可以接收所有经过的数据包,可能被用于网络嗅探
MAC 地址更改
工作原理
MAC 地址更改策略控制虚拟机是否可以修改其网络接口的 MAC 地址。
MAC 地址过滤机制:
OpenFlow 规则实现:
当 allow_mac_change 设置为 false(默认)时,QVMConsole 会创建以下 OpenFlow 规则:
# 允许特定 MAC 地址的数据包通过
cookie=<cookie>,priority=90,in_port=<ofport>,dl_src=<mac>,actions=NORMAL
# 丢弃其他源 MAC 的数据包
cookie=<cookie>,priority=85,in_port=<ofport>,actions=drop
规则说明:
- 优先级 90:允许来自配置 MAC 地址的数据包
- 优先级 85:丢弃所有其他源 MAC 的数据包
- NORMAL 动作:按正常交换逻辑处理数据包
安全意义
| 策略状态 | 效果 | 安全风险 |
|---|---|---|
| 禁用(默认) | 虚拟机只能使用配置的 MAC 地址 | 防止 MAC 地址欺骗 |
| 启用 | 虚拟机可以使用任意 MAC 地址 | 可能导致 MAC 地址冲突和欺骗攻击 |
伪传输(Forged Transmits)
工作原理
伪传输策略控制虚拟机是否可以发送源 MAC 地址与配置 MAC 不匹配的数据包。
与 MAC 地址更改的关系:
- MAC 地址更改:控制虚拟机是否可以接收非配置 MAC 的数据包
- 伪传输:控制虚拟机是否可以发送源 MAC 不匹配的数据包
技术实现:
伪传输与 MAC 地址更改共享相同的 OpenFlow 规则机制:
代码实现逻辑:
// 从 switch_bandwidth.go 源码
restrictSourceMAC := !sw.AllowMACChange || !sw.AllowForgedTransmits
if restrictSourceMAC && strings.TrimSpace(item.MAC) != "" {
// 允许特定 MAC 地址
flows = append(flows, fmt.Sprintf("cookie=%s,priority=90,in_port=%s,dl_src=%s,actions=NORMAL",
cookie, item.OFPort, item.MAC))
// 丢弃其他 MAC 地址
flows = append(flows, fmt.Sprintf("cookie=%s,priority=85,in_port=%s,actions=drop",
cookie, item.OFPort))
}
逻辑说明:
- 只要
allow_mac_change或allow_forged_transmits中任意一个为false - 系统就会创建 MAC 地址过滤规则
- 规则同时限制入站和出站的 MAC 地址匹配
安全策略组合效果
策略组合矩阵
| allow_promiscuous | allow_mac_change | allow_forged_transmits | 安全级别 | 适用场景 |
|---|---|---|---|---|
| false | false | false | 最高 | 生产环境、多租户环境 |
| false | false | true | 高 | 需要特殊 MAC 配置的场景 |
| false | true | false | 中 | MAC 地址需要动态调整 |
| true | false | false | 中 | 需要网络监控的场景 |
| true | true | true | 低 | 测试环境、特殊需求 |
策略组合工作流程
实际应用场景
场景 1:多租户云环境
需求: 严格的网络隔离,防止租户间互相嗅探
配置:
allow_promiscuous = false(禁用杂模式)allow_mac_change = false(禁止 MAC 更改)allow_forged_transmits = false(禁止伪传输)
效果:
- 每个租户只能看到自己的网络流量
- 无法通过修改 MAC 地址进行攻击
- 无法伪造源 MAC 地址进行欺骗
场景 2:网络监控环境
需求: 需要监控所有网络流量
配置:
allow_promiscuous = true(启用杂模式)allow_mac_change = false(禁止 MAC 更改)allow_forged_transmits = false(禁止伪传输)
效果:
- 监控虚拟机可以接收所有网络流量
- 其他虚拟机仍然受到 MAC 过滤保护
- 防止 MAC 地址欺骗攻击
场景 3:测试开发环境
需求: 灵活的网络配置,便于测试
配置:
allow_promiscuous = true(启用杂模式)allow_mac_change = true(允许 MAC 更改)allow_forged_transmits = true(允许伪传输)
效果:
- 完全开放的网络环境
- 便于进行网络测试和调试
- 不推荐用于生产环境
配置建议
生产环境推荐配置
# 生产环境安全配置
security_policy:
allow_promiscuous: false
allow_mac_change: false
allow_forged_transmits: false
特殊需求配置
# 网络监控配置
security_policy:
allow_promiscuous: true
allow_mac_change: false
allow_forged_transmits: false
启用杂模式、MAC 地址更改或伪传输可能带来安全风险,包括:
- 网络嗅探:攻击者可以捕获其他虚拟机的网络流量
- ARP 欺骗:通过伪造 MAC 地址进行中间人攻击
- MAC 泛洪:通过大量伪造 MAC 地址攻击交换机
除非有明确的业务需求,建议保持所有安全策略为禁用状态。
最佳实践
交换机规划建议
- 按业务划分:为不同的业务创建独立的交换机,便于管理和隔离
- VLAN 规划:提前规划 VLAN ID 分配,避免冲突和重复
- 配额分配:根据业务需求合理分配流量和带宽配额
- 安全策略:保持安全策略为禁用状态,除非有特殊需求
性能优化
| 优化项 | 说明 | 预期效果 |
|---|---|---|
| VLAN 优化 | 合理规划 VLAN 数量 | 减少广播域大小 |
| 带宽分配 | 为关键业务分配更高带宽 | 提升业务性能 |
| 流量监控 | 实时监控流量使用情况 | 及时发现异常 |
| 配额调整 | 根据实际使用调整配额 | 避免资源浪费 |
QVMConsole 提供实时的流量和带宽监控,支持设置告警阈值。当流量或带宽接近配额限制时,系统会自动发送告警通知。