更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在Rocky Linux 8/AlmaLinux 8上安装Open vSwitch的方法

在Rocky Linux 8/AlmaLinux 8上安装Open vSwitch的方法

更新时间:2022-01-15 10:12:23浏览次数:776+次

本文介绍在Rocky Linux 8/AlmaLinux 8系统上安装和配置Open vSwitch(缩写为OVS)的方法,还将通过在KVM虚拟化堆栈上创建虚拟机来演示其基本用法。当前将使用RDO(OpenStack repos)在Rocky Linux 8/AlmaLinux 8上安装Open vSwitch,因为它在安装后更新软件包简单易行。RDO是一个在CentOS、Fedora和Red Hat Enterprise Linux上使用和部署OpenStack的社区,而Rocky Linux 8和AlmaLinux 8是基于Red Hat的,存储库可以正常工作。

第1步、将RDO存储库添加到系统

默认情况下,RDO RPM存储库在Rocky Linux 8/AlmaLinux 8中不可用,我们需要手动添加存储库,然后执行Open vSwitch。

在选写本文时,OpenStack的新版本是Xena。如果您希望使用较旧的存储库,可以这样做。

运行以下命令在您的系统中添加RDO OpenStack存储库:

sudo yum install https://repos.fedorapeople.org/repos/openstack/openstack-xena/rdo-release-xena-1.el8.noarch.rpm

确认安装成功。你应该得到类似这样的输出:

\

RDO存储库在/etc/yum.repos.d目录中配置:

$ ls -lh /etc/yum.repos.d/rdo*

-rw-r--r--. 1 root root  338 Oct 13 17:16 /etc/yum.repos.d/rdo-release.repo

-rw-r--r--. 1 root root 3.7K Oct 13 17:16 /etc/yum.repos.d/rdo-testing.repo

第2步、安装Open vSwitch

现在可以通过我们刚刚添加的RDO存储库在Rocky Linux 8/AlmaLinux 8上安装Open vSwitch。运行以下命令安装openvswitch和libibverbs依赖包:

sudo yum install openvswitch libibverbs

所有需要的pre-deps都将由RDO和OS存储库中的安装程序为您完成。在可用存储库之外没有依赖项安装,出现“Is this ok [y/N]”提示时输入y即可。

收到提示后,接受输入所有必需的GPG密钥:

\

可以使用带有-qi选项的rpm命令检查包详细信息:

$ rpm -qi rdo-openvswitch

\

第3步、启动openvswitch服务

安装后我们应该手动启动openvswitch服务。在基于Red Hat的系统上,服务管理是您的全部责任:

$ sudo systemctl enable --now openvswitch

Created symlink /etc/systemd/system/multi-user.target.wants/openvswitch.service → /usr/lib/systemd/system/openvswitch.service.

使用systemctl命令检查服务状态:

$ systemctl status openvswitch

提供ovs-vsctl实用程序用于查询和配置ovs-vswitchd。它为Open vSwitch配置数据库的配置提供了一个高级接口。

要检查OVS版本,请运行以下命令:

$ ovs-vsctl show

40686b11-20f8-4f7a-bd1d-bdb92880a17b

ovs_version: "2.15.4"

要将帮助消息打印到控制台,请使用:

$ ovs-vsctl --help

第4步、创建和配置OVS网桥

在使用OVS的典型网络配置中,创建的网桥将直接连接到主机系统中的专用网络接口。这限制了网桥和连接的客人只能使用该主机接口。

出于演示目的,我们将创建一个不附加或绑定到任何特定主机接口的软件桥。这样,主机系统中的TCP/IP堆栈可以根据目标IP或子网将出站流量路由到适当的接口。

1、在内核中启用IP路由

在创建网桥之前,让我们通过在运行时使用sysctl设置内核参数来启用IP路由:

sudo tee /etc/sysctl.d/iprouting.conf<<EOF

net.ipv4.ip_forward=1

net.ipv6.conf.all.forwarding=1

EOF

应用配置:

sudo sysctl --system

确认新设置:

$ sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1

$ sysctl net.ipv6.conf.all.forwarding

net.ipv6.conf.all.forwarding = 1

2、创建OVS网桥

下一步是创建OVS网桥。我们将命名为itovs-br0。为了保持网络配置,我们在网络脚本文件夹中创建一个文件。它的内容在下面的代码部分中共享:

$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ovs-br0

DEVICE=ovs-br0

BOOTPROTO=none

ONBOOT=yes

TYPE=OVSBridge

DEVICETYPE=ovs

USERCTL=yes

PEERDNS=yes

IPV6INIT=no

IPADDR=192.168.70.1

PREFIX=24

注:

TYPE设置为OVSBridge。

DEVICETYPE设置为ovs。

网桥名称是ovs-br0。

分配的IP地址为192.168.70.1/24。

使用ifup命令启动OVS网桥:

$ sudo ifup ovs-br0

$ ip link show dev ovs-br0

5: ovs-br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/ether a2:a9:f2:6d:7f:4f brd ff:ff:ff:ff:ff:ff

这是我们配置的IP地址信息:

$ ip ad show dev ovs-br0

5: ovs-br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000

link/ether a2:a9:f2:6d:7f:4f brd ff:ff:ff:ff:ff:ff

inet 192.168.70.1/24 brd 192.168.70.255 scope global ovs-br0

valid_lft forever preferred_lft forever

inet6 fe80::a0a9:f2ff:fe6d:7f4f/64 scope link

valid_lft forever preferred_lft forever

我们可以使用iptables从网桥中使用的网络子网通过主接口路由流量:

sudo iptables -t nat -A POSTROUTING -o enp0s31f6 -s 192.168.70.0/24 -j MASQUERADE

要保存规则,我们可以运行以下命令:

$ sudo /sbin/iptables-save > /etc/sysconfig/iptables

#To restore

$ sudo /sbin/iptables-save < /etc/sysconfig/iptables

如果我们的网桥绑定到一个物理接口,接口的配置将如下所示:

DEVICE=eth1

ONBOOT=yes

TYPE=OVSPort

DEVICETYPE=ovs

OVS_BRIDGE=ovs-br0

第5步、在Linux虚拟机(KVM)上使用网桥

配置好OVS桥并准备好使用后,我们可以在KVM上创建一个测试VM并验证它是否正常工作。

创建虚拟机镜像:

$ sudo virt-builder centos-8.2 --format qcow2 \

 --size 40G -o /var/lib/libvirt/images/centos8.qcow2

[   1.0] Downloading: http://builder.libguestfs.org/centos-8.2.xz

############# 100.0%

[  10.8] Planning how to build this image

[  10.8] Uncompressing

[  15.6] Resizing (using virt-resize) to expand the disk to 40.0G

[  45.0] Opening the new disk

[  50.0] Setting a random seed

[  50.0] Setting passwords

virt-builder: Setting random password of root to 8Udxd5HbuAtfNIr6

[  51.0] Finishing off

Output file: /var/lib/libvirt/images/centos8.qcow2

从创建的OS映像创建VM:

sudo virt-install \

  --name centos8 \

  --ram 2048 \

  --vcpus 1 \

  --disk path=/var/lib/libvirt/images/centos8.qcow2 \

  --os-type linux \

  --os-variant rhel8.0 \

  --network=bridge:ovs-br0,model=virtio,virtualport_type=openvswitch \

  --graphics none \

  --serial pty \

  --console pty \

  --boot hd \

  --import

在虚拟机上配置IP地址信息:

$ vim /etc/sysconfig/network-scripts/ifcfg-enp1s0

NAME="enp1s0"

DEVICE="enp1s0"

ONBOOT="yes"

NETBOOT="yes"

BOOTPROTO="none"

TYPE="Ethernet"

PROXY_METHOD="none"

BROWSER_ONLY="no"

DEFROUTE="yes"

IPADDR=192.168.70.2

PREFIX=24

GATEWAY=192.168.70.1

DNS1=8.8.8.8

激活虚拟机上的网络接口:

[root@localhost ~]# ifup enp1s0

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

检查IP地址详细信息:

# ip ad

\

测试访问互联网:

# ping -c 2 hmxthome.com

正常情况下,都能看到相关的传输数据及用时。

这证实了我们的OVS安装成功。如果您需要配置现有的KVM来宾操作系统界面以使用Open vSwitch桥接器,则编辑XML节配置文件以包含以下内容:

<interface type="bridge">

  <source bridge="ovs-br0"/>

  <virtualport type='openvswitch'/>

  <model type="virtio"/>

  <driver name="vhost"/> 

</interface>

在本地处理XML文件时,使用virsh命令重新定义来宾VM:

sudo virsh undefine <kvm-guest-domain>

sudo virsh define <kvm-guest-domain-xml-file>

最后,重新启动KVM来宾以使更改生效:

sudo virsh destroy <kvm-guest-domain>

sudo virsh start <kvm-guest-domain>

至此,在Rocky Linux 8/AlmaLinux 8上安装和配置Open vSwitch全部完成。