简介
bond
功能用于多网卡的设备,也可以用于有线和无线网络同时接入一个网络的情况,主要就是将两张网卡当成一张网卡来使用,可以起到带宽加倍的作用,也可以起到安全冗余的作用,一个网卡挂了的话另一个网卡还能继续完成所有的工作。
过程
总的步骤如下
- 内核选项打开
bond
相关选项并编译 - 编译
ifenslave
工具 - 升级内核,并加载
bonding
驱动 ifenslave
绑定网卡
打开bond相关内核选项
路径:
-> Device Drivers
-> Network device support (NETDEVICES [=y])
-> Network core driver support (NET_CORE [=y])
我们把bonding
选择成编译为模块的形式
然后编译新的内核跟驱动,驱动就在drivers/net/bonding/bonding.ko
ifenslave
网上的说法是,ifenslave.c
源码在Documentation/networking
下,但是我翻遍我的4.1.15
版本的内核源码,并没有找到,后来在kernel.org
中发现,被删除了
然后查看内核中的Documentation/networking/bonding.txt
文档,其实也提到了用sysfs
的方法来代替ifenslave
的功能,这个最后再介绍
那现在没有ifenslave.c
文件,就去老版本的内核找,恰巧我在这里,3.10
版本中,在Documentation/networking
找到了ifenslave.c
文件,进行交叉编译
arm-linux-gnueabihf-gcc -Wall -O ifenslave.c -o ifenslave
安装bonding驱动
升级内核后,加载bonding
驱动前先确保要绑定的网卡是down
状态,在我这里我是eth0
跟wlan0
执行命令
ifconfig eth0 down
ifconfig wlan0 down
这时候加载驱动,可以看到bond0
网卡
insmod bonding.ko mode=active-backup
接着配置IP
(一定要先配置,不然后面会有奇怪的报错)
ifconfig bond0 192.168.1.211 netmask 255.255.255.0
ifenslave绑定bond网卡
现在绑定wlan0
网卡
./ifenslave bond0 wlan0
同理绑定eth0
网卡
./ifenslave bond0 eth0
测试
设备ping
我的主机192.168.1.104
我的主机ping
我的设备三个网卡的地址
其他
sysfs实现ifenslave
前面提到ifenslave
源码被删除了,有sysfs
的方法,然后自己在网上搜到这个帖子提到用sysfs
的方法,具体的内容可以看这个帖子的原文,帖子中也有讲sysfs
的用法。这里就简单的实现一下。
确保eth0
跟wlan0
网卡都是down
的情况下这时候加载bonding
驱动后,输入
echo +eth0 > /sys/class/net/bond0/bonding/slaves
同理wlan0
echo +wlan0 > /sys/class/net/bond0/bonding/slaves
这时候电脑去ping
这三个IP
都是可以的
双网卡
好像如果是双网卡的话 ,貌似只能用其中一个,而且还是先up
上的那个,这个估计可能得看内核的源码中是怎么去做的这件事情
但是主机去ping
这两个网址都是ok
的
这个时候比如是eth0
能用,wlan0
不行,如果把 eth0
给down
掉,这个时候wlan0
又能用了