网络绑定(Network Bonding)是指将多个LAN或以太网接口组合成一个逻辑接口,这称为网络绑定。网络绑定的目标是提供容错和网络冗余,它还可以根据创建的绑定类型增强容量并提高网络吞吐量。
此外,网络桥接(Network Bridging)涉及创建一个逻辑接口,称为两个接口之间的桥接。这允许流量通过它们,这个对于在你的系统和其它系统之间共享互联网连接特别有帮助。
在本文中,小编首先了解网络绑定基础知识以及在Ubuntu系统中如何配置网络绑定,同时也介绍下网络桥接的原理。
什么是网络绑定?
网络绑定也称为链路聚合、网络接口卡( NIC ) 绑定,它是将两个物理网络接口连接在一起形成单个逻辑接口。这样做是为了冗余和故障转移,因为如果一个接口出现问题或出现故障,其余接口仍将提供所需的连接。
目前网络绑定有7种类型,每种类型都使用模式编号表示,即mode=0、mode=1一直到mode=6。
- mode=0(循环策略) – 这是默认模式,基于循环策略。数据包按从第一个可用从接口到最后一个的顺序传输。该模式提供负载平衡和容错。
- mode=1 ( Active-backup ) – 这基于Active-backup策略。顾名思义,只有一个从站处于活动状态。当当前从站发生故障时,另一个将被激活。该模式提供容错和冗余。
- mode=2 ( Balance-XOR ) – 该模式设置源地址与目标MAC地址的异或(XOR)。
- mode=3 (广播) – 在此策略中,所有数据包都在所有从属接口上传输。
- mode=4 ( 802.3ad ) – 这也称为动态链路聚合模式,它以相同的速度创建聚合组,适用于支持IEEE 802.3ad动态链路标准的网络交换机。
- mode=5 ( Balance-tlb ) – 这也称为自适应传输负载平衡。此处,传出流量根据每个从属接口上的当前负载进行传输,而传入流量则由当前活动从属接口接收。
- mode=6 ( Balance-alb ) – 这也称为自适应负载平衡。负载平衡是使用 ARP(地址解析协议)协商来完成的。
步骤1:在Ubuntu中启用绑定
首先,第一步是确保“ bonding ”模块已安装并加载。在大多数情况下,该模块已预安装在现代Linux发行版中,但未加载。要检查模块是否已加载,请使用lsmod命令:
$ lsmod | grep bond
如果未加载模块,输出将为空白。要加载模块,请运行所示的modprobe命令。
$ sudo modprobe bonding
再次确认模块已加载,如下所示。
$ lsmod | grep bond
这次,在终端上将出现一些输出,这样可以确认模块已加载。
如果未安装该模块,请使用以下命令安装:
$ sudo apt install ifenslave -y
步骤2:在Ubuntu中配置临时网络绑定
下一步是配置网络绑定。请记住,这只是暂时的绑定,重启后不会持续存在。首先,让我们通过运行ip命令来检查系统中的网络接口,如下所示:
$ ip a
从输出中可以看到,有两个活动接口:enp0s3和enp0s8。
此外,还可以使用ifconfig命令,效果是一样的:
如果运行命令时遇到错误,请安装提供ifconfig实用程序的net-tools软件包:
$ sudo apt install net-tools
接下来,需要禁用两个网络接口。
$ sudo ifconfig enp0s3 down $ sudo ifconfig enp0s8 down
接下来,创建类型为802.3ad的网络绑定,如下所示:
$ sudo ip link add bond0 type bond mode 802.3ad
然后将每个网络接口添加到网络绑定中:
$ sudo ip link set enp0s3 master bond0 $ sudo ip link set enp0s8 master bond0
接下来,激活网络绑定,命令如下:
$ sudo ifconfig bond0 up
要验证绑定是否已创建,请运行以下命令:
$ sudo ip link
步骤3:在Ubuntu中配置永久网络绑定
如前所述,创建的网络绑定只是暂时的,在系统断电或重新启动后将不复存在。为了使更改永久生效,将使用Nano编辑器编辑Netplan YAML配置文件,命令如下:
$ sudo nano /etc/netplan/01-network-manager-all.yaml
打开文件后,添加以下行以指定网络绑定、网络接口、绑定模式和名称服务器:
network: version: 2 renderer: NetworkManager ethernets: enp0s3: dhcp4: no enp0s8: dhcp4: no bonds: bond0: interfaces: [enp0s3, enp0s8] addresses: [192.168.2.150/24] routes: - to: default via: 192.168.2.1 parameters: mode: active-backup transmit-hash-policy: layer3+4 mii-monitor-interval: 1 nameservers: addresses: - "8.8.8.8" - "192.168.2.1"
在这里,选择的绑定类型为active-backup,它提供备份,以便在一个接口出现故障时,另一个接口接管作为主链路。保存所做的更改并退出配置文件。
接下来,关闭接口:
$ sudo ifconfig enp0s3 down $ sudo ifconfig enp0s8 down
同时需要应用所做的设置:
$ sudo netplan apply
请务必启用绑定并验证绑定接口。
$ sudo ifconfig bond0 up $ ifconfig bond0
此外,你还可以查看有关网络绑定的详细信息,命令如下:
$ sudo cat /proc/net/bonding/bond0
这会显示从属接口和当前活动的从属接口及其统计信息。在此设置中,当前从接口是enps0s3:
步骤4:在Ubuntu中测试网络绑定
我们已将网络绑定设置为“active-backup”策略。此时只有一个接口处于活动状态。如果发生故障,另一个接口将接管作为活动接口。为了进行测试,这里将禁用enps0s3接口并检查其它接口是否会启动:
$ sudo ifconfig enps0s3 down
当我们检查绑定统计信息时,可以看到enps0s8接口现在是活动从接口:
$ sudo cat /proc/net/bonding/bond0
什么是网络桥接?
在网络中,网桥是连接两个LAN网络并控制它们之间的数据包流的设备。它的功能更像是一个网络交换机,根据主机MAC地址在网络之间转发流量。它通过监听每个网络中主机的网络流量来构建MAC地址表。它被视为第2层设备,因为它在OSI模型的第2层上运行。
你可以在Linux设备上创建软件桥来模拟硬件桥。在网络桥接中,在一个或多个网络接口之间创建桥连接,以便让网络流量在它们之间流动。这允许你与其他人共享主机的互联网连接。
网桥动态获取IP地址(使用DHCP),也可以手动配置为静态IP地址。接下来,小编将演示如何在Ubuntu 20.04系统上创建和配置网桥。
步骤1:在Ubuntu中安装Bridge Utils
第一步是安装bridge-utils包,它提供了创建和管理桥接网络所需的所有工具,命令如下:
$ sudo apt install bridge-utils
步骤2:在Ubuntu中创建网桥
就像网络绑定一样,你也可以使用netplan实用程序创建桥接。一般可以通过两种方式进行操作 — DHCP或静态IPv4寻址创建网桥。下面来看看如何使用这两种方法来完成此任务。
使用DHCP寻址创建网桥
这是创建网桥最直接的方法,因为网桥接口将从DHCP服务器动态获取IP。首先,列出活动接口:
$ ip a
从输出来看,只有一个活动网络接口–enp0s3,它已使用静态IP进行配置。
接下来,将修改Netplan YAML配置文件。
$ sudo nano /etc/netplan/01-network-manager-all.yaml
粘贴以下配置,注意enp0s3接口现在是桥接口的一部分。
ethernets: enp0s3: dhcp4: no bridges: br0: dhcp4: yes interfaces: - enp0s3
保存更改并退出文件,然后应用所做的配置:
$ sudo netplan apply
大约30秒后,桥接接口将启动并通过DHCP协议自动接收IP地址:
$ ip a
另外,你可以使用nmcli实用程序来验证活动连接:
$ sudo nmcli con show --active
使用静态IP寻址创建网桥
当然,你可以为桥接接口配置静态IP寻址并显式指定IP地址、默认网关以及DNS服务器。因此,再次访问YAML文件:
$ sudo nano /etc/netplan/01-network-manager-all.yaml
修改配置如下:
ethernets: enp0s3: dhcp4: true bridges: br0: addresses: [ 192.168.2.200/24 ] routes: - to: default via: 192.168.2.1 mtu: 1500 nameservers: addresses: [8.8.8.8] interfaces: - enp0s3
在此配置中,192.168.2.200是桥接口的IP,而/24指定子网掩码(255.255.255.0),网关IP为192.168.2.1,8.8.8.8为DNS地址。
保存更改并退出YAML文件,然后应用配置:
$ sudo netplan apply
接下来,桥接接口已创建并具有分配给它的静态IP地址:
$ ip a
从输出中,可以看到已创建桥接接口并为其分配了静态IP地址:
另外,请务必使用ping命令验证你是否也可以从Linux系统访问互联网:
$ ping google.com -c 4
结论
网络桥接是连接两个或多个本地网络的技术,通过桥接设备将数据包从一个网络转发到另一个网络,它可以提高网络性能和扩展网络范围。桥接的一个主要优点是它能够减少网络拥塞。它可以将流量分散到不同的网络中,提高网络性能和吞吐量。此外,网络桥接还可以扩展网络范围,将多个本地网络连接在一起,形成一个更大的网络。
绑定是将多个网络接口或IP地址与特定设备或服务器相关联的过程,它可以实现负载均衡、冗余备份和故障恢复等功能,提高网络性能和可用性。在负载均衡中,多个网络接口或IP地址被绑定在一起,共同承担网络流量的负载。这样可以提高网络的性能和可靠性,并防止单一接口或地址成为性能瓶颈。在冗余备份和故障恢复中,绑定可以将多个网络接口或IP地址关联到同一个设备或服务器。如果一个接口或地址发生故障,绑定可以自动切换到其他可用的接口或地址,确保网络的连通性和可用性。
为此,以上简单介绍在Ubuntu系统上配置桥接和绑定接口的简单方法,仅供参考,有不清楚的小伙伴可以参考上述教程进行设置。