1. 网卡接口配置bonding(多网卡用同一IP地址):
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址
- 注意一台主机或服务器上多块网卡用同一个IP地址的时候,需要交换机来配合设置。有多种连接方式,详细可以查看帮助文档,最常见的连接方式就是每一块网卡外面都各自再接一台交换机,然后这些交换机再接到一个总的交换机上,这个总的交换机再连接其他的网络。配置的时候就是在与各个网卡直接相连的交换机上进行相关的bounding配置。
1.1. Bonding工作模式

1.1.1. Mode 0 (balance-rr)
轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力
1.1.2. Mode 1 (active-backup)
活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave.为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
1.1.3. Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文,提供容错能力
1.2. Bonding配置(模式1主备)
- 创建bonding设备的配置文件:
- /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 BOOTPROTO=none NAME=bond0 TYPE=Bond BONDING_MASTER=yes IPADDR=172.20.1.1 PREFIX=255.255.0.0 DEFROUTE=yes .....等等其它设置 BONDING_OPTS="miimon=100 mode=1 fail_over_mac=1" ### 其中miimon 是用来进行链路监测的。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路- /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=none MASTER=bond0 SLAVE=yes USERCTL=no - 查看bond0状态cat /proc/net/bonding/bond0
- 查看有几个bond设备cat /sys/class/net/bonding_masters
- 删除bond0ifconfig bond0 down rmmod bonding (可用lsmod |grep bond查看模块是否被删除)
1.3. Bouding详细帮助:
/usr/share/doc/kernel-doc- version/Documentation/networking/bonding.txt:在kernel-doc包里面/usr/share/doc/iputils-20160308/README.bonding:7.6在这个文件里https://www.kernel.org/doc/Documentation/networking/bonding.txt
1.4. Bounding注意点:
- active-backup、 balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。
如:Cisco 交换机需要在模式 0、 2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和EtherChannel - ifcfg-bond0文件就把它当做一个单独的网卡设备来进行各种配置,和普通网卡类似,注意写上设备名(最好和这个文件名一致,以bond加编号的方式命名,注意这个可以随意设置,它不代表模式,模式的设置在后面所写的那一项中)。最重要的一点就是
BONDING_OPTS="miimon=100 mode=1"这一行,前面代表多个网卡之间探测状态的刷新检测频率,后面代表模式 - 同样的需要绑定到bond中的网卡,其配置文件也需要更改,其中要加入两项
MASTER=bond0 SLAVE=yes,其中MASTER后面跟的就是ifcfg-bond文件中的DEVICE这一行的设备名(注意别写成了NAME这一行对应的名字)。这样这个网卡将不会独立工作而属于bond中的网卡进行联合工作了,这里面的其他设置也就不会生效了(最好把这两行写在前面的几行,DEVICE永远写在第一行)。 - 删除bond设置,先停用bond,然后删除
ifcfg-bond配置文件并修改曾经加入bond的网卡,然后重启网络服务是不行的,并没有完全删除。必须卸载模块rmmod bonding. fail_over_mac For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp):此项很重要,在bond1模式中必须设置为1,它就是为了让bond设备和实际网卡的MAC地址不会冲突,不会导致一个网卡接收一个网卡发送的情况出现
2. 网桥
桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。
网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
例如下图中:
主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、 eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、 D

2.1. 配置实现网桥—{brctl}
- 创建软件网桥
nmcli con add con-name mybr0 type bridge con-name br0 ifname br0
nmcli con modify mybr0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
nmcli con add con-name br0-port0 type bridge-slave ifname eth0 master br0
- 查看配置文件
cat /etc/sysconfig/network-scripts/ifcfg-br0
cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
- 工具包 yum install bridge-utils
查看网桥 brctl show
查看CAM表 brctl showmacs br0
添加和删除网桥 brctl <addbr|delbr> br0
添加和删除网桥中网卡 brctl <addif|delif> eth0
- 注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口
2.2. 网桥相关注意点:
- 注意网桥本质就相当于一个两个口的交换机,把这两个口的网络(网段)给链接在一起,它用于隔离冲突域(假如这两个网段内的机器各自都用HUB连接在一起,网桥能隔离这两个网段冲突域),不能隔离广播域。要注意它和路由的区别。
路由器是为了不同的网段之间能够进行通讯,用于隔离广播域(ARP广播只能在本网段内)
而网桥它的应用场景是:存在有两个不同的网络,但是这两个不同的网络的IP地址却是同一个网段,想要把这两个不同的网络链接在一起,就可以用网桥。
但是要注意这样做会让这两个网段内的IP地址的主机数减半,它们本来是两个网段(虽然网段设置的是一样的),各自占用自己网段的所有主机IP,但是合在一起之后,两个网段变成了一个网段,必然能够使用的主机IP数变为原来的一半。要注意不要IP地址冲突。 - 将linux配置成网桥(交换机),因为是个二层设备,它本来是不需要地址的,我们为了方便管理会给它配置一个IP地址用于远程管理,添加地址的时候添加到br0逻辑网卡上,注意不要添加到eth0或eth1等网卡上。可用ifconfig eht0 0.0.0.0 的方式删除地址。
- brctl创建的br0等等只是逻辑上的一个设备(类似于bond0,team0),创建完之后添加接口上对应的MAC(在这里就直接添加网卡了)即可(复习:二层交换机的CAM表内只有 接口和MAC两项)
- 直接用brctl命令的操作无法永久保存设置,因此还是要写在文件里才可以,可以用上面的nmcli命令即可,类似创建team组.也可以用ifcfg-br0文件;具体参考官方文档:
```
添加一个br0:
brctl show
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl showmacs br0
ip link set br0 up
删除一个br0:
ip link set br0 down
brctl delif br0 eth0
brctl delif br0 eth1
brctl delbr br0
```
留言