CentOS 6 平台部署与应用 Open vSwitch 实战解析
引言:虚拟化网络的基石 在虚拟化技术主导数据中心架构的今天,软件定义网络(SDN)成为实现灵活网络管控的关键,Open vSwitch(OVS)作为高性能、开源的多层虚拟交换机,在构建云环境网络基础设施中扮演核心角色,虽然 CentOS 6 已结束主流支持,但在特定传统生产环境中,理解其部署 OVS 仍具有实际价值,本文将深入探讨 CentOS 6 环境下 Open vSwitch 的安装、核心配置及典型应用场景。
CentOS 6 环境准备与 OVS 安装

系统要求与内核支持
- 确保系统为 CentOS 6.x (推荐 6.5+),并应用最新的安全更新 (
yum update)。 - Open vSwitch 对内核模块有依赖,CentOS 6 默认内核通常包含所需基础模块 (
bridge,stp,vxlan等),但需验证:lsmod | grep bridge
- 安装必要的开发工具链和内核头文件,这是编译 OVS 内核模块的前提:
yum groupinstall "Development Tools" yum install kernel-devel-$(uname -r) wget openssl-devel
- 确保系统为 CentOS 6.x (推荐 6.5+),并应用最新的安全更新 (
获取与安装 Open vSwitch
- 源码编译安装 (推荐,兼容性最佳)
- 访问 Open vSwitch 官方发布页,获取适用于 CentOS 6 的稳定版本源码包 (如 2.9.8),避免使用过新版本。
- 解压并编译安装:
wget https://www.openvswitch.org/releases/openvswitch-2.9.8.tar.gz tar zxvf openvswitch-2.9.8.tar.gz cd openvswitch-2.9.8 ./configure --with-linux=/lib/modules/`uname -r`/build make make install make modules_install
- 加载 OVS 内核模块并启动核心服务:
/sbin/modprobe openvswitch mkdir -p /usr/local/etc/openvswitch ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \ --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ --private-key=db:Open_vSwitch,SSL,private_key \ --certificate=db:Open_vSwitch,SSL,certificate \ --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \ --pidfile --detach ovs-vswitchd --pidfile --detach
- EPEL 仓库安装 (便捷性优先)
- 启用 EPEL 仓库:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm - 安装 OVS:
yum install openvswitch - 启动服务并设置开机自启:
service openvswitch start chkconfig openvswitch on
- 启用 EPEL 仓库:
- 源码编译安装 (推荐,兼容性最佳)
核心概念与基本操作
核心组件
- ovs-vswitchd: 核心交换守护进程,实现数据转发逻辑。
- ovsdb-server: 轻量级数据库服务,存储 OVS 配置(网桥、端口、流表等)。
- ovs-vsctl: 主要管理命令行工具,用于配置数据库。
- ovs-ofctl: OpenFlow 协议管理工具,配置流表规则。
- ovs-dpctl: 数据路径(内核模块)管理工具。
基础管理命令
- 创建/删除网桥:
ovs-vsctl add-br br0 # 创建网桥 br0 ovs-vsctl del-br br0 # 删除网桥 br0
- 添加物理接口到网桥 (替换 eth0 为实际接口名):
ovs-vsctl add-port br0 eth0
- 添加虚拟接口 (如 veth pair, tap) 到网桥:
ovs-vsctl add-port br0 tap0
- 查看网桥、端口状态:
ovs-vsctl show # 显示整体拓扑 ovs-vsctl list-br # 列出所有网桥 ovs-vsctl list-ports br0 # 列出网桥 br0 上的端口 ovs-vsctl list interface eth0 # 查看接口 eth0 详细信息
- 创建/删除网桥:
实战应用场景:构建隔离的虚拟机网络目标: 在 CentOS 6 宿主机上,利用 OVS 为 KVM 虚拟机提供网络连接,实现虚拟机间通信、访问外网及宿主机管理。

创建 OVS 网桥并连接物理网络
ovs-vsctl add-br ovsbr0 # 创建业务网桥 ovsbr0 ovs-vsctl add-port ovsbr0 eth0 # 将物理网卡 eth0 加入 ovsbr0 # 配置 eth0 仅作为 OVS 端口,移除其原有 IP 配置 ifconfig eth0 0 up # 可选:将原 eth0 的 IP 分配给 ovsbr0 或单独的管理接口 ifconfig ovsbr0 192.168.1.100 netmask 255.255.255.0 up route add default gw 192.168.1.1
配置虚拟机网络 (使用 Libvirt)
- 编辑 Libvirt 网络配置文件 (如
/etc/libvirt/qemu/networks/ovs-network.xml):<network> <name>ovs-net</name> <forward mode='bridge'/> <bridge name='ovsbr0'/> <virtualport type='openvswitch'/> </network>
- 定义并激活该网络:
virsh net-define ovs-network.xml virsh net-start ovs-net virsh net-autostart ovs-net
- 创建 KVM 虚拟机时,选择网络源
ovs-net,Libvirt 会自动创建vnet*接口并加入ovsbr0网桥。
- 编辑 Libvirt 网络配置文件 (如
实现 VLAN 隔离
- 将物理交换机连接 eth0 的端口设置为 Trunk,允许特定 VLAN (如 10, 20)。
- 在 OVS 上配置端口 VLAN 标签:
# 假设虚拟机 vm1 的接口 vnet0 属于 VLAN 10 ovs-vsctl set port vnet0 tag=10 # 物理端口 eth0 设置为 Trunk ovs-vsctl set port eth0 vlan_mode=trunk trunks=10,20
高级特性与运维要点
OpenFlow 流表控制 利用
ovs-ofctl定义精细化的转发策略和网络策略,限制特定虚拟机 MAC 地址的访问:ovs-ofctl add-flow ovsbr0 "priority=500, dl_src=aa:bb:cc:dd:ee:ff, actions=drop"
隧道技术 (VXLAN/GRE) 在 ovsbr0 上创建 VXLAN 隧道端口,实现跨物理主机的 L2 网络扩展:

ovs-vsctl add-port ovsbr0 vxlan0 -- set interface vxlan0 type=vxlan \ options:remote_ip=<对端主机IP> options:key=<VNI>
链路聚合 (LACP/Bonding) 提升带宽和冗余,将多个物理网卡绑定为一个逻辑端口加入 OVS:
ovs-vsctl add-bond ovsbr0 bond0 eth1 eth2 lacp=active \ bond_mode=balance-tcp
监控与排错
ovs-ofctl dump-flows ovsbr0:查看当前流表。ovs-appctl ofproto/trace: 模拟报文路径,验证流表逻辑。ovs-dpctl dump-flows:查看内核快速路径流表。ovs-vsctl list Open_vSwitch . other_config:检查全局配置。- 日志文件:
/var/log/messages或/var/log/openvswitch/ovs-vswitchd.log。
迁移考量与安全建议
- CentOS 6 的局限:官方支持终止意味着不再接收安全更新和 OVS 新版本兼容性支持,强烈建议将关键业务迁移至 CentOS 7/8 或 RHEL 等效版本,以获得持续的安全维护和更现代的 OVS 特性支持。
- 安全加固:
- 严格控制对 OVSDB (6640/tcp) 和 OpenFlow 控制器端口的管理访问,使用防火墙限制源 IP。
- 避免在生产环境使用默认的
controller端口,或明确设置fail-mode=standalone。 - 定期审查 OVS 配置和流表规则。
- 保持 OVS 软件为已知稳定版本。
观点:OVS 的价值在于其强大的网络抽象能力与可编程性,即使在 CentOS 6 这样的传统平台上,也能显著提升虚拟化环境的网络灵活性与控制力,拥抱现代操作系统平台是保障长期安全稳定运行的基石,技术决策需平衡现实需求与未来风险。
