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驱动程序处理。

下面进入实际操作步骤:
 
输入’setup’进入配置页面:

 

 

 

进入—>网络配置,


进入设备编辑页面“Edit Devices”:


我们可以在上面的这个页面添加一块新的网卡,也可以在虚拟机编辑页面添加:如下图:





 

配置完成后,重启网络服务:
[root@localhost network-scripts]# vim ifcfg-eth1
[root@localhost network-scripts]# service network restart
正在关闭接口 eth0:                                         [确定]
关闭环回接口:                                              [确定]
弹出环回接口:                                              [确定]
弹出界面 eth0:                                             [确定]
弹出界面 eth1:                                             [确定]
[root@localhost network-scripts]#
然后查看我们的网卡是否配置成功:

 

[root@localhost network-scripts]# cd

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ll ifcfg*
-rw-r--r-- 3 root root 232 03-30 11:39 ifcfg-eth0
-rw-r--r-- 3 root root 198 03-30 11:39 ifcfg-eth1
-rw-r--r-- 1 root root 254 2009-07-04 ifcfg-lo
[root@localhost network-scripts]#
查看各个网卡的配置参数文件:
vim ifcfg-eth0


vim eth1


 

下面将我们的网卡绑定,用负载均衡模式。
需要bonding模块的支持:
[root@localhost ~]# cd /lib/modules/2.6.18-164.el5/kernel/drivers/net/
[root@localhost net]# ll |grep -i bond
drwxr-xr-x 2 root root    4096 02-27 22:37 bonding
[root@localhost net]#
 
因为在外部要呈现统一的ip,所以我们的两个网卡eth0,eth1都不需要ip了。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ll ifcfg*
-rw-r--r-- 3 root root 232 03-30 11:39 ifcfg-eth0
-rw-r--r-- 3 root root 198 03-30 11:39 ifcfg-eth1
-rw-r--r-- 1 root root 254 2009-07-04 ifcfg-lo
[root@localhost network-scripts]#
下面我们对两个网卡分别编辑一下:

 


 

我们要产生一个额外的网卡文件,
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-bond0(注意:ifcfg-bond0为别名,指向我们的bonding模块)
然后对其进行编辑:

vim ifcfg-bond0

 

让系统启动时加载我们的模块:
[root@localhost network-scripts]# vim /etc/modprobe.conf
[root@localhost network-scripts]#
alias bond0 bonding
options bond0 miimon=100 mode=0

添加进我们的文件,其中mode=0即表示负载均衡模式。


 

然后我们要告诉我们的系统绑定的哪两个网卡:
[root@localhost network-scripts]# vim /etc/rc.d/rc.local

 

 

最后加载我们的模块:
然后重启系统:
[root@localhost network-scripts]# modprobe bonding
[root@localhost network-scripts]# init 6
 
然后就可以查看我们是否绑定成功了:如图所示,绑定成功。

 

 

验证测试:

 

 

断掉我们的网卡2(任意一个都可以),查看是否丢包:

 



 

由上面的图便可以看出来,即使断掉一个网卡,我们仍然可以ping通。

只是其中一个包的时间变得较长,Maximum=2220ms,但是我们并没有丢包。

试验成功。

选择“Next”,然后“finish”即可,在接通虚拟机电源即可。
下面接着前面说的,
可通过上下键来选择需要编辑的网卡。
我们先进入eth0,看看其配置,然后退出,进入eth1,编辑eth1,跟eth0同一网段,并且保存后退出: