linux 多张网卡的绑定成一张网卡
环境Redhat linux as 4 U7 32bit
两张网卡的芯片一定要一样(按官方说可以不一样,不过我没成功),另外在虚拟机是测不成功的:
先看内核:
#modinfo bonding
filename: /lib/modules/2.6.9-55.EL/kernel/drivers/net/bonding/bonding.ko
parm: max_bonds:Max number of bonded devices
parm: miimon:Link check interval in milliseconds
parm: updelay:Delay before considering link up, in milliseconds
parm: downdelay:Delay before considering link down, in milliseconds
parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default)
parm: mode:Mode of operation : 0 for round robin, 1 for active-backup, 2 for xor
parm: primary:Primary network device to use
parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner (slow/fast)
parm: xmit_hash_policy:XOR hashing method : 0 for layer 2 (default), 1 for layer 3+4
parm: arp_interval:arp interval in milliseconds
parm: arp_ip_target:arp targets in n.n.n.n form
license: GPL
version: 2.6.3-rh BEB2ABDD4B642BA33CF1587
description: Ethernet Channel Bonding Driver, v2.6.3-rh
author: Thomas Davis, tadavis@lbl.gov and many others
vermagic: 2.6.9-55.EL 686 REGPARM 4KSTACKS gcc-3.4
有以上信息说明就不用再编译了
第一张:/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
BOOTPROTO='none'
ONBOOT=yes
MASTER=bond0
SLAVE=yes
第二张:
ifcfg-eth1
DEVICE=eth1
BOOTPROTO='none'
ONBOOT=yes
MASTER=bond0
SLAVE=yes
STARTMODE='off'
编辑:
ifcfg-bond0
DEVICE=bond0
BROADCAST='192.168.1.255'
BOOTPROTO='static'
IPADDR=192.168.1.177
NETMASK='255.255.255.0'
NETWORK='192.168.1.0'
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.1.1
BONDING_MODULE_OPTS='mode=1 miim on=100 use_carrier=1'
#说明:use_carrier:是否使用netif_carrier_ok()检测链路状态
#mode:0表示Round-robin按顺序传输数据包,提供容错和负载均衡模式;1表示Active-backup,只有一个slave设备是激活的状态,避免交换机发包生混乱
BONDING_SLAE0='eth0'
BONDING_SLAVE1='eth1'
更改/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
ifenslave bond0 eth0 eth1
route add -net 172.31.3.254 netmask 255.255.255.0 gw 192.168.1.1 bond0 #如果ifcfg-bond0里加了网关这一行可以不要
设置完成后system-config-network,看一下网卡状态,这里配置就完成了。下面要做的工作就是拨网线了。
至于多bond的设置和这个大同小异,不过有几个地方注意下,具体参见:
http://blog.chinaunix.net/u2/84422/showart_2150245.html
有先人在,我这里不啰嗦:-)
更详细的参数参考见:
http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding#Link_Monitoring
http://www.cppblog.com/Files/snowhill/Bonding.rar
http://tzsky.blog.51cto.com/1062094/237283