【Linux】Linux双网卡绑定实现

简介: Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。
Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。
   在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理
img_e218f141b02aeb98e74c8d38a1c67459.jpg
测试环境版本:
CentOS release 5.3 (Final) X86_64
2.6.18-128.el5
具体的配置步骤如下:
1 新建/etc/sysconfig/network-scripts/ifcfg-bond0
[root@rac4 network-scripts]# cat ifcfg-bond0      
# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=bond0
BOOTPROTO=static
IPADDR=10.250.7.220
NETMASK=255.255.255.0
BROADCAST=10.250.7.255
ONBOOT=yes
TYPE=Ethernet
GATEWAY=10.250.7.254
USERCTL=no
2 更改需要bond的网卡的属性:
[root@rac4 network-scripts]# cat ifcfg-eth0       
# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
[root@rac4 network-scripts]# cat ifcfg-eth1
# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
3 编辑/etc/modprobe.conf文件,加入以下红色标记的内容      
[root@rac4 network-scripts]# vi /etc/modprobe.conf
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix
alias eth0 e1000
alias eth1 e1000
alias bond0 bonding
options 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)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.
4 加入/etc/rc.d/rc.local启动项 红色标记内容 
[root@rac4 network-scripts]# vi /etc/rc.d/rc.local 
#!/bin/sh
# This script. will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style. init stuff.
touch /var/lock/subsys/local
ifenslave bond0 eth0 eth1
5 启动bond0
[root@rac4 network-scripts]# ifconfig  bond0 10.250.7.220 up
当使用ifenslave 启动的时候报出如下错误:启动bond0的时候已经将eth0 eth1添加到/sys/class/net/bond0/bonding/slaves 里面了
[root@rac4 network-scripts]# ifenslave  bond0 eth0 eth1
Illegal operation: The specified slave interface 'eth0' is already a slave
Master 'bond0', Slave 'eth0': Error: Enslave failed
Illegal operation: The specified slave interface 'eth1' is already a slave
Master 'bond0', Slave 'eth1': Error: Enslave failed
[root@rac4 network-scripts]# ifenslave  bond0  eth1    
Illegal operation: The specified slave interface 'eth1' is already a slave
Master 'bond0', Slave 'eth1': Error: Enslave failed
最后重启服务器:
[root@rac4 ~]# reboot
下面讨论一下绑定网卡的特性:
当bonding 属性 mode=1时,绑定网卡工作在主备模式下,这时eth1作为备份网卡是no arp的 
验证网卡的配置信息:
[root@rac4 ~]# ifconfig                                
bond0     Link encap:Ethernet  HWaddr 00:50:56:8F:22:48  
          inet addr:10.250.7.220  Bcast:10.250.7.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe8f:2248/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:1109 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:120 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:84101 (82.1 KiB)  TX bytes:13835 (13.5 KiB)
eth0      Link encap:Ethernet  HWaddr 00:50:56:8F:22:48  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:566 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:43053 (42.0 KiB)  TX bytes:5791 (5.6 KiB)
          Base address:0x2000 Memory:d8920000-d8940000 
eth1      Link encap:Ethernet  HWaddr 00:50:56:8F:22:48  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:543 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:41048 (40.0 KiB)  TX bytes:8214 (8.0 KiB)
          Base address:0x2040 Memory:d8940000-d8960000 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:5694 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:5694 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8581664 (8.1 MiB)  TX bytes:8581664 (8.1 MiB)
[root@rac4 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: fault-tolerance (active-backup) 主备模式
Primary Slave: None
Currently Active Slave: eth0 当前工作网卡为eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:22:48
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:7d:6
mode=1时,当一个网络接口失效时(例如主交换机掉电等),不回出现网络中断,系统会按照cat /etc/rc.d/rc.local里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能.
对于mode=0 负载均衡工作模式,此模式能提供两倍的带宽, 在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用。通过查看bond0的工作状态查询能详细的掌握bonding的工作状态:
[root@rac4 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: load balancing (round-robin)--负载模式
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:22:48
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:7d:6f
[root@rac4 ~]# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:50:56:8F:22:48  
          inet addr:10.250.7.220  Bcast:10.250.7.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe8f:2248/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:376 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:121 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:29934 (29.2 KiB)  TX bytes:13014 (12.7 KiB)
eth0      Link encap:Ethernet  HWaddr 00:50:56:8F:22:48  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:203 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15858 (15.4 KiB)  TX bytes:8146 (7.9 KiB)
          Base address:0x2000 Memory:d8920000-d8940000 
eth1      Link encap:Ethernet  HWaddr 00:50:56:8F:22:48  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:173 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14076 (13.7 KiB)  TX bytes:4868 (4.7 KiB)
          Base address:0x2040 Memory:d8940000-d8960000 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:3080 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:3080 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4806596 (4.5 MiB)  TX bytes:4806596 (4.5 MiB)

img_e25d4fb2f8de1caf41a735ec53088516.png双网卡绑定的拓扑图.JPG

目录
相关文章
|
存储 消息中间件 容灾
阿里IM技术分享(八):深度解密钉钉即时消息服务DTIM的技术设计
本文是国内企业IM的事实王者钉钉首次对外深度解密其即时消息服务(即DingTalk IM,简称DTIM)的技术设计实践。
2149 0
阿里IM技术分享(八):深度解密钉钉即时消息服务DTIM的技术设计
|
机器人 数据中心
几个AC/DC电源模块的工业应用场景案例
几个AC/DC电源模块的工业应用场景案例
几个AC/DC电源模块的工业应用场景案例
|
机器学习/深度学习 算法 大数据
《特征工程:自动化浪潮下的坚守与变革》
特征工程在机器学习中至关重要,它将原始数据转化为模型可用的特征,提升模型性能。尽管自动化方法如自动编码器和特征选择算法逐渐兴起,能够在特定场景下高效处理数据,但人类专家的领域知识和直觉仍不可替代。未来,特征工程与自动化方法将融合共生,通过优势互补,共同推动机器学习技术的进步与发展。
362 15
|
前端开发 测试技术
接口测试:Mock 的价值与意义
Mock测试用于替代复杂或不可用的对象,常见于前后端交互、第三方系统及硬件解耦。它不依赖真实数据,节省工作量和联调时间。核心包括匹配规则(决定修改哪个接口)和模拟响应(设计篡改内容以符合测试用例)。
|
JavaScript Java 关系型数据库
基于SpringBoot与Vue实现前后端分离学生选课管理系统
基于SpringBoot与Vue实现前后端分离学生选课管理系统
378 0
|
3天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
8149 36
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
3天前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
547 4
|
3天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
494 2
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
2天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
3天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
690 153

热门文章

最新文章