更新时间: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全部完成。
相关资讯