HCRM博客

在CentOS 6系统上部署Open vSwitch指南

CentOS 6 平台部署与应用 Open vSwitch 实战解析

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

CentOS 6 环境准备与 OVS 安装

在CentOS 6系统上部署Open vSwitch指南-图1
  1. 系统要求与内核支持

    • 确保系统为 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
  2. 获取与安装 Open vSwitch

    • 源码编译安装 (推荐,兼容性最佳)
      1. 访问 Open vSwitch 官方发布页,获取适用于 CentOS 6 的稳定版本源码包 (如 2.9.8),避免使用过新版本。
      2. 解压并编译安装:
        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
      3. 加载 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 仓库安装 (便捷性优先)
      1. 启用 EPEL 仓库:rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
      2. 安装 OVS:yum install openvswitch
      3. 启动服务并设置开机自启:
        service openvswitch start
        chkconfig openvswitch on

核心概念与基本操作

  1. 核心组件

    • ovs-vswitchd: 核心交换守护进程,实现数据转发逻辑。
    • ovsdb-server: 轻量级数据库服务,存储 OVS 配置(网桥、端口、流表等)。
    • ovs-vsctl: 主要管理命令行工具,用于配置数据库。
    • ovs-ofctl: OpenFlow 协议管理工具,配置流表规则。
    • ovs-dpctl: 数据路径(内核模块)管理工具。
  2. 基础管理命令

    • 创建/删除网桥
      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 虚拟机提供网络连接,实现虚拟机间通信、访问外网及宿主机管理。

在CentOS 6系统上部署Open vSwitch指南-图2
  1. 创建 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
  2. 配置虚拟机网络 (使用 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 网桥。
  3. 实现 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

高级特性与运维要点

  1. OpenFlow 流表控制 利用 ovs-ofctl 定义精细化的转发策略和网络策略,限制特定虚拟机 MAC 地址的访问:

    ovs-ofctl add-flow ovsbr0 "priority=500, dl_src=aa:bb:cc:dd:ee:ff, actions=drop"
  2. 隧道技术 (VXLAN/GRE) 在 ovsbr0 上创建 VXLAN 隧道端口,实现跨物理主机的 L2 网络扩展:

    在CentOS 6系统上部署Open vSwitch指南-图3
    ovs-vsctl add-port ovsbr0 vxlan0 -- set interface vxlan0 type=vxlan \
    options:remote_ip=<对端主机IP> options:key=<VNI>
  3. 链路聚合 (LACP/Bonding) 提升带宽和冗余,将多个物理网卡绑定为一个逻辑端口加入 OVS:

    ovs-vsctl add-bond ovsbr0 bond0 eth1 eth2 lacp=active \
    bond_mode=balance-tcp
  4. 监控与排错

    • 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 这样的传统平台上,也能显著提升虚拟化环境的网络灵活性与控制力,拥抱现代操作系统平台是保障长期安全稳定运行的基石,技术决策需平衡现实需求与未来风险。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/36084.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~