[daily] 不让NetworkManger自动接管网络设备
一 场景描述
有一个dpdk程序,在运行时使用了rte kni。
它启动的时候,会自动给系统增加一个网卡设备,停止运行的时候又会把它去掉。像这样:
[root@T9 gen-py]# ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN group default qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
... ...
: kni_vpu: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether ::c3:ca:9c: brd ff:ff:ff:ff:ff:ff
inet 192.168.8.9/24 brd 192.168.8.255 scope global kni_vpn
valid_lft forever preferred_lft forever
就是名叫 kni_vpu 的那一个,然后程序还会给它配上一个地址,这里的例子是192.168.8.9
二 问题
然后,运行一小会。问题就来了。192.168.8.9上的地址不见了。消失了。没有了。
是谁搞的鬼呢?
三 分析
分析这个问题,首先从内外两方面入手,对内看一下dmesg,对外tcpdump抓个包。然后重现一下,等待ip消失的那一个瞬间。
dmesg没有任何输出,但是tcpdump发现了dhcp的报文:
::20.192103 IP 0.0.0.0. > 255.255.255.255.: BOOTP/DHCP, Request from e2:fc:::6f:, length
这个MAC(e2fc)就是我的那个kni口的mac。
所以一点是网络管理utility,启动了dhcp把我的ip干掉了。
[root@T9 ~]# ps -ef |grep dh
root : ? :: /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-kni_vpn.pid
-lf /var/lib/NetworkManager/dhclient-ef87da69-b085-309c-969f-8dbab61bce38-kni_vpn.lease -cf /var/lib/NetworkManager/dhclient-kni_vpn.conf kni_vpn
网络管理用了NetworkManager,查看一下配置,果然是这样的:
[root@T9 ~]# ps -ef |grep dh
root : ? :: /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-kni_vpn.pid -lf /var/lib/NetworkManager/dhclient-ef87da69-b085-309c-969f-8dbab61bce38-kni_vpn.lease -cf /var/lib/NetworkManager/dhclient-kni_vpn.conf kni_vpn
[root@T9 ~]# nmcli c show ef87da69-b085-309c-969f-8dbab61bce38
connection.id: Wired connection
connection.uuid: ef87da69-b085-309c-969f-8dbab61bce38
......
ipv4.method: auto
......
NetworkManger这个货真是越来越高级了,着实让人喜爱。
四 处理方案
很显然,这是NetworkManger支持了auto detect,auto plugin之类的功能。查一下手册:
man NetworkManager.conf
用多种方案可以配,总的原则就是配置黑白名单。写到/etc/NetworkManager/NetworkManager.conf 配置文件里。
白名单就这样:
[keyfile]
unmanaged-devices=interface-name:kni_vpn
黑名单就这样:
[main]
no-auto-default=*
然后,我采用的黑名单的配法,这样配置就等于关闭了auto detect的属性,只有明确的手工配置的网卡,才会被networkmanager管理。
(一) 放在子配置文件中
如果man手册所述, 我们不用修改主配置文件/etc/NetworkManager/NetworkManager.conf, 任何配置都应该以子配置文件的形式,放在以下三个位置之一
/etc/NetworkManager/conf.d/name.conf
/run/NetworkManager/conf.d/name.conf
/usr/lib/NetworkManager/conf.d/name.conf
如:
[root@vpn103 ~]# cat /etc/NetworkManager/conf.d/tong.conf
[keyfile]
ummanged-devices=interface-name:kni_vpn
然后, 再发一个SIGHUP给进程,通知它重新load配置
[daily] 不让NetworkManger自动接管网络设备的更多相关文章
- python paramiko自动登录网络设备抓取配置信息
ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostn ...
- zabbix 布署实践【4 服务器自动探索发现,并且自动关联模版】
使用管理员登录zabbix后,在配置---自动发现--创建发现规则 如下:我们的需求是监听办公网内openstack的所有虚拟机,在其VM创建后,自动加到zabbix监控中来,并自动关联监控模版 可以 ...
- Zabbix-设置自动发现规则实例
一.前文 此篇文章,主要针对自动发现规则中使用snmpv2类型发现 zabbix官方解读,可当参考: https://www.zabbix.com/documentation/4.0/zh/man ...
- CentOS7 如何挂载网络设备
CentOS 自动挂载网络设备的方法 手动挂载: [root@mysql ~]# mount -o username=USER,password=PASSWORD //192.168.10.212/z ...
- Hyper-V 2012 R2 故障转移群集
和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...
- 理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...
- Heartbeat+LVS构建高可用负载均衡集群
1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...
- 用HAProxy和KeepAlived构建高可用的反向代理
用HAProxy和KeepAlived构建高可用的反向代理 用HAProxy和KeepAlived构建高可用的反向代理 前言对于访问量较大的网站来说,随着流量的增加单台服务器已经无法处理所有的请求 ...
- 第八章 Hyper-V 2012 R2 故障转移群集
和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...
随机推荐
- Java消息队列--ActiveMq 初体验
1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...
- English 动词篇
动词后加to do 和 doing的记忆口诀 一.只能用动名词(ing)作宾语 [口诀] 考虑建议盼原谅,承认推迟没得想. 避免错过继续练,否定完成停欣赏. 禁止想象才冒险,不禁介意弃逃亡. cons ...
- 【原创】运维基础之Nginx(1)简介、安装、使用
官方:http://nginx.org nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a ...
- 【原创】大叔案例分享(4)定位分析--见证scala的强大
一 场景分析 定位分析广泛应用,比如室外基站定位,室内蓝牙beacon定位,室内wifi探针定位等,实现方式是三点定位 Trilateration 理想情况 这种理想情况要求3个基站‘同时’采集‘准确 ...
- 使用 ThreeSixty 创建可拖动的 360 度全景图片预览效果
ThreeSixty 是生成可拖动的360度预览图像序列的 jQuery 插件.只需要在你的 HTML 页面包引入最新的 jQuery 和 threesixty.js 文件就可以使用了,支持键盘上的箭 ...
- html基础技巧:点击、placeholder、文本、字体、清楚浮动
点击处理: 消除a标签点击后的边框,颜色(background:#fff) 1:a:focus{outline:none;} button去除边框 1:border:none 2:border:0px ...
- vue 3.0
参照网址: https://blog.csdn.net/qq_36407748/article/details/80739787
- win10安装mysql5.7.20解压版
mysql安装包可到官网下载,地址:https://dev.mysql.com/downloads/mysql 1.首先解压文件包,我这解压到E:\install_work\mysql目录下: 2.发 ...
- table切换jquery插件 jQuery插件写法模板 流程
通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget()应用jQuery UI的部件工厂方式创建 通过$.extend()来扩展jQuery $. ...
- Python学习笔记十
守护进程 p.daemon=True 必须在p.start()之前设置. 守护进程内不能再开子进程. 在主进程中开启守护进程(就是一个子进程) 什么时候应该把子进程设置为守护进程? 开子进程的目的:就 ...