首页 > 代码库 > Linux下双网卡绑定(bonding技术)

Linux下双网卡绑定(bonding技术)

2013-08-20 15:39:31

现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景。linux操作系统下自带的网卡绑定模式,Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个网络接口设置来使用,用于网络负载均衡及网络冗余。当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(windows操作系统没有网卡绑定功能 需要第三方支持)。

我们公司是做分布式文件系统的,很多项目都用到网卡绑定来提高性能。在网络找了很多资料,也做了大量的测试,下面就网卡绑定谈一下自己的看法。

一、 Bonding的应用

1、 网络负载均衡

对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极大的,为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是bonding 。

2、 网络冗余

对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把网个网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡也能提供正常的服务。

二、 Bonding的原理

什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接 收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的 Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。

三、 Bonding的模式

linux有七种网卡绑定模式:

模式代号

模式名称

模式方式

说明

0

(balance-rr) Round-robin policy

轮询策略

该策略是按照设备顺序依次传输数据包,直到最后一个设备。这种模式提供负载均衡和容错能力。

1

(active-backup) Active-backup policy

主备策略

该策略只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见的。 此模式提供了容错能力。

2

(balance-xor) XOR policy

异或策略

该策略是根据MAC地址异或运算的结果来选择传输设备,提供负载均衡和容错能力。

3

Broadcast policy

广播策略

该策略将所有数据包传输给所有接口通过全部设备来传输所有数据,提供容错能力。

4

(802.3ad) IEEE 802.3ad Dynamic link aggregation

动态链接聚合

该策略通过创建聚合组来共享相同的传输速度,需要交换机也支持 802.3ad 模式,提供容错能力。

5

(balance-tlb) Adaptive transmit load balancing

适配器传输负载均衡

该策略是根据当前的负载把发出的数据分给每一个设备,由当前使用的设备处理收到的数据。本策略的通道联合不需要专用的交换机支持,提供负载均衡和容错能力。

 

6

(balance-alb) Adaptive load balancing

适配器负载均衡

该策略在IPV4情况下包含适配器传输负载均衡策略,由ARP协商完成接收的负载,通道联合驱动程序截获ARP在本地系统发送出的请求,用其中一个设备的硬件地址覆盖从属设备的原地址。

 

 

 

1.编辑虚拟网卡band0的配置文件ifcfg-bond0,加入以下内容:

image

2、编辑各个网卡的配置文件,这里用eth1和eth2。

image

3、修改/etc/modprobe.conf 文件,加入以下内容:

image

注: 
(1)、miimon 是链路监测的时间间隔单位是毫秒,miimon=100的意思就是,每100毫秒检测网卡和交换机之间是否连通,如不通则使用另外的链路。 
(2)、mode=0 表示负载均衡方式,两块网卡都工作,需要交换机作支持。 
          mode=1 表示冗余方式,网卡只有一个工作,一个出问题启用另外的。 
          mode=6 表示负载均衡方式,两块网卡都工作,不需要交换机作支持。

4、重启网络:

image

5、查看bond0的工作状态:

image

6、查看绑定后的结果:

image

总之,网卡绑定就是多张网卡逻辑上作为一张网卡用。可分为,负载均衡绑定和冗余绑定两种。

 

 

Redhat Linux网卡配置与绑定

 

Redhat Linux的网络配置,基本上是通过修改几个配置文件来实现的,虽然也可以用ifconfig来设置IP,用route来配置默认网关,用hostname来配置主机名,但是重启后会丢失。

相关的配置文件

/ect/hosts 配置主机名和IP地址的对应
/etc/sysconfig/network 配置主机名和网关
/etc/sysconfig/network-scripts/ifcfg-eth0 eth0配置文件,eth1则文件名为ifcfg-eth1,以此类推

一、网卡配置

假设我们要配置主机名为test,eth0的IP地址192.168.168.1/24,网关地址192.168.168.250

则/etc/sysconfig/network文件内容如下:

NETWORKING=yes
HOSTNAME=test
GATEWAY=192.168.168.250

eth0对应的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0内容如下:

DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.168.1
NETMASK=255.255.255.0
TYPE=Ethernet
ONBOOT=yes

二、单网卡绑定多个IP

有时,我们需要在一块网卡上配置多个IP,例如,在上面的例子中,我们还需要为eth0配置IP 192.168.168.2和192.168.168.3。那么需要再在/etc/sysconfig/network-scripts下新建两个配置文件:

ifcfg-eth0:0内容如下:

DEVICE=eth0:0
BOOTPROTO=static
IPADDR=192.168.168.2
NETMASK=255.255.255.0
ONBOOT=yes

ifcfg-eth0:1内容如下:

DEVICE=eth0:1
BOOTPROTO=static
IPADDR=192.168.168.3
NETMASK=255.255.255.0
ONBOOT=yes

三、多个网卡绑定成一块虚拟网卡

为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。比如我们可以将eth0和eth1绑定成虚拟网卡bond0

首先在/etc/sysconfig/network-scripts/下创建虚拟网卡bond0的配置文件ifcfg-bond0,内容如下

DEVICE=bond0
BOOTPROTO=none
BROADCAST=192.168.168.255
IPADDR=192.168.168.1
NETMASK=255.255.255.0
NETWORK=192.168.168.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.168.250
USERCTL=no

然后分别修改eth0和eth1的配置文件
ifcfg-eth0内容:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes

ifcfg-eth1内容

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes

因为linux的虚拟网卡是在内核模块中实现的,所以需要安装的时候已经装好该module。在/etc/modules.conf文件中添加如下内容(如果没有该文件,则新建一个):

alias bond0 bonding
options bond0 miimon=100 mode=1 primary=eth0

其中miimon=100表示每100ms检查一次链路连接状态,如果不通则会切换物理网卡
mode=1表示主备模式,也就是只有一块网卡是active的,只提供失效保护。如果mode=0则是负载均衡模式的,所有的网卡都是active,还有其他一些模式很少用到
primary=eth0表示主备模式下eth0为默认的active网卡

最后,在/etc/rc.local中加入

modprobe bonding miimon=100 mode=1

重启机器后可以看到虚拟网卡已经生效,可以通过插拔两个物理网卡的网线来进行测试,不过linux中网卡接管的时间好象比较长

 
 

Linux系统下双网卡bonding的配置方法

进入 /etc/sysconfig/network-scripts 目录下创建一个文件 ifcfg-bond0或cp ifcfg-eth0 ifcfg-bond0

Vi  ifcfg-bond0 编辑内容如下

DEVICE=bond0

BOOTPROTO=static

IPADDR=192.168.10.1

NETMASK=255.255.255.0

GATEWAY=192.168.10.254

ONBOOT=yes

TYPE=Ethernet

 

VI   ifcfg-eth0  编辑内容如下

DEVICE=eth0

BOOTPROTO=static

ONBOOT=yes

MASTER=bond0

SLAVE=yes

 

VI  ifcfg-eth1  编辑内容如下

DEVICE=eth1

BOOTPROTO=static

ONBOOT=yes

MASTER=bond0

SLAVE=yes

 

编辑 vi /etc/ modprobe.conf

在最后面加入

alias bond0 bonding

options bond0 miimon=100 mode=0

说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份. bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用,Bond配置完成

 

重启网络即可 service  network  restart

 

查看 /proc/net/bonding/目录下bond0文件,能看到双网卡的运行状态

-----------------------------------------------------

 

linux双网卡绑定概念以及介绍:

 

linux设置bond网卡绑定

Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡;linux设置bond网卡绑定---有些用。
Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项 技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据传输而设计的。下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。
说了半天理论,其实配置很简单,一共四个步骤:
实验的操作系统是Redhat Linux Enterprise 3.0
绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。
1.编辑虚拟网络接口配置文件,指定网卡IP
vi /etc/sysconfig/ network-scripts/ ifcfg-bond0
[root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0
2 #vi ifcfg-bond0
将第一行改成 DEVICE=bond0
# cat ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=172.31.0.13
NETMASK=255.255.252.0
BROADCAST=172.31.3.254
ONBOOT=yes
TYPE=Ethernet
这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。将上述信息指定到虚拟适配器(bonding)中即可。
[root@rhas-13 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
[root@rhas-13 network-scripts]# cat ifcfg-eth1
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
3 # vi /etc/modules.conf
编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0
 
加入下列两行
alias bond0 bonding
options bond0 miimon=100 mode=1
说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。
mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.
bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用
4 # vi /etc/rc.d/rc.local
加入两行
ifenslave bond0 eth0 eth1
route add -net 172.31.3.254 netmask 255.255.255.0 bond0
到这时已经配置完毕重新启动机器.
重启会看见以下信息就表示配置成功了
................
Bringing up interface bond0 OK
Bringing up interface eth0 OK
Bringing up interface eth1 OK
................
下面我们讨论以下mode分别为0,1时的情况
mode=1工作在主备模式下,这时eth1作为备份网卡是no arp的
[root@rhas-13 network-scripts]# ifconfig 验证网卡的配置信息
bond0 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:18495 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1587253 (1.5 Mb) TX bytes:89642 (87.5 Kb)
eth0 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:9572 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:833514 (813.9 Kb) TX bytes:89642 (87.5 Kb)
Interrupt:11
eth1 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING NOARP SLAVE MULTICAST MTU:1500 Metric:1
RX packets:8923 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:753739 (736.0 Kb) TX bytes:0 (0.0 b)
Interrupt:15
那也就是说在主备模式下,当一个网络接口失效时(例如主交换机掉电等),不回出现网络中断,系统会按照cat /etc/rc.d/rc.local里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能.
在mode=0 负载均衡工作模式,他能提供两倍的带宽,下我们来看一下网卡的配置信息
[root@rhas-13 root]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:2817 errors:0 dropped:0 overruns:0 frame:0
TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:226957 (221.6 Kb) TX bytes:15266 (14.9 Kb)
eth0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1406 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:113967 (111.2 Kb) TX bytes:7268 (7.0 Kb)
Interrupt:11
eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1411 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:112990 (110.3 Kb) TX bytes:7998 (7.8 Kb)
Interrupt:15
在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用.

通过查看bond0的工作状态查询能详细的掌握bonding的工作状态
[root@rhas-13 bonding]# cat /proc/net/bonding/bond0
bonding.c:v2.4.1 (September 15, 2003)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Multicast Mode: all slaves
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0e:7f:25:d9:8a
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0e:7f:25:d9:8b
QuickLinux AS4 下网卡绑定实现负载均衡和失效保护
Linux下的的负载平衡(说白了就是n块网卡邦定在一起当一个用速度变成原来的n倍)在linux下叫做bonding,理论就不说了,网上一大堆.网 上也有好多这样的文章但是大多都和实际配置过程有些不同,下面说说在2.6内核的quicklinux AS4 上具体的实现方法。
第一步、编辑虚拟网络接口配置文件。
建立 /etc/sysconfig/network-scripts/ifcfg-bond0 文件
内容如下:
DEVICE=bond0
IPADDR=192.168.0.1
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
NETWORK=192.168.0.1
ONBOOT=yes
ip地址根据自己的需要配置(一个简单的方法就是拷贝一个ifcfg-eht0修改DEVICE=bond0)
第二步、编辑真实网卡的配置文件(建议修改之前做好备份)
/etc/sysconfig/network-scripts/ifcfg-eth*
内容如下
BOOTPROTO=none
TYPE=Ethernet
DEVICE=eth* (*与那个配置文件名中的相同)
ONBOOT=yes
MASTER=bond0
slave=yes
注意:真实网卡不能再设置ip地址了,按需要把所要绑定的真实网卡都按这个设置,主要是MASTER=bond0 和 slave=yes 一定不要弄错(简单的方法就是修改一个然后拷贝再修改)
第三步、修改/etc/modprobe.conf 文件加入如下两行(建议做好备份)
alias bond0 bonding
options bond0 miimon=100 mode=0
注:1、miimon 是链路监测的时间间隔单位是毫秒,miimon=100的意思就是,每100毫秒检测网卡和交换机之间是否连通,如不通则使用另外的链路。
2、mode=0 表示负载均衡方式,两块网卡都工作。
mode=1 表示冗余方式,网卡只有一个工作,一个出问题启用另外的。
第四步、在/etc/rc.d/rc.local 加入如下一行(启动时执行此行命令)
ifenslave bond0 eth0 eth1 …… eht*
重新启动后负载平衡已经能正常工作。
但是还有需要注意的,就是shorewall防火墙的设置,这个设置最好在配置负载平衡前进行,因为 shorewall在webmin下配置最简单,
负载平衡启动后原来的设置的“网卡界面”里面的网卡就应该由eht* 改成了bond0 了 。不改设置全部通讯都会断掉。
用service shorewall stop 也不能停掉防火墙,因为shorewall关掉后它就会启动“关闭规则(routerstopped)”。“关闭规则”默认的是不允许任何通讯。
所以建议在配置负载平衡前建立防火墙规则。否则只能通过手工来改shorewall的配置文件了。
以上的实现方法已经在QuickLinux as4 2.6.11-8内核下实现,网卡为双intel pro1000 速度相
当令人满意,服务器双网卡和两台客户计算机所都连接到同一个普通交换机上,两台客户机网同时从
SMB上用totle copy拷贝大文件速度都能达到10000KB/S以上。
Linux下双网卡绑定实现负载均衡
我们在这介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。
  bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据传输而设计的。下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。说了半天理论,其实配置很简单,一共四个步骤: 实验的操作系统是Redhat Linux Enterprise 3.0。绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。

  双网卡邦定的拓朴图
1.编辑虚拟网络接口配置文件,指定网卡IP:

vi /etc/sysconfig/ network-scripts/ ifcfg-bond0
[root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0

2、#vi ifcfg-bond0
将第一行改成 DEVICE=bond0:

# cat ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=172.31.0.13
NETMASK=255.255.252.0
BROADCAST=172.31.3.254
ONBOOT=yes
TYPE=Ethernet

这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。将上述信息指定到虚拟适配器(bonding)中即可。

[root@rhas-13 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
[root@rhas-13 network-scripts]# cat ifcfg-eth1
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp

3、# vi /etc/modules.conf
编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0.加入下列两行:

alias bond0 bonding
options bond0 miimon=100 mode=1

 

 

  1. Linux下的双网卡绑定  
  2. 将eth0,eth1绑定为bond0 ,节点内部通信用,使用192.168.1.0网段。  
  3. 将eth2,eth3绑定为bond1 ,对外服务,使用10.12*.*.0网段。注意将*替换成实际IP地址。  
  4.   
  5. 操作系统版本为:Red Hat Enterprise Linux AS release 4 (Nahant Update 7)  
  6.   
  7. <1>  
  8. 将eth0,eth1绑定为bond0  
  9.   
  10. vi /etc/sysconfig/network-scripts/ifcfg-bond0  
  11.   
  12. DEVICE=bond0  
  13. BOOTPROTO=none  
  14. ONBOOT=yes  
  15. TYPE=Ethernet  
  16. USERCTL=no  
  17. IPADDR=192.168.1.2  
  18. NETMASK=255.255.255.0  
  19. NETWORK=192.168.1.0  
  20. BROADCAST=192.168.1.255  
  21.   
  22.   
  23. vi /etc/sysconfig/network-scripts/ifcfg-eth0  
  24. DEVICE=eth0  
  25. BOOTPROTO=none  
  26. ONBOOT=yes  
  27. USERCTL=no  
  28. MASTER=bond0  
  29. SLAVE=yes  
  30. 注:不要有实际网卡的MAC地址。  
  31.   
  32. vi /etc/sysconfig/network-scripts/ifcfg-eth1  
  33. DEVICE=eth1  
  34. BOOTPROTO=none  
  35. ONBOOT=yes  
  36. USERCTL=no  
  37. MASTER=bond0  
  38. SLAVE=yes  
  39.   
  40.   
  41. <2>  
  42. 将eth2,eth3绑定为bond1  
  43.   
  44. vi /etc/sysconfig/network-scripts/ifcfg-bond1  
  45.   
  46. DEVICE=bond1  
  47. BOOTPROTO=none  
  48. ONBOOT=yes  
  49. TYPE=Ethernet  
  50. USERCTL=no  
  51. IPADDR=10.12*.*.61  
  52. NETMASK=255.255.255.0  
  53. NETWORK=10.12*.*.0  
  54. BROADCAST=10.12*.*.255  
  55. GATEWAY=10.12*.*.254  
  56.   
  57. vi /etc/sysconfig/network-scripts/ifcfg-eth2  
  58. DEVICE=eth2  
  59. BOOTPROTO=none  
  60. ONBOOT=yes  
  61. USERCTL=no  
  62. MASTER=bond1  
  63. SLAVE=yes  
  64.   
  65.   
  66. vi /etc/sysconfig/network-scripts/ifcfg-eth3  
  67. DEVICE=eth3  
  68. BOOTPROTO=none  
  69. ONBOOT=yes  
  70. USERCTL=no  
  71. MASTER=bond1  
  72. SLAVE=yes  
  73.   
  74.   
  75. <3>  
  76.   
  77. 添加内核模块:  
  78.   
  79. vi /etc/modprobe.conf  
  80. 添加  
  81. # BONDING  
  82. install bond0 /sbin/modprobe bonding -o bond0 mode=1 miimon=100  
  83. install bond1 /sbin/modprobe --ignore-install bonding -o bond1 mode=1 miimon=100  
  84.   
  85. note:  
  86. mode=0 : load balancing (round-robin)  
  87. mode=1 : fault-tolerance (active-backup)  
  88.   
  89.   
  90. 加入启动项  
  91. vi /etc/rc.d/rc.local  
  92. ifenslave bond0 eth0 eth1  
  93. ifenslave bond1 eth2 eth3  
  94.   
  95. 启动网卡  
  96. ifconfig bond0 192.168.1.2 up  
  97. ifenslave bond0 eth0 eth1  
  98.   
  99. ifconfig bond1 10.12*.*.61 up  
  100. ifenslave bond1 eth2 eth3  
  101.   
  102.   
  103. 重启网络服务或系统:  
  104. service network restart  
  105.   
  106.   
  107. 查看绑定网卡工作状况:  
  108. cat /proc/net/bonding/bond0  
  109. cat /proc/net/bonding/bond1  
  110.   
  111.   
  112. ************************************************************  
  113.   
  114. linux4.7上,使用如下方式配置,当设置两个或以上bond时,bond网卡的工作模式会有问题,并且第二个bond配置不工作:  
  115.   
  116. vi /etc/modprobe.conf  
  117. 添加  
  118. # BONDING  
  119. alias bond1 bonding  
  120. options bond1 mode=1 miimon=100  

 

 

CentOS6.2网卡绑定配置

 

下面主要介绍在CentOS6.2下使用系统自带的bonding进行网卡绑定的详细步骤,在此之前你可以看一下Linux网卡绑定探析,你也可以使用网卡绑定的脚本进行网卡绑定操作。

注意:请在配置前关闭NetworkManager服务

[root@h63 ~]# service NetworkManager status && service NetworkManager start

网卡绑定一次可以绑定多个网卡,你可以使用ifconfig -a查看你的网卡信息,例如:

[root@h63 ~]# ifconfig -a
em1       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:03
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:48236002 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16156472 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4838973371 (4.5 GiB)  TX bytes:1301118550 (1.2 GiB)
          Interrupt:36 Memory:d6000000-d6012800

em2       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:05
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:42385720 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7283526 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4307780986 (4.0 GiB)  TX bytes:466840625 (445.2 MiB)
          Interrupt:48 Memory:d8000000-d8012800

em3       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:07
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:32 Memory:da000000-da012800

em4       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:09  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:42 Memory:dc000000-dc012800 

这里有4个网卡,分别是em1、em2、em3和em4,我们把em1和em2做一个绑定,绑定模式为6(关于网卡绑定模式的介绍请看Linux网卡绑定探析),首先我给给网卡绑定后的设备起个名字bond0(名称可以自定义),并创建:

[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0        #设备名称
BOOTPROTO=static      #静态IP
ONBOOT=yes          #自动启动
IPADDR=172.16.16.63    #设备绑定的IP
GATEWAY=172.16.23.254       #设备绑定的网关
NETMASK=255.255.248.0    #设备绑定的掩码
TYPE=Ethernet         #设备绑定的类型

编辑需要绑定的网卡:

[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-em1

DEVICE=em1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0  #绑定后的设备名称
SLAVE=yes
TYPE=Ethernet

[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-em2

DEVICE=em2
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0  #绑定后的设备名称
SLAVE=yes
TYPE=Ethernet

说明:配置网卡时不要填写IP地址和MAC地址

配置加载模式设置:

[root@h63 ~]# vim /etc/modprobe.conf

alias bond0 bonding
options bond0 miimon=100 mode=6

说明:mode是网卡绑定的模式,此处是模式6

也可以在/etc/modprobe.d/下创建一个文件:

[root@h63 ~]# vim /etc/modprobe.d/bond

alias bond0 bonding
options bond0 miimon=100 mode=6

绑定配置完成,重启网络服务

[root@h63 ~]#service network restart

查看网卡绑定的情况:

[root@h63 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: em1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: em1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 78:2b:cb:30:08:03
Slave queue ID: 0


Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 78:2b:cb:30:08:05
Slave queue ID: 0

至此,网卡绑定就完成了。 

 
 
 
CetOS(RHEL) 5.3下网卡绑定设置指南 

修改三类文件:

/etc/sysconfig/network-scripts/下的ifcfg-*文件

/etc/modprobe.conf文件

/etc/init.d/rc.local文件


设置方法:

1. 环境:windows xp+vmware, centos 5.3, 4块网卡,做两组绑定。

当前网卡:eth0-3

绑定后虚拟网卡:bond0-1

eth0、eth2绑定为bond0,eth1、eth3绑定为bond1,不同网段。


2. 修改ifcfg-*文件

增加ifcfg-bond0、ifcfg-bond1两个文件:

文件内容:
[root@localhost network-scripts]# cat ifcfg-bond0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.100.101
NETMASK=255.255.255.0
NETWORK=192.168.100.0
ONBOOT=yes
USERCTL=no
TYPE=Ethernet
GATEWAY=192.168.100.101


[root@localhost network-scripts]# cat ifcfg-bond1
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=bond1
BOOTPROTO=none
IPADDR=172.16.0.1
NETMASK=255.255.255.0
NETWORK=172.16.0.0
ONBOOT=yes
USERCTL=no
#TYPE=Ethernet
TYPE=Ethernet


修改ifcfg-eth0、ifcfg-eth1、ifcfg-eth2、ifcfg-eth3四个网卡配置文件:

内容:

[root@localhost network-scripts]# cat ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth1
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond1
SLAVE=yes
TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth2
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth3
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth3
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond1
SLAVE=yes
TYPE=Ethernet

3. 修改/etc/modprobe.conf文件

[root@localhost network-scripts]# cat /etc/modprobe.conf
alias eth0 pcnet32
alias eth1 pcnet32
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix
alias eth2 pcnet32
alias eth3 pcnet32
alias bond0 bonding
options bond0 miimon=100 mode=0
alias bond1 bonding
options bond1 miimon=100 mode=0
 

4. 修改/etc/rc.d/rc.local文件
[root@localhost network-scripts]# cat /etc/rc.d/rc.local 
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don‘t
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
modprobe bonding miimon=100 mode=0 


5. 测试

方法1:检查网络配置是否正常,是否可启动
/etc/init.d/network restart

方法2:检查系统启动时虚拟网卡是否正常启动
reboot

方法3:检查绑定网卡是负载均衡模式,还是主备冗余模式
cat /proc/net/bonding/bond0
cat /proc/net/bonding/bond1


6. 说明

如果是主备冗余模式,需将
options bond0 miimon=100 mode=0中

mode 改为1

其它改为
options bond0 miimon=100 mode=1 primary=eth0 

primary=eth0表示当前主网卡为eth0

其它在/etc/rc.d/rc.local中也修改
modprobe bonding miimon=100 mode=1
 
 
 
 
 
 

Linux双网卡绑定——理论与实践(实践篇)

 

Linux双网卡绑定的主要实现步骤为: 
1. 配置一个虚拟的网卡bond0 
2. 配置eth0,eth1为slave模式 
3. 加载bonding模块 
4. 重启系统

下面将详细介绍每个步骤 
一. 配置虚拟网卡bond0

新建/etc/sysconfig/network-scripts/ifcfg-bond0文件,内容如下:

#bond0配置文件 
DEVICE=bond0 
BOOTPROTO=static 
IPADDR=192.168.0.100 
NETMASK=255.255.255.0 
BROADCAST=192.168.0.255 
GATEWAY=192.168.0.1 
ONBOOT=yes 
TYPE=Ethernet

 

二. 配置eth0,eth1为slave模式

更改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0

#eth0配置文件 
DEVICE=eth0 
BOOTPROTO=none  
SLAVE=yes  
MASTER=bond0 
USERCTL=yes


更改配置文件/etc/sysconfig/network-scripts/ifcfg-eth1

 

#eth1配置文件 
DEVICE=eth1 
BOOTPROTO=none  
SLAVE=yes  
MASTER=bond0 
USERCTL=yes


三. 加载bonding模块

修改模块配置文件/etc/modprobe.conf,在最后加入以下内容:

alias bond0 bonding 
options bond0 miimon=100 mode=0 

 

四. 重启系统

重启之后,测试bonding是否正常运行,运行ifconfig命令,结果如下

[root@linux ~]# ifconfig 
bond0     Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
          inet6 addr: fe80::20c:29ff:fe45:b4d1/64 Scope:Link 
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1 
          RX packets:100 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:130 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:0 
          RX bytes:17527 (17.1 KiB)  TX bytes:20937 (20.4 KiB) eth0      Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1 
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:99 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:10340 (10.0 KiB)  TX bytes:15317 (14.9 KiB) 
          Interrupt:18 Base address:0x1080 eth1      Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1 
          RX packets:40 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:40 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:7487 (7.3 KiB)  TX bytes:7022 (6.8 KiB) 
          Interrupt:19 Base address:0x1400


运行cat /proc/net/bonding/bond0,结果如下:

[root@linux ~]# cat /proc/net/bonding/bond0 

Ethernet Channel Bonding Driver: v3.3.0 (June 10, 2008)

Bonding Mode: load balancing (round-robin) 
MII Status: up 
MII Polling Interval (ms): 100 
Up Delay (ms): 0 
Down Delay (ms): 0

Slave Interface: eth0 
MII Status: up 
Link Failure Count: 0 
Permanent HW addr: 00:0c:29:45:b4:d1

Slave Interface: eth1 
MII Status: up 
Link Failure Count: 0 
Permanent HW addr: 00:0c:29:45:b4:db