阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下实现多网卡绑定详解

448次阅读
没有评论

共计 4666 个字符,预计需要花费 12 分钟才能阅读完成。

使用 bind 绑定多个网卡

由于服务器上对于可用性的要求都比较高,对于各项功能都会有有冗余设计,比如,磁盘、电源、网卡、甚至服务器本身等等,今天尝试做一下网卡绑定实现网卡的冗余。

网卡绑定的实现表面上看起来有些像是硬盘实现逻辑卷,都是通过创建一个逻辑设备来实现的。实现网卡的绑定其实还挺简单的,相比逻辑卷更容易理解。

首先,我们在 /etc/sysconfig/network-scripts/ 目录下创建一个文件,文件名通常会叫 ifcfg-bondxx, 除了 ifcfg- 后面的内容其实都是可以自己定义的,但通常都会写成 bind 之类的,文件的内容其实和普通网卡配置文件的内容是一样的,就像这样

DEVICE=bond1
BOOTPROTO=static
IPADDR=172.20.16.121
GATEWAY=172.20.0.1
PREFIX=16
BONDING_OPTS=”miimon=100 mode=1″

第一行的 DEVICE 是你给这个逻辑设备指定的名字,这个名字得和文件名的后半部分一样。
第二行是指定 IP 的获取方式,你也可以写 dhcp 让他自动获取,如果是自动获取,那么 IPADDR、GATEWAY 和 PREFIX 都不需要再填
最后一行是比较重要的,必须得填,这个是绑定网卡的选项,mode 代表绑定网卡的工作模式,miimon 是一个时间间隔,代表备份网卡每隔多久查询一次工作网卡的工作情况。单位是 ms
以上只是第一步,逻辑网卡已经创建好了,下面就要指定那些网卡属于这个逻辑网卡了。也很简单,只要把你想加入这个逻辑网卡的物理网卡的配置文件稍微修改一下就可以了。就像这样

TYPE=”Ethernet”
BOOTPROTO=static
NAME=eth1
MASTER=bond1
SLAVE=yes
USERCTL=no
DEVICE=eth1
ONBOOT=yes

IPADDR=192.168.20.110
GATEWAY=192.168.0.1
PREFIX=16

其实后面的三行是无效的,不过我懒得删掉了,比较重要的是 MASTER=bond1,SLAVE=yes,这两行指定了该网卡是属于逻辑网卡 bond1 的从属设备,DEVICE 也是必须的,它指明了这个配置文件是给哪个网卡用的,其他的没有也可以,不过建议写上 ONBOOT=yes
现在我们添加了第一个网卡到逻辑网卡,添加第二块的方法和第一个是一样的。换个文件而已。不在说。
然后我们就可以重启我们的网络服务了,在 CentOS7 中是用 systemctl restart network 之后就可以看看成果了。如果没有问题的话在执行 ifconfig 之后会看到下面的内容:

[root@cent7 network-scripts]# ifconfig
bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 172.20.16.121  netmask 255.255.0.0  broadcast 172.20.255.255
        inet6 fe80::250:56ff:fe3b:6a38  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:3b:6a:38  txqueuelen 1000  (Ethernet)
        RX packets 212  bytes 21252 (20.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 1000 (1000.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

……

eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:50:56:3b:6a:38  txqueuelen 1000  (Ethernet)
        RX packets 1224  bytes 176616 (172.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 265  bytes 73426 (71.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:50:56:3b:6a:38  txqueuelen 1000  (Ethernet)
        RX packets 286  bytes 35478 (34.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 62  bytes 5878 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

最明显的就是多了一个叫 bond1 的网卡,而且是有 IP 的,eth1 和 2 有同样的 mac 地址,并且都没有 IP,我们可以通过查看 /proc/net/bonding/bond1 这个文件中的内容来看 bond1 的工作情况,如果你乐意还可以手工下线一个网卡看看这个绑定的设备的工作情况。
还记得 bond1 配置文件中的 BONDING_OPTS=”miimon=100 mode=1″ 这一行吗,其实这个 mode 是有好几种的,不过我们常用的并不多,比如 mode0 是轮巡代表数据包会从头到尾经过每一个网卡,这种模式提供了负载均衡的能力和一定的容错性,还有 mode3,这种模式数据包会独立通过每一个网卡,每个网卡也会给一个响应,具体体现就是数据的每一个请求都会得到多个回应。如果你想知道更多,下面有一个官方的文档。
https://www.kernel.org/doc/Documentation/networking/bonding.txt

使用 team 绑定多个网卡

在 centos7 中也可以使用 bond 进行多网卡绑定,不过 centos7 中有更好的实现方法,建议在 centos7 中使用。首先还是修改配置文件的方法进行绑定。其格式和步骤和 bond 并没有什么区别。看一下文件格式。
首先是 team0 也就是那个逻辑网卡配置文件的格式

DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG=”{\”runner\”:{\”name\”:\”activebackup\”}}”
BOOTPROTO=none
IPADDR=172.20.16.121
PREFIX=16
NAME=team0
ONBOOT=yes

大部分内容都是一样的,只有第三行的 TEAM_CONFIG 有些差别,不过第三行除了 activebackup 这个单词,其他部分是不需要变动的,这个单词对应的就是 mode 部分,比如 activebackup 对应 mode1,其他还有比如:broadcast roundrobin activebackup loadbalance
然后就是从网卡的配置,也是差不多的

DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=eth1
ONBOOT=yes

配置文件修改之后就可以重启网络服务生效了。完成之后的 ifconfig 和之前的并无太大差别:

[root@cent7 network-scripts]# ifconfig
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether be:27:a5:16:09:f8  txqueuelen 1000  (Ethernet)
        RX packets 1280  bytes 182697 (178.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 299  bytes 75980 (74.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether be:27:a5:16:09:f8  txqueuelen 1000  (Ethernet)
        RX packets 359  bytes 42823 (41.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 72  bytes 6582 (6.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        …

team0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.20.16.121  netmask 255.255.0.0  broadcast 172.20.255.255
        inet6 fe80::bc27:a5ff:fe16:9f8  prefixlen 64  scopeid 0x20<link>
        ether be:27:a5:16:09:f8  txqueuelen 1000  (Ethernet)
        RX packets 36  bytes 3261 (3.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19  bytes 1326 (1.2 KiB)
        TX errors 0  dropped 2 overruns 0  carrier 0  collisions 0

或者也可以使用 nmcli 命令直接生成对应的配置文件

nmcli con add type team con-name team0 ifname team0 config ‘{“runner”: {“name”: “loadbalance”}}’
nmcli con mod team0 ipv4.addresses 192.168.1.100/24
nmcli con mod team0 ipv4.method manual
nmcli con add con-name eth1 type team-slave ifname eth1 master team0
nmcli con add con-name eth2 type team-slave ifname eth2 master team0
nmcli con up team0
nmcli con up eth1
nmcli con up eth2

上面的前三行是可以合成一行的,只是太长了,
add 是增加
type team 表示增加的是一个 team 类型的
con-name team0 指定连接名称
ifname team0 表示指定接口,
config 这部分是配置信息,和之前手写配置文件内容格式相同
mod 是修改指定连接
ipv4.addresses 指定 ip 地址
ipv4.method manual 表示手动指定 ip,如果为空则自动选择(如果使用手动 ip,此选项必须添加)
之后的两行
type team-slave 表示该设备是从属设备
master team0 指定设备连接属于谁
最后三行启用相关设备。
使用 teamdctl team0 stat 可以查看 team 连接的详细信息

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4666字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7995094
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...