Linux下的网卡Bonding
1. 网卡Bonding一共有0-6七种mode,具体区别请自行搜索;
2. 建议通过nmtui命令在交互模式下配置,这样不会落下重要的字段,也不用去记忆到底有哪些字段;
3. 我的实验环境是VMWare Workstation+CentOS7,想实现网卡容错,所以选了mode 1(有些文章用了mode 6,但实测不行)。以下是配置文件:
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
NAME=ens32
UUID=93557b68---beeb-dc206f497946
DEVICE=ens32
ONBOOT=yes
MASTER=0e3677f7-6ba2--bdf3-44e18b5cfa1b
SLAVE=yes [root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
NAME=ens34
UUID=05aab6ff--40b7-b0e2-15b04f2089e4
DEVICE=ens34
ONBOOT=yes
MASTER=0e3677f7-6ba2--bdf3-44e18b5cfa1b
SLAVE=yes [root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
DNS1=10.197.80.104
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=bond0
UUID=0e3677f7-6ba2--bdf3-44e18b5cfa1b
ONBOOT=yes
BONDING_OPTS="updelay=0 resend_igmp=1 use_carrier=1 miimon=100 arp_all_targets=any ad_user_port_key=0 min_links=0 tlb_dynamic_lb=1 downdelay=0 xmit_hash_policy=layer2 packets_per_slave=1 primary_reselect=always arp_validate=none fail_over_mac=none ad_actor_sys_prio=65535 mode=1 lp_interval=1 lacp_rate=slow primary=ens32 all_slaves_active=0 arp_interval=0 ad_select=stable num_unsol_na=1 num_grat_arp=1"
IPADDR=10.199.89.30
PREFIX=
GATEWAY=10.199.89.1
4. 按照以上配置,重启网络服务时VMWare Workstation会报以下错误,因为此时你会发现两块物理网卡的mac地址一样了,所以我们要使用另一种办法:fail_over_mac=1,通过这个参数控制bond0使用active网卡的mac地址,而不去修改物理网卡自身的mac地址。(附上转来的解释)

解释一:linux网卡bonding的备份模式实验在真实物理机做完全没问题(前提是linux内核支持),但是在VMware Workstation虚拟机中做就会出现bond0能够正常启动也能够正常使用,只不过没有起到备份模式的效果。当使用ifconfig eth0 down后,网络出现不通现象。VMware Workstation给出提示:这个MAC地址是eth0的,eth1不能使用。
这种现象需要利用Linux的内核知识解决:bond0获取mac地址有两种方式:一种是从第一个活跃网卡中获取mac地址,然后其余的SLAVE网卡的mac地址都使用活跃网卡的mac地址;另一种是使用fail_over_mac参数,是bond0使用当前活跃网卡的mac地址,mac地址随着活跃网卡的状态转换而变化。VMware Workstation不支持第一种获取mac地址的方式,所以为了达到网卡绑定的效果,必须加上fail_over_mac=1的参数。
解释二:默认fail_over_mac=none,当发生错误时,只改slave的mac不改bond;fail_over_mac=1时,只改bond不改slave。
5. 查看Bonding的状态:cat /proc/net/bonding/bond0
6. 切换主从网卡可以采用拔插网线,ifdown/ifup,还有个办法是 ifenslave --change bond0 eth34(据网友说此法不会引起网络闪断,但是我实测偶尔还是闪断)
Linux下的网卡Bonding的更多相关文章
- Linux下双网卡绑定(bonding技术)
Linux网卡绑定探析 2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的 ...
- Linux下多网卡同网段多IP网络分流设定方法
Linux下多网卡同网段多IP网络分流设定方法 -- :: 标签:Linux下多网卡同网段多IP网络分流设定方法 当服务器需要较高的网络流量时,在其它资源不造成瓶颈的情况下无疑会用到多网卡. 第1选项 ...
- Linux下设置网卡静态ip
Linux下设置网卡静态ip 如果是服务器版,没有图形界面只用用命令行修改配置文件 如果是客户端版本,可以用图形界面 配置的前提是要在root用户下才能重启网卡服务 图形界面: system-conf ...
- Linux下修改网卡IP、DNS和网关
Linux下修改网卡IP和网关 建议通过终端字符方式下来修改 一.修改IP地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOO ...
- Linux 下修改网卡MAC地址
Linux下修改网卡MAC地址 by:授客 QQ:1033553122 例子:修改网卡接口eth0的mac地址 #停用网卡接口,比如eth0 # ifconfig eth0 down #编辑对应的网卡 ...
- Linux 下修改网卡接口名
Linux下修改网卡接口名 by:授客 QQ:1033553122 (测试环境:CentOS-6.0-x86_64-bin-DVD1.iso+Vmware) 作用 可以用于解决类似如下Device n ...
- Linux下查看网卡驱动和版本信息
Linux下查看网卡驱动和版本信息 查看网卡生产厂商和信号 查看基本信息:lspci 查看详细信息:lspci -vvv # 3个小写的v 查看网卡信息:lspci | grep Ethernet 查 ...
- (笔记)Linux下检测网卡与网线连接状态
http://blog.chinaunix.net/space.php?uid=20357359&do=blog&cuid=1798479 Linux下检测网卡与网线连接状态,使用io ...
- linux下一个网卡配置多个ip【虚拟ip】
Linux下配置网卡ip别名何谓ip别名?用windows的话说,就是为一个网卡配置多个ip.什么场合增加ip别名能派上用场?布网需要.多ip访问测试.特定软件对多ip的需要...and so on. ...
随机推荐
- 2-4 list练习题
参考答案 >>> names = [] >>> names.append('old_driver') >>> names.append('rain ...
- c#使用 HtmlAgilityPack来进行抓取和解析来获得table表格信息
项目上要用到抓取网页,最后选用了HtmlAgilityPack来进行. 官网地址:https://html-agility-pack.net/,可以看一下 基础的: // From File var ...
- Codeforces 469 D. Two Sets (并查集)
题目链接:Two Sets 题意: 有n个数,要分成A.B两组,要求如果x∈A则a-x∈A,如果x∈B则b-x∈B,问是否存在一种符合要求的分法. 题解: 并查集,先增加两个点表示A和B集合的根,对于 ...
- Java虚拟机笔记(二):GC垃圾回收和对象的引用
为什么要了解GC 我们都知道Java开发者在开发过程中是不需要关心对象的回收的,因为Java虚拟机的原因,它会自动回收那些失效的垃圾对象.那我们为什么还要去了解GC和内存分配呢? 答案很简单:当我们需 ...
- pycharm导入路径问题
博主在导入自定义模块式出现模块下有红色波浪线,如下: 例如from conf import setting 导入时会从当前目录下找找到youkuClient就不会再往下找了,所以引入模块的路径不能夸路 ...
- 菜鸟vimer成长记——第2.4章、cmd-line模式
cmd-line模式又有3个类型:Ex 命令(ex commands).查找模式(Search patterns).Filter 命令(Filter commands).本文主要重点的是Ex 命令和S ...
- Jenkins + Gitlab + Ansible--playbook 代码上线流程(文末有免费视频)
jenkins 构建是支持 git 选择分支 安装 Git Parameter 插件在系统管理中的插件管理 然后点击选插件,在右上角输入 Git Parameter,找到 Git Paramete ...
- C++默认成员函数
1.什么是面向对象? 概念:(Object Oriented Programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法. 对象指的是类的实例,将对象作为程序的基本单元,将程 ...
- Docker创建数据卷容器
docker create --name test_4 -v /data_4 nginx创建一个test_4数据卷容器,在该容器的/data_4目录挂载数据卷 使用数据卷容器时,无须保证数据卷容器处于 ...
- 如何在忘记mysql的登录密码时更改mysql登录的密码(window及linux)
最近一直在边学习边开发java项目,理所当然的就少不了跟数据库打交道了,但是有时候就会脑子一短路,把mysql的登录密码给忘记了,这个时候我们又很急切的需要进到数据库中查看数据,那这个时候要怎么才能改 ...