Linux双网卡绑定实现
linux双网卡绑定配置,验证及测试

shwang 西安 linux+c E-mail:fenghuaster@ QQ:271904106
内容概要
什么是双网卡绑定 检查kernel是否支持绑定 检查 是否支持绑定 绑定配置 绑定后的验证 测试带宽
什么是双网卡绑定
双网卡绑定实现就是使用两块网卡虚拟成为一块网卡, 双网卡绑定实现就是使用两块网卡虚拟成为一块网卡, 这个聚合起来的设备看起来是一个单独的以太网接口设备。 这个聚合起来的设备看起来是一个单独的以太网接口设备。 通俗讲就是两块网卡具有相同的IP IP地址而并行链接聚合成 通俗讲就是两块网卡具有相同的IP地址而并行链接聚合成 一个逻辑链路工作。 一个逻辑链路工作。 Linux下双网卡绑定技术实现负载均衡和失效保护。 Linux下双网卡绑定技术实现负载均衡和失效保护。 下双网卡绑定技术实现负载均衡和失效保护
检查kernel是否支持绑定 是否支持绑定 检查
cat /boot/config-2.6.18-*** |grep –i bongding 如果有: 如果有: CONFIG_BONDING=m 表示支持。 表示支持。 否则需要编译内核使她支持bonding后,才可以做双网卡绑定 否则需要编译内核使她支持 后
配置绑定
1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件。 1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件。 新建/etc/sysconfig/network 文件 DEVICE=bond0 ONBOOT=yes BOOTPROTO=static PADDR=192.168.9.202 NETMASK=255.255.255.0 GATEWAY=192.168.9.1 USERCTL=no
Linux下配置双网卡桥接

Linux下配置双网卡桥接1. 新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0ONBOOT=yesBOOTPROTO=noneIPADDR=10.0.0.4NETMASK=255.0.0.0GATEWAY=10.0.0.1USERCTL=no2. 更改/etc/sysconfig/network-scripts/ifcfg-eth0网卡属性DEVICE=eth0ONBOOT=yesBOOTPROTO=noneMASTER=bond0slave=yesUSERCTL=no3. 更改/etc/sysconfig/network-scripts/ifcfg-eth1网卡的属性DEVICE=eth1ONBOOT=yesBOOTPROTO=noneMASTER=bond0slave=yesUSERCTL=no注意:配置文件都不能设置mac地址,启动时会有冲突。
除了bond0设置ip地址外,其他真实的网卡都不能设置ip地址。
4. 编辑/etc/modprobe.conf文件,加入以下内容alias bond0 bondingoptions bond0 miimon=100 mode=1注:1、miimon 是链路监测的时间间隔单位是毫秒,miimon=100的意思就是,每100毫秒检测网卡和交换机之间是否连通,如不通则使用另外的链路。
2、mode=0 表示负载均衡方式,两块网卡都工作。
mode=1 表示冗余方式,网卡只有一个工作,一个出问题启用另外的。
)5. 使用ifenslave命令把网卡绑定一下,#ifenslave bond0 eth0 eth16. 加入/etc/rc.d/rc.local启动项ifenslave bond0 eth0 eth17. 启动网卡#service network restart。
linux双网卡双IP双网关如何配置

# Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
HOTPLUG=no
HOTPLUG=no
TYPE=Ethernet
IPADDR=192.168.1.2
NETMASK=255.255.255.0
HWADDR=d8:d3:85:fb:d4:60
GATEWAY=192.168.1.1
USERCTL=no
IPV6INIT=no
PEERDNS=yes
eth1 的配置如下,不需要配置网关
TYPE=Ethernet
IPADDR=192.168.2.2
NETMASK=255.255.255.0
USERCTL=no
IPV6INIT=no
PEERDNS=yes
Linux 命令行下添加路由,192.168.3.0 走 eth1 的网关 192.168.2.1
route add -net 192.168.3.0 netmask 255.255.255.0 dev eth1
linux双网卡双ip双网关如何配置 注意: 2张网卡,只能有1张网卡配置网关,另1张网卡不能配置网关,通过route add添加路由功能来完成第2张网卡的网关配置. 如 : eth1 (192.168.2.2)不需要配置网关,但到 192.168.3.0的网段,需要从eth1去实现通信,其余的全部走eth0网卡,eth0配置网关. eth0的配置如下,配置网关参数 [root@redhat network-scripts]# cat ifcfg-eth0 # broadcom corporation netxtreme ii bcm5709 gigabit ethernet device=eth0 bootproto=none onboot=yes hotplug=no type=ethernet ipaddr=192.168.1.2 netmask=255.255.255.0 hwaddr=d8:d3:85:fb:d4:60 gateway=192.168.1.1 userctl=no ipv6init=no peerdns=yes eth1的配置如下,不需要配置网关 [root@server network-scripts]# cat ifcfg-eth1 # broadcom corporation netxtreme ii bcm5709 gigabit ethernet device=eth1 bootproto=none onboot=yes hotplug=no type=ethernet ipaddr=192.168.2.2 netmask=255.255.255.0 userctl=no ipv6init=no peerdns=yes linux命令行下添加路由,192.168.3.0走 eth1的网关 192.168.2.1 route add -net 192.168.3.0 netmask 255.255.255.0 dev eth1 下载文档原格式( txt原格式 ,共1页)
Linux双网卡绑定和解除

Linux双⽹卡绑定和解除⼀、传统的bond模式⽹卡绑定⼀定要在服务管理中关闭NetworkManager服务并禁⽤⾃动启动,因为centos中NetworkManager服务与network服务冲突,默认是由NetworkManager接管⽹络服务,所以传统⽅式重启会出现启动失败,错误⽇志⼀般如下所⽰,管理员就得回到机房接显⽰器配置⽹络连接。
以绑定eth0和eth1为例1.通过vim设置eth0的IP地址和eth1的IP地址。
[root@x101 network-scripts]# vim ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=noneTYPE=EthernetMASTER=bond0 //将⽹卡指向bond0SLAVE=yesUSERCTL=[yes|no](⾮root⽤户是否可以控制该设备)[root@x101 network-scripts]# vim ifcfg-eth1DEVICE=eth1ONBOOT=yesNETBOOT=yesBOOTPROTO=noneTYPE=EthernetMASTER=bond0 //将⽹卡指向bond0SLAVE=yesUSERCTL=[yes|no](⾮root⽤户是否可以控制该设备)2.新建 /etc/sysconfig/network-scripts/ifcfg-bond0绑定配置⽂件[root@x101 network-scripts]# cat ifcfg-bond0DEVICE=bond0ONBOOT=yesNETBOOT=yesBOOTPROTO=noneTYPE=EthernetIPADDR=192.168.0.106PREFIX=24DNS=192.168.0.1NM_CONTROLLED=no[root@x101 network-scripts]#5.创建⽹卡绑定的驱动⽂件/etc/modprobe.d/⾃定义.conf,使得绑定后的⽹卡bond0能够⽀持绑定技术(bonding),同时定义⽹卡以mode6模式进⾏绑定,且出故障时⾃动切换时间为100毫秒ms,添加alias bond0 bondingoptions bond0 mode=6 miimon=100 max_bonds=2miimon是指多久时间要检查⽹路⼀次,单位是ms(毫秒)。
Linux网卡Bonding配置

Linux⽹卡Bonding配置⼀、bonding技术简介 bonding(绑定)是⼀种将n个物理⽹卡在系统内部抽象(绑定)成⼀个逻辑⽹卡的技术,能够提升⽹络吞吐量、实现⽹络冗余、负载等功能,有很多优势。
Linux 系统下⽀持⽹络 Bonding,也叫 channel Bonding,它允许你将 2 个或者更多的⽹卡绑定到⼀起,成为⼀个新的逻辑⽹卡,从⽽实现故障切换或者负载均衡的功能,具体情况要取决于 mode 参数的具体配置。
Linux系统bonding技术是内核层⾯实现的,它是⼀个内核模块(驱动)。
使⽤它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, ⼀般来说都⽀持.modinfo bondingbonding的七种⼯作模式bonding技术提供了七种⼯作模式,在使⽤的时候需要指定⼀种,每种有各⾃的优缺点.balance-rr (mode=0) 默认, 有⾼可⽤ (容错) 和负载均衡的功能, 需要交换机的配置,每块⽹卡轮询发包 (流量分发⽐较均衡).active-backup (mode=1) 只有⾼可⽤ (容错) 功能, 不需要交换机配置, 这种模式只有⼀块⽹卡⼯作, 对外只有⼀个mac地址。
缺点是端⼝利⽤率⽐较低balance-xor (mode=2) 不常⽤broadcast (mode=3) 不常⽤802.3ad (mode=4) IEEE 802.3ad 动态链路聚合,需要交换机配置,没⽤过balance-tlb (mode=5) 不常⽤balance-alb (mode=6) 有⾼可⽤ ( 容错 )和负载均衡的功能,不需要交换机配置 (流量分发到每个接⼝不是特别均衡)详细说明请参考⽹络上其他资料,了解每种模式的特点根据⾃⼰的选择就⾏, ⼀般会⽤到0、1、4、6这⼏种模式。
⼆、RHEL6 下的 Boding 配置: 在所有的 RHEL 版本下,⽬前都不⽀持在 NetworkManager 服务协作下实现 Bonding 配置.所以要么直接关闭 NetworkManager 服务,并取消其开机启动,要么在所有涉及 Bonding 的⽹卡配置⽂件中(包含ethx 或者 bondY),显式地添加⼀⾏:NM_CONTROLLED=no 要配置⽹卡 Bonding,你必须在/etc/sysconfig/network-scripts/⽬录下建⽴逻辑⽹卡的配置⽂件 ifcfg-bondX,⼀般 X 从 0 开始,依次增加.具体的⽂件内容根据参与 Bonding 的⽹卡类型的不同⼜有所差别,以最最常见的 Ethernet 为例,配置⽂件⼤致是这样的:DEVICE=bond0IPADDR=192.168.0.1NETMASK=255.255.255.0ONBOOT=yesBOOTPROTO=noneUSERCTL=noBONDING_OPTS="bonding parameters separated by spaces"NM_CONTROLLED=no BONDING_OPTS 这⼀⾏填写你需要的 Bonding 模式,⽐如 BONDING_OPTS="miimon=100 mode=1" ,下⾯也会介绍⼏种常见的配置⽅式和它代表的意义,这⾥暂时不展开说明.为了⽅便称呼,我们把Bongding 后的逻辑⽹卡 bondX 称为主⽹卡(Master),参与 Bonding 的物理⽹卡 ethY 称为⼦⽹卡(Slave). 主⽹卡配置⽂件创建完毕以后,⼦⽹卡的配置⽂件也需要做相应的改变,主要是添加 MASTER=和SLAVE=这两项参数,我们假设 2 张⼦⽹卡为 eth0 和 eth1,那么他们的配置⽂件⼤致的样⼦会是这样⼦:DEVICE=ethXBOOTPROTO=noneONBOOT=yesMASTER=bond0SLAVE=yesUSERCTL=noNM_CONTROLLED=no 像这样,分别修改 ifcfg-eth0 和 ifcfg-eth1 配置⽂件,DEVICE=ethX 中的 X ⽤相应的值代替.然后我们重启⽹络服务.service network restart这样⼦,⼦⽹卡为 eth0 和 eth1,主⽹卡为 bond0,模式为 mode 1 的⽹络 Bonding 就完成了rhel6 bonding 实例展⽰系统: rhel6⽹卡: eth2、eth3bond0:10.200.100.90负载模式: mode1(active-backup) # 这⾥的负载模式为1,也就是主备模式.1、关闭和停⽌NetworkManager服务service NetworkManager stopchkconfig NetworkManager offps: 如果有装的话关闭它,如果报错说明没有装这个,那就不⽤管2、加载bonding模块modprobe --first-time bonding3、创建基于bond0接⼝的配置⽂件[root@rhel6.6 network-scripts]# cat ifcfg-bond0DEVICE=bond0BOOTPROTO=noneIPADDR=10.200.100.90NETMASK=255.255.255.0ONBOOT=yesNM_CONTROLLED=noUSERCTL=noBONDING_OPTS="mode=1 miimon=200"4、SLAVE⽹卡的配置⽂件两种⼦⽹卡的配置⽂件如下[root@rhel6.6 network-scripts]# cat ifcfg-eth2DEVICE=eth2#HWADDR=14:58:D0:5A:0F:76NM_CONTROLLED=no#UUID=3b718bed-e8d4-4b64-afdb-455c8c3ccf91ONBOOT=yes#NM_CONTROLLED=yesBOOTPROTO=noneMASTER=bond0SLAVE=yesUSERCTL=no[root@rhel6.6 network-scripts]# cat ifcfg-eth3DEVICE=eth3#HWADDR=14:58:D0:5A:0F:77NM_CONTROLLED=no#UUID=988835c2-8bfa-4788-9e8d-e898f68458f0ONBOOT=yes#NM_CONTROLLED=yesBOOTPROTO=noneMASTER=bond0SLAVE=yesUSERCTL=no5、bonding信息查看重启⽹络服务器后bonding⽣效[root@rhel6.6 network-scripts]# ip a4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000link/ether c4:34:6b:ac:5c:9e brd ff:ff:ff:ff:ff:ff5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000link/infiniband a0:00:03:00:fe:80:00:00:00:00:00:00:00:02:c9:03:00:0a:6f:ba brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff10: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UPlink/ether c4:34:6b:ac:5c:9e brd ff:ff:ff:ff:ff:ffinet 10.200.100.90/24 brd 10.212.225.255 scope global bond0inet6 fe80::c634:6bff:feac:5c9e/64 scope linkvalid_lft forever preferred_lft forever[root@rhel6.6 network-scripts]# cat /proc/net/bonding/bond0Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)Bonding Mode: fault-tolerance (active-backup) # bond0接⼝采⽤mode1Primary Slave: NoneCurrently Active Slave: eth2MII Status: upMII Polling Interval (ms): 200Up Delay (ms): 0Down Delay (ms): 0Slave Interface: eth2MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: c4:34:6b:ac:5c:9eSlave queue ID: 0Slave Interface: eth3MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: c4:34:6b:ac:5c:9fSlave queue ID: 0进⾏⾼可⽤测试,拔掉其中的⼀条⽹线看丢包和延时情况, 然后在插回⽹线(模拟故障恢复),再看丢包和延时的情况.三、RedHat7配置bonding系统: Red Hat Enterprise Linux Server release 7.6 (Maipo)⽹卡: eno3、eno4bonding:bond0负载模式: mode1(active-backup)服务器上两张物理⽹卡eno3和eno4, 通过绑定成⼀个逻辑⽹卡bond0,bonding模式选择mode1注: ip地址配置在bond0上, 物理⽹卡不需要配置ip地址.1、关闭和停⽌NetworkManager服务RedHat7默认安装了NetworkManager,在配置前先关掉NetworkManager服务,否则可能会对bonding或造成问题。
linux双网卡绑定

一、L inux bonding研究及实现Linux Bonding本文介绍Linux(具体发行版本是CentOS5.6)下的双卡绑定的原理及实现。
Linux双网卡绑定实现是使用两块网卡虚拟成为一块网卡设备,这简单来说,就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。
这项技术在Sun和Cisco中分别被称为Trunking和Etherchannel技术,在Linux的2.4.x及其以后的内核则称为Bonding技术。
bonding的前提条件:网卡应该具备自己独立的BIOS芯片,并且各网卡芯片组型号相同。
同一台服务器上的网卡毫无疑问是是符合这个条件的。
Bonding原理bonding的原理:在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身MAC的以太网帧,过滤别的数据帧,以减轻驱动程序的负担;但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,bonding就运行在这种模式下,而且修改了驱动程序中的mac地址,将两块网卡的MAC地址改成相同,可以接收特定MAC的数据帧。
然后把相应的数据帧传送给bond驱动程序处理。
为方便理解bonding的配置及实现,顺便阐述一下Linux的网络接口及其配置文件。
在Linux 中,所有的网络通讯都发生在软件接口与物理网络设备之间。
与网络接口配置相关的文件,以及控制网络接口状态的脚本文件,全都位于/etc/sysconfig/netwrok-scripts/ 目录下。
网络接口配置文件用于控制系统中的软件网络接口,并通过这些接口实现对网络设备的控制。
当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如何对这些接口进行配置。
接口配置文件的名称通常类似于ifcfg-<name>,其中<name> 与配置文件所控制的设备的名称相关。
在所有的网络接口中,最常用的就是以太网接口ifcfg-eth0,它是系统中第一块网卡的配置文件。
Linux系统配置双网卡绑定bond0

Linux系统配置双⽹卡绑定bond01、bonding简述双⽹卡配置设置虚拟为⼀个⽹卡实现⽹卡的冗余,其中⼀个⽹卡坏掉后⽹络通信仍可正常使⽤,实现⽹卡层⾯的负载均衡和⾼可⽤性。
现在⼀般的企业都会使⽤双⽹卡接⼊,这样既能添加⽹络带宽,同时⼜能做相应的冗余,可以说是好处多多。
⽽⼀般企业都会使⽤linux操作系统下⾃带的⽹卡绑定模式,当然现在⽹卡产商也会出⼀些针对windows操作系统⽹卡管理软件来做⽹卡绑定(windows操作系统没有⽹卡绑定功能需要第三⽅⽀持)。
1.1 bonding原理⽹卡⼯作在混杂(promisc)模式,接收到达⽹卡的所有数据包,tcpdump⼯作⽤的也是混杂模式(promisc),将两块⽹卡的MAC地址修改为相同接收特定MAC的数据帧,然后把相应的数据帧传送给bond驱动程序进⾏处理。
1.2 Bonding模式(bonding mode)轮询策略(round robin),mode=0,按照设备顺序依次传输数据包,提供负载均衡和容错能⼒主备策略(active-backup),mode=1,只有主⽹卡处于⼯作状态,备⽹卡处于备⽤状态,主⽹卡坏掉后备⽹卡开始⼯作,提供容错能⼒异或策略(load balancing (xor)),mode=2,根据源MAC地址和⽬的MAC地址进⾏异或计算的结果来选择传输设备,提供负载均衡和容错能⼒⼴播策略(fault-tolerance (broadcast)),mode=3,将所有数据包传输给所有接⼝通过全部设备来传输所有数据,⼀个报⽂会复制两份通过bond下的两个⽹卡分别发送出去,提供⾼容错能⼒动态链接聚合(lacp),mode=4,按照802.3ad协议的聚合⾃动配置来共享相同的传输速度,⽹卡带宽最⾼可以翻倍,链路聚合控制协议(LACP)⾃动通知交换机聚合哪些端⼝,需要交换机⽀持 802.3ad协议,提供容错能⼒输出负载均衡模式(transmit load balancing),mode=5,输出负载均衡模式,只有输出实现负载均衡,输⼊数据时则只选定其中⼀块⽹卡接收,需要⽹卡和驱动⽀持ethtool命令输⼊/输出负载均衡模式(adaptive load balancing),mode=6,输⼊和输出都实现负载均衡,需要⽹卡和驱动⽀持ethtool命令2、⽹卡配置⽂件的配置2.1 配置环境 环境:系统CentOS 6.7 + 虚拟机 VMware 12 ⾄少两块物理⽹卡(VMware上添加eth0,eth1) 2.2 需要添加或修改的配置⽂件有5个(mode=1) 这5个配置⽂件是: /etc/sysconfig/network-scripts/ifcfg-eth{0,1} /etc/sysconfig/network-scripts/ifcfg-bond0 /etc/modprobe.d/dist.conf /etc/rc.local2.2.1 /etc/sysconfig/network-scripts/ifcfg-{eth0,eth1,bonding0}修改或添加提⽰:先备份好eth0和eth1,再修改这⼏个⽂件以下是修改好的三个⽹卡配置⽂件的参数[root@ant network-scripts]# vimdiff ifcfg-eth0 ifcfg-eth1 ifcfg-bond02.2.2 修改/etc/modprobe.d/dist.conf⽂件在此⽂件中添加以下内容:alias bond0 bonding,表⽰系统在启动时加载bonding模块,对外虚拟⽹络接⼝设备为 bond0miimon=100,表⽰系统每100ms监测⼀次链路连接状态,如果有⼀条线路不通就转⼊另⼀条线mode=1,表⽰绑定模式为1primary=eth0,系统⾸先eth0作为bond0接⼝与外界信息的传输接⼝2.2.3 修改配置⽂件/etc/rc.local在此⽂件中添加以下内容:modprobe bonding miimon=100 mode=12.2.4 重启⽹络(service network restart),并查看三个接⼝的mac地址使⽤ifconfig命令显⽰,bond0,eth1,eth2物理地址相同,提⽰三个⽹卡均通过⼀个ip主机端⼝与外界通信但是,我们可以看到,在mode=1的情况下,当前bond0采⽤eth0通信,实际的物理⽹卡地址见下图:3、验证⽹络的连通性没有丢包,⽹络连通性可。
Linux多网卡绑定及子接口

Linux多网卡绑定、IP别名在介绍多网卡绑定以及子接口技术之前,首先来介绍一下查看网卡信息的指令操作。
查看网卡线缆状态:mii-tool eth0 #命令显示网卡的底层信息(双工,速率,物理连接是否正常等信息)查看网卡底层信息:ethtool eth0 #此命令显示的网卡信息较为详细,作为高级的排错指令ethtool -i eth0 查看网卡驱动信息[root@www ~]# ethtool -i eth0driver: pcnet32version: 1.35firmware-version:bus-info: 0000:02:01.0ethtool -S eth0 查看网卡状态统计信息子接口(IP别名):CentOS和RHEL默认会启用NetworkManager对网卡管理,Linux下可以通过IP别名(子接口)功能为一个物理网卡添加多个IP地址;要使用IP别名(子接口)需要关闭NetworkManager服务。
如下所示:service NetworkManager stopchkconfig NetworkManager off#此服务对网卡进行管理在功能上来讲很单一,实现的功能很少;使用ip命令为一个接口添加别名:(或者通过ifconfig命令来实现)ip addr add 10.1.10.118/24 dev eth0 label eth0:0eth0:1永久添加别名,需要在/etc/sysconfig/network-scripts/中添加配置文件:文件名:ifcfg-eth0:0内容如下所示:DEVICE=eth0:0IPADDR=10.1.10.118PREFIX=24 或者NETMASK 255.255.255.0 (在这里直接使用地址前缀信息)ONPARENT=yes #子接口的依附关系;备注:使用多网卡的主机上需要将NetworkManager服务关闭,避免出现问题Linux下可以通过多网卡绑定来提升网卡的稳定性及带宽,多网卡绑定通过将多个物理网卡绑定为一个逻辑网卡的形式创建。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux双网卡绑定实现.txt*一篇一篇的翻着以前的的签名,那时候的签名有多幼稚就有多么的幼稚。
你连让我报复的资格都没有-〞好想某天来电显示是你的号码。
好想某天你的状态是为我而写。
有些人,我们明知道是爱的,也要去放弃,因为没结局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.编辑虚拟网络接口配置文件,指定网卡IPvi /etc/sysconfig/ network-scripts/ ifcfg-bond0[root@redflag root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0 2 #vi ifcfg-bond0将第一行改成 DEVICE=bond0# cat ifcfg-bond0DEVICE=bond0BOOTPROTO=staticIPADDR=172.31.0.13NETMASK=255.255.252.0BROADCAST=172.31.3.254ONBOOT=yesTYPE=Ethernet这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。
将上述信息指定到虚拟适配器(bonding)中即可。
[root@redflag network-scripts]# cat ifcfg-eth0DEVICE=eth0USERCTL=noBOOTPROTO=noneONBOOT=yesMASTER=bond0SLAVE=yes[root@redflag network-scripts]# cat ifcfg-eth1DEVICE=eth1USERCTL=noBOOTPROTO=noneONBOOT=yesMASTER=bond0SLAVE=yes3 # vi /etc/modules.conf编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0加入下列两行alias bond0 bondingoptions 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 eth1route add -net 172.31.3.254 netmask 255.255.255.0 bond0route add -net 192.168.228.0 netmask 255.255.255.0 gw 192.168.228.153 dev eth0#service network restart到这时已经配置完毕重新启动机器.重启会看见以下信息就表示配置成功了................Bringing up interface bond0 OKBringing up interface eth0 OKBringing up interface eth1 OK................下面我们讨论以下mode分别为0,1时的情况mode=1工作在主备模式下,这时eth1作为备份网卡是no arp的[root@redflag network-scripts]# ifconfig 验证网卡的配置信息bond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8Binet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1RX packets:18495 errors:0 dropped:0 overruns:0 frame:0TX packets:480 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:1587253 (1.5 Mb) TX bytes:89642 (87.5 Kb)eth0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8Binet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1RX packets:9572 errors:0 dropped:0 overruns:0 frame:0TX packets:480 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:833514 (813.9 Kb) TX bytes:89642 (87.5 Kb)Interrupt:11eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8Binet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0UP BROADCAST RUNNING NOARP SLAVE MULTICAST MTU:1500 Metric:1RX packets:8923 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:753739 (736.0 Kb) TX bytes:0 (0.0 b)Interrupt:15那也就是说在主备模式下,当一个网络接口失效时(例如主交换机掉电等),不回出现网络中断,系统会按照cat /etc/rc.d/rc.local里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能.在mode=0 负载均衡工作模式,他能提供两倍的带宽,下我们来看一下网卡的配置信息[root@redflag root]# ifconfigbond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8Binet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1RX packets:2817 errors:0 dropped:0 overruns:0 frame:0TX packets:95 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:226957 (221.6 Kb) TX bytes:15266 (14.9 Kb)eth0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8Binet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1RX packets:1406 errors:0 dropped:0 overruns:0 frame:0TX packets:48 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:113967 (111.2 Kb) TX bytes:7268 (7.0 Kb)Interrupt:11eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8Binet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1RX packets:1411 errors:0 dropped:0 overruns:0 frame:0TX packets:47 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:112990 (110.3 Kb) TX bytes:7998 (7.8 Kb)Interrupt:15在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用.通过查看bond0的工作状态查询能详细的掌握bonding的工作状态[root@redflag bonding]# cat /proc/net/bonding/bond0bonding.c:v2.4.1 (September 15, 2003)Bonding Mode: load balancing (round-robin)MII Status: upMII Polling Interval (ms): 0Up Delay (ms): 0Down Delay (ms): 0Multicast Mode: all slavesSlave Interface: eth1MII Status: upLink Failure Count: 0Permanent HW addr: 00:0e:7f:25:d9:8aSlave Interface: eth0MII Status: upLink Failure Count: 0Permanent HW addr: 00:0e:7f:25:d9:8bLinux下通过网卡邦定技术既增加了服务器的可靠性,又增加了可用网络带宽,为用户提供不间断的关键服务。