Linux系统的高级网络配置(bond、team、网桥)

本文详细介绍了Linux系统中如何配置高级网络接口,包括bond、team和网络桥接。在bond部分,讲解了不同绑定模式如平衡轮询、主动备份和广播的特性,并展示了通过nmcli命令进行配置的步骤。团队接口team则以其拓展性和多种工作模式(如广播、轮叫和主备)为特点。此外,文章还涵盖了网络桥接的搭建、管理命令及实验环境中的实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、配置bond 网络接口

1.bond接口

  • Red Hat Enterprise Linux 允许管理员使用 bonding 内核模块和称为通道绑定接口的特殊网络接口将多个网络接口绑定
    到一个通道。根据选择的绑定模式 , 通道绑定使两个或更多个网络接口作为一个网络接口 , 从而增加带宽和 / 提供冗余性

2.选择 Linux 以太网绑定模式

  • 模式 0 balance-rr ( 平衡轮循 ) - 轮循策略 , 所有接口都使用采用轮循方式在所有 Slave 中传输封包 ; 任何 Slave 都可以接收

  • 模式 1 active-backup ( 主动备份 ) - 容错。一次只能使用一个 Slave 接口, 但是如果该接口出现故障 , 另一个 Slave 将 接替它

  • 模式 3 broadcast ( 广播 ) - 容错。所有封包都通过所有 Slave 接口广播

3.利用nmcli命令管理bond

<1>添加一块新的网卡
这里写图片描述
此时共有两块网卡
这里写图片描述
<2>删除原有网卡的配置文件

[root@localhost ~]# nmcli connection delete eth0

<3>添加bond网络接口、选择主备模式

[root@localhost ~]#nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.254.105/24

<4>添加bond接口的设备

[root@localhost ~]#nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0 
[root@localhost ~]#nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0

<5>监控命令

[root@localhost ~]#watch -n 1  cat /proc/net/bonding/bond0

实验:
ifconfig etho down
网依旧可以ping通,eth1顶替eht0工作
这里写图片描述
ifconfig eth0 up
eth0作为eth1的备份
这里写图片描述
<6>删除bond接口

[root@localhost ~]#nmcli connetction deletet bond0
[root@localhost ~]#nmcli connetction deletet eth0
[root@localhost ~]#nmcli connetction deletet eth1

这里写图片描述

4.用文件配置bond网络

vim /etc/sysconfig/network-scripts/ifcfg-bond0  ##编写bond接口文件
DEVICE=bond0
BONDING_OPTS=mode=active-backup
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
IPADDR0=172.25.254.105
PREFIX0=24
NAME=bond0
ONBOOT=yes
~               
vim /etc/sysconfig/network-scripts/ifcfg-eth0 ##编写bond接口的slave文件,eth1与eth0相同,不再赘述
YPE=Ethernet
NAME=eth0
UUID=680d1066-8c74-4d6f-9c6f-f8d1d1f02810
DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes

二、配置team网络接口

1.team接口
Team和 bond0 功能类似
Team不需要手动加载相应内核模块
Team有更强的拓展性
支持 8块网卡
2.team的种类
broadcast 广播容错
roundrobin 平衡轮叫
activebackup 主备
loadbalance 负载均衡

3.通过nmcli命令设定team
<1>创建team接口、slave接口

[root@localhost Desktop]#nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.105/24
[root@localhost Desktop]#nmcli connection add con-name eth0 type team-slave ifname eth1 master team0
[root@localhost Desktop]#nmcli connection add con-name eth1 type team-slave ifname eth0 master team0

<2>监控命令

[root@localhost Desktop]#watch -n 1 teamdctl team0 stat

<3>关闭eth0

[root@localhost Desktop]#ifconfig eth0 down

实验如图所示:
这里写图片描述
<4>删除team接口

[root@localhost Desktop]#nmcli connetction deltet team0
[root@localhost Desktop]#nmcli connetction deltet eth0
[root@localhost Desktop]#nmcli connetction deltet eth1

这里写图片描述

三、网络桥接

实验环境:真机

【1】网桥的搭建

1.备份原网卡、桥接文件

[root@foundation5 ~]# cd /etc/sysconfig/network-scripts/
[root@foundation5 network-scripts]# mv ifcfg-br0  ifcfg-enp0s25 /opt/

2.打开网络图形管理删除网络 只留下vb1 vb0

3.编写/etc/sysconfig/network-scripts/ifcfg-br0和ifcfg-enp0s25建立网桥

[root@foundation5 network-scripts]# vim ifcfg-enp0s25
DEVICE=enp0s25
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0      ##控制设备的网卡enp0s25开启br0接口

[root@foundation5 network-scripts]#vim ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTOPOTO=none
IPADDR=172.25.254.5
PREFIX=24
TYPE=Bridge  ##类型为桥接
~                 

3.重启网络

[root@foundation5 network-scripts]#systemctl restart network

也可以尝试reboot

4,网桥的查看

网桥的查看
[root@foundation5 network-scripts]# brctl show
bridge name    bridge id        STP enabled     interfaces
br0         8000.0021ccc1010e   no              enp0s25
virbr0      8000.525400a676d2   yes             virbr0-nic
virbr1      8000.525400c0bf57   yes             virbr1-nic

5.将备份还原

[root@foundation5 network-scripts]#rm -fr ifcfg-br0 ifcfg-enp0s25 
[root@foundation5 network-scripts]#mv /opt/ifcfg-* .
[root@foundation5 network-scripts]#systemctl restart network

【2】网络桥接的管理命令
实验环境:虚拟机

命令含义
brctl show显示网桥
brctl addbr添加网桥
brctl delbr删除网桥
brctl addif添加网桥连接
brctl delif删除网桥连接

实验:网卡的桥接

[root@localhost Desktop]#brctl addbr br0
[root@localhost Desktop]#brctl show ##此时的桥接没有网卡不可用
[root@localhost Desktop]#ifconfig br0 172.25.254.105/24
[root@localhost Desktop]#ping 172.25.254.62 ##ping不通
[root@localhost Desktop]#brctl addif br0 eth0 ##桥接一个网卡
[root@localhost Desktop]#ping 172.25.254.62 ##ping通

这里写图片描述
这里写图片描述
实验:桥接的删除

[root@localhost Desktop]#brctl delif bro eth0 ##把eth0从br0移除
[root@localhost Desktop]#ifconfig bro down ##关掉br0
[root@localhost Desktop]#brctl delbr br0   ##删除br0

这里写图片描述

<think>嗯,用户想了解Linux网络配置bondteam的区别。我得先回忆一下这两个技术的背景和用途。首先,bonding和teaming都是用来做网络接口聚合的,也就是把多个网卡绑在一起,提高带宽或者冗余。不过它们属于不同的实现方式,可能有一些区别。 我记得bonding是比较早的内核功能,属于内核模块,可能在内核里直接支持的。而teaming是后来出现的,用户空间和内核模块结合,可能更灵活。不过具体区别需要详细对比。 接下来需要分点整理它们的区别。首先是架构层面,bonding在内核里,而teaming混合了用户和内核空间。然后是功能特性,比如bonding有七种模式,teaming可能有更多模式或者更灵活的配置?比如负载均衡、故障转移这些是否不同? 还有配置工具方面,bonding通常用ifenslave或者sysfs,而teaming可能用teamd和nmcli。性能方面,bonding作为内核模块可能效率高,但teaming设计更现代,可能有优化? 另外,维护状态方面,bonding虽然老但还在维护,而teaming可能更受新系统推荐?比如RHEL/CentOS 7之后推荐teaming? 需要确认这些信息是否准确。比如bonding的模式,比如mode0到mode6,比如round-robin、active-backup等。而teaming可能有runner的概念,比如broadcast、loadbalance等,支持更多组合。 兼容性方面,bonding可能更广泛支持旧系统,而teaming需要较新的内核和网络管理器。 总结的时候需要结构清晰,分点说明区别,帮助用户理解在不同场景下如何选择。可能还要提到配置命令的不同,比如teamd的配置文件例子,对比bonding的配置方式。 另外要注意用户可能的应用场景,比如是否需要高可用性、负载均衡,或者更简单的配置。根据不同的需求,推荐使用bond还是team。 需要确保信息准确,可能需要查阅文档或可靠来源确认细节,比如bonding的模式和teaming的runner类型,以及各自的优缺点。避免提供错误的信息,比如bonding是否真的不支持某些高级功能,或者teaming的资源消耗是否更高。 最后,用中文清晰分点回答,符合用户要求的格式,使用LaTeX数学表达式时注意规则,但这个问题可能不需要数学公式,所以可能不用涉及。确保回答结构清晰,逐步解释两者的区别,帮助用户解决问题。</think>Linux系统中,网络接口聚合技术`bond`和`team`均可实现多网卡绑定,但设计理念和实现方式有显著差异。以下是逐步对比: --- ### **1. 架构设计** - **Bondbonding)** - **内核级驱动**:完全由内核模块`bonding`实现,配置直接作用于内核网络栈。 - **模式固定**:支持7种绑定模式(如`mode=0`轮询、`mode=1`主备等),需预先选择且模式间不可混合。 - **Teamteaming)** - **用户态+内核协作**:通过`teamd`守护进程(用户态)与内核模块配合,逻辑更灵活。 - **动态组合**:通过“runner”定义行为(如`broadcast`广播、`loadbalance`负载均衡),支持多runner叠加。 --- ### **2. 功能特性** - **Bond** - **简单稳定**:适用于基础场景(如冗余、负载均衡)。 - **局限性**: - 仅支持IPv4链路监控(如ARP或MII)。 - 无法同时启用多种模式(例如主备+负载均衡)。 - **Team** - **高级功能**: - 支持IPv6监控、NS/NA协议。 - 可自定义端口优先级、流量哈希策略。 - 集成LACP(链路聚合控制协议)。 - **扩展性**:允许通过JSON配置文件实现复杂逻辑。 --- ### **3. 配置方式** - **Bond示例** ```bash # 加载内核模块 modprobe bonding mode=4 miimon=100 # 创建bond接口 ip link add bond0 type bond # 添加从属网卡 ip link set eth0 master bond0 ip link set eth1 master bond0 ``` - **Team示例** ```bash # 创建team接口配置文件 nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}' # 添加从属网卡 nmcli con add type team-slave con-name team0-port1 ifname eth0 master team0 nmcli con add type team-slave con-name team0-port2 ifname eth1 master team0 ``` --- ### **4. 性能与资源占用** - **Bond**:内核直接处理数据包,转发效率高,延迟更低。 - **Team**:用户态与内核态交互可能引入轻微开销,但设计更现代,支持大规模复杂网络。 --- ### **5. 适用场景** - **优先选择Bond**: - 系统内核较旧(如RHEL 6或更早)。 - 需求简单(仅需主备或基本负载均衡)。 - **优先选择Team**: - 需要IPv6、LACP或灵活策略(如混合负载均衡+故障转移)。 - 使用NetworkManager管理网络(原生支持Team配置)。 --- ### **总结对比表** | 特性 | Bond | Team | |---------------------|---------------------------|---------------------------| | **架构** | 纯内核模块 | 用户态+内核协作 | | **配置灵活性** | 低(模式固定) | 高(JSON自定义) | | **IPv6/LACP支持** | 有限 | 完整支持 | | **资源占用** | 低 | 略高 | | **推荐场景** | 传统系统、简单需求 | 现代系统、复杂网络需求 | --- 根据实际需求选择:若追求稳定性和低延迟,且功能需求简单,可选用`bond`;若需灵活配置高级功能,推荐使用`team`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值