linux删除slave网卡,Linux bonding网卡与其slave共同使用
在昨天的一文中,我吐槽了Linux各种虚拟网卡设计的不完备,也只是吐槽,其实我并没有别的意思,我也懒得去做一些hack型的配置去规避这些不完备,我只是吐槽而已。
昨晚,有网友要求我给出一些解法,因为他也遇到了这个问题:
他希望被bonding的eth0可以独立工作,是的,作为管理口。
于是,这位朋友要求我给出一个解法,我意识到这个需求的普遍性,而且不是每个人都想去配置什么macvlan,ipvlan的,于是,我就想再写点。
在我的环境中:
enp0s9被bonding到bond0。
我希望bond0处理2.0.0.0/8的流量。
我希望enp0s9处理1.0.0.0/8的流量。
我不希望以上通信受制于bonding的mode。
那么开始吧。
先看下为什么在enp0s9被bonding之后不通,stap一下子就看出来了,先看下现象:
[root@localhost bond]# arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.56.1 ether 0a:00:27:00:00:00 C enp0s8
[root@localhost bond]# ping 1.1.1.2
PING 1.1.1.2 (1.1.1.2) 56(84) bytes of data.
From 1.1.1.1 icmp_seq=1 Destination Host Unreachable
From 1.1.1.1 icmp_seq=2 Destination Host Unreachable
From 1.1.1.1 icmp_seq=3 Destination Host Unreachable
From 1.1.1.1 icmp_seq=4 Destination Host Unreachable
^C
--- 1.1.1.2 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2999ms
pipe 4
[root@localhost bond]# arp -n
Address HWtype HWaddress Flags Mask Iface
1.1.1.2 (incomplete) enp0s9
192.168.56.1 ether 0a:00:27:00:00:00 C enp0s8
很清晰是不是?
再看下stap的输出:
[root@localhost bond]# stap -e 'probe kernel.function("arp_process"){name = kernel_string($skb->dev->name); printf("%s\n", name);}'
bond0
bond0
bond0
Oh,yes!arp被bond0接管了,enp0s9作为slave不再呈现独立的网卡。
怎么办?改了便是!
这里我觉得就是bonding本身以及其rx_handler实现有问题!!用MAC地址区分一下不就得了??
master把slave屏蔽本身就不合理!!
好,我就按照我的使用场景,改了它,首先,我把作为master的bond0和作为slave的enp0s9的MAC地址区分开,分别设置,然后再修改arp_process的处理逻辑:
%{
#include
#include
%}
function change_indev:long(skb:long)
%{
struct sk_buff *_skb = (struct sk_buff *)STAP_ARG_skb;
STAP_PRINTF(" aa :%s\n", _skb->dev->name);
if (!strcmp(_skb->dev->name, "bond0")) {
struct bonding *bond = netdev_priv(_skb->dev);
struct slave *curr = bond->curr_active_slave;
STAP_PRINTF(" aa :%s\n", curr->dev->name);
// 更换一下接收device即可
_skb->dev = curr->dev;
}
%}
probe kernel.function("arp_process")
{
change_indev($skb);
}
probe begin
{
}
OK,再来一次:
[root@localhost bond]# stap -g ./probe.stp
WARNING: side-effect-free probe: keyword at ./probe.stp:27:1
source: probe begin
^
aa :bond0
aa :enp0s9
^C^[[A[
开始ping吧:
[root@localhost bond]# ping 1.1.1.2
PING 1.1.1.2 (1.1.1.2) 56(84) bytes of data.
64 bytes from 1.1.1.2: icmp_seq=1 ttl=64 time=0.480 ms
64 bytes from 1.1.1.2: icmp_seq=2 ttl=64 time=0.417 ms
^C
--- 1.1.1.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.417/0.448/0.480/0.037 ms
通了。
这种问题都是小问题,很容易就能解决,有人可能会说,配置一个macvlan不香吗?呵呵,我觉得这根本就不是一个问题。
我只管痛则不通,通则不痛,不通的给整通了就行,别的什么,我才不关心。
你能说出1000个理由证明这么做不合理,你也能说出1000个理由维护这么做的合理性,怎么说呢?都归于皮鞋吧。
浙江温州皮鞋湿,下雨进水不会胖!
linux删除slave网卡,Linux bonding网卡与其slave共同使用相关推荐
- linux删除多余日志,linux 删除日志
https://jingyan.baidu.com/album/c1a3101e73129ade656deb9d.html?picindex=2 里面的 ls -s 可以看到目录 https://zh ...
- 如何linux删除文件夹,linux删除文件夹,教您电脑的linux怎么样删除文件夹
有些爱学习的用户会去操弄linux软件程序,在操作linux的过程中,有时候要删除一个文件夹,往往会提示次此文件非空,没法删除,这对于刚接触的用户来说无疑是一个巨大的困难,为此,小编这就来跟大家分享l ...
- linux删除相同用户,Linux 批量添加和删除用户
Linux批量添加和删除用户 一,工具作用Linux批量添加和删除用户 在Linux用户管理中,经常需要用到批量添加或删除用户:如果用 useradd或adduser来添加大量用户,对系统管理员的体力 ...
- linux删除网卡信息,重新设置网卡
centos系统删除多余网卡的方法 一.删除系统中中多余的ifcfg-eth0.bak Centos系统更改网卡或网卡MAC地址后会出现个eth0.bak配置备份文件 解决方法: /etc/sysco ...
- linux删除配置信息,linux 配置信息
# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostn ...
- linux删除配置信息,Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)...
一.预备知识 LVM全称为Logical Volume Manager逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘分 ...
- php linux 删除文件夹,linux下如何删除文件夹
linux下删除文件夹的方法:可以使用[rm -rf 目录名]命令进行删除,如[rm -rf /var/log/httpd/access],表示删除/var/log/httpd/access目录及其下 ...
- linux 删除sysadm用户,linux 用户和组命令整理及详细介绍
1.列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可. [root@node2 ~]# who root pts/0 2016-10-08 13:28 (10.106.6 ...
- Linux 删除权限 umask,linux中的umask控制文件或目录的默认权限
umask命令可以控制着创建文件或目录时指定给文件或目录的默认权限.它使用八进制表示法表示从文件模式属性中删除一个位掩码.使用不带任何参数的umask命令,查看当前掩码值.一般都是0002或0022. ...
- linux 删除模块命令,Linux系统中的Modprobe命令:添加和删除Linux内核模块的方法
在本文中,我们将说明如何使用modprobe命令在Linux内核中添加和删除Linux内核模块.modprobe是kmod的一部分,kmod是一种二进制文件,可实现用于管理Linux内核模块的多个程序 ...
最新文章
- ajax请求中的reponseType和withCredetials分别是啥?
- 最大全0/1子矩阵的探究
- linux 使用paho C库实现mqtt客户端
- 智商145!比利时神童9岁读完大学,成史上最年轻大学毕业生
- Android 系统(78)--应用安装时间长
- 计算机上无线网络开关在哪里,笔记本电脑无线网开关在哪_笔记本电脑如何打开无线网-win7之家...
- overflow c语言_C语言表结构(一)
- AtCoder Beginner Contest 132 解题报告
- 新版淘宝宽屏轮播代码带缩略图
- Vue中用到jeDate日期控件,Vue对象中的值滞后,总是滞后当前选择的值
- 微信小程序开发页面无法显示,未注册报错
- 沙盘游戏让我变成“诗人”
- VScode插件(自用)
- 测试阶段划分为哪几个阶段?
- 使用自然语言处工具HanLP获取人名
- IT行业中的互联网领域和软件领域工作方向有什么区别?
- 淘宝新开店铺没有生意该如何推广和运营
- Web前端从入门到精通自学之路
- opencv3+python3.5成语填字游戏(二)填字图片汉字提取和识别
- Wi-Fi的 8-stream sounding 和 8x8 MU-MIMO之间有什么关系?