网桥是将两个或多个网段互连并在它们之间提供通信的数据链路层设备。它创建单个网络接口,以从多个网络或网段中建立单个聚合网络。它根据主机的MAC地址(存储在MAC地址表中)转发流量。
RHEL(Red Hat Enterprise Linux)和CentOS 8等Linux操作系统支持基于软件的网桥的实现,以模拟硬件桥。网桥的功能类似于网络交换机。它的行为或多或少类似于虚拟网络交换机。
网络桥接有几种用例,一个实际的应用是在虚拟化环境中创建虚拟网络交换机,该交换机用于将虚拟机(VM)连接到与主机相同的网络。
本指南介绍了可以在RHEL / CentOS 8中设置网桥多种方法,并使用它在Oracle VirtualBox和KVM下以桥接模式设置虚拟网络,以及将虚拟机连接到与主机相同的网络。
使用nmcli工具设置网桥
nmcli是一种广泛使用、可编写脚本且功能强大的命令行工具,用于控制NetworkManager和报告网络状态。它直接与Network Manager通信,并且仅控制系统范围的连接。重要的是,它允许用户使用缩写词,只要它们是一组可能选项中的唯一前缀即可。
首先,使用IP命令来识别当前连接到您的计算机的网络接口(物理和虚拟)以及它们所连接的网络。
代码语言:javascript复制# ip add
从以上命令的输出中,以太网接口称为enp2s0,我们将把该接口从接口添加到网桥。
接下来,要列出测试系统上的活动网络连接,请使用以下nmcli命令。
代码语言:javascript复制# nmcli conn show --active
重要说明:如果已安装并启动libvirtd守护程序(libvirtd),则代表网络桥(虚拟网络交换机)的默认网络接口为virbr0,如上面所示,它配置为以NAT模式运行。
接下来,使用以下nmcli命令创建一个网桥接口,其中conn或con代表连接,连接名称为br0,接口名称也为br0。
代码语言:javascript复制# nmcli conn add type bridge con-name br0 ifname br0
注意:在桥接模式下,虚拟机很容易访问物理网络,它们与主机位于同一子网中,并且可以访问DHCP等服务。
要设置静态IP地址,请运行以下命令来设置br0连接的IPv4地址、网络掩码、默认网关和DNS服务器(根据您的环境设置值)。
代码语言:javascript复制# nmcli conn modify br0 ipv4.addresses '192.168.1.1/24'
# nmcli conn modify br0 ipv4.gateway '192.168.1.1'
# nmcli conn modify br0 ipv4.dns '192.168.1.1'
# nmcli conn modify br0 ipv4.method manual
现在,如图所示,将以太网接口(enp2s0)作为便携式设备添加到网桥(br0)连接中。
代码语言:javascript复制# nmcli conn add type ethernet slave-type bridge con-name bridge-br0 ifname enp2s0 master br0
接下来,打开或激活网桥连接,您可以使用如下所示的连接名称或UUID。
代码语言:javascript复制# nmcli conn up br0
OR
# nmcli conn up 2f03943b-6fb5-44b1-b714-a755660bf6eb
然后停用或关闭以太网或有线连接。
代码语言:javascript复制# nmcli conn down Wired connection 1
OR
# nmcli conn down e1ffb0e0-8ebc-49d0-a690-2117ca5e2f42
现在,当您尝试列出系统上的活动网络连接时,网桥连接应显示在列表中。
代码语言:javascript复制# nmcli conn show --active
接下来,使用以下bridge命令显示当前桥端口配置和标志。
代码语言:javascript复制# bridge link show
要停用网桥连接并删除它,请运行以下命令。请注意,您首先必须激活有线连接。
代码语言:javascript复制# nmcli conn up Wired connection 1
# nmcli conn down br0
# nmcli conn del br0
# nmcli conn del bridge-br0
更多信息,请参见nmcli手册页。
代码语言:javascript复制# man nmcli
通过Cockpit Web控制台创建网桥
cockpit是一个轻量级的、交互式的、易于使用的基于Web的服务器管理界面。为了与系统的网络配置进行交互,cockpit使用NetworkManager和它提供的DBus API。
要添加网桥,请转到网络,然后单击添加网桥,如下图所示。
将会出现一个弹出窗口,其中包含添加新桥的选项。设置网桥名称并选择端口,如以下屏幕截图所示。您可以选择启用STP(生成树协议),然后单击“应用”。
在“接口”列表下,现在应该出现新的网桥,并且应该禁用以太网接口。
要详细查看,请双击它。有一些选项可以将其删除,向其添加新的端口设备等等。
使用nm-connection-editor应用程序创建网桥
nm-connection-editor是NetworkManager的图形化网络连接编辑器,用于添加、删除和修改NetworkManager存储的网络连接。任何修改只有在NetworkManager运行时才能起作用。
要启动它,请以root用户身份在命令行中运行nm-connection-editor命令,或从系统菜单中将其打开。
代码语言:javascript复制#nm-connection-editor
打开后,单击加号以添加新连接,如以下屏幕截图中显示。
在弹出窗口中,从下拉列表中选择连接类型,这种情况为网桥,然后单击创建。
接下来,设置网桥连接和接口名称,然后单击“添加”以添加网桥端口。选择以太网作为连接类型,然后单击创建。
接下来,编辑端口设备连接详细信息,然后单击“保存”。
现在,应该将桥接端口添加到桥接连接列表中,然后点击保存。
在连接编辑器的主界面中,您应该能够看到新的桥接连接和桥接接口,如以下屏幕截图所示。
现在,如前所示,使用nmcli工具来激活网桥连接并从命令行停用有线连接。
代码语言:javascript复制# nmcli conn up br0
# nmcli conn down Wired connection 1
如何在虚拟化软件中使用网桥
在本节中,我们将展示如何在Oracle VirtualBox和KVM下使用网桥将虚拟机连接到主机网络,如下所述。
在Oracle VirtualBox中使用网桥
要将虚拟机配置为使用桥接适配器,请从VM列表中选择它,然后转到其设置,单击“网络”选项并选择适配器(例如,适配器1),然后确保选中“启用网络适配器”选项,然后进行设置。将其附加为桥接适配器,然后选择桥接接口的名称(br0),单击确定。
在KVM中使用网桥
要使用以上在KVM下创建的网桥,请在虚拟机通过命令行界面使用virt-install命令的同时使用--network = bridge = br0选项。
代码语言:javascript复制# virt-install --virt-type=kvm --name Ubuntu18.04 --ram 1536 --vcpus=4 --os-variant=ubuntu18.04 --cdrom=/path/to/install.iso --network=bridge=br0,model=virtio --graphics vnc --disk path=/var/lib/libvirt/images/ubuntu18.04.qcow2,size=20,bus=virtio,format=qcow2
您也可以使用virsh命令行工具创建其他网络并对其进行配置,并且还可以编辑VM的XML配置文件以使用这些新的桥接网络之一。
在本指南中,我们展示了如何在RHEL / CentOS 8中设置网桥,以及如何在Oracle VirtualBox和KVM下将其用于将VM连接到主机的同一网络。
——更多精彩?——