[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"这种方式来定义.如 ...
随机推荐
- 不用写代码的框架 - RobotFramework+Eclispe环境安装篇
环境安装是学习任何一个新东西的第一步,这一步没走舒坦,那后面就没有心情走下去了. 引用名句:工欲善其事必先利其器!! Robotframework:一款 自动化测试框架. Eclipse:一款编辑工具 ...
- POJ 1556 The Doors(线段相交+最短路)
题目: Description You are to find the length of the shortest path through a chamber containing obstruc ...
- C++设计模式——组合模式
问题描述 上图,是一个公司的组织结构图,总部下面有多个子公司,同时总部也有各个部门,子公司下面有多个部门.如果对这样的公司开发一个OA系统,作为程序员的你,如何设计这个OA系统呢?先不说如何设计实现, ...
- EHCache:Eelment刷新后,timeToLiveSeconds失效了?
个人以为只要设定了timeToLiveSeconds,中间过程不管有没有访问,只要LiveSeconds时间到了,缓存就会失效.但是开发时发现并非如此,经过一番折腾,最终发现自己的理解是正确的,还是使 ...
- PHP -- 七牛云 在线视频 获取某一帧作为封面图
### 最近碰到视频处理,需要视频封面? 但用的是七牛云存储视频,索性搜了一下,怎么获取视频的某一帧作为视频的封面图... 发现了七牛官网又自身的接口 ### https://developer.qi ...
- 【原创】数据库基础之Mysql(2)主从库配置
一 安装 # wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm# yum -y insta ...
- RabbitMQ基础知识及Linux安装
RabbitMQ: RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现. AMQP协议: AMQP,即Advanced Message Qu ...
- 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)
论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...
- CSS之分组选择器和嵌套选择器
分组选择器, 将一个样式应用于多个类,或者标签啥的 每个选择器用逗号隔开 <!DOCTYPE html> <html> <head> <meta charse ...
- selenium执行JavaScript语句:控制滚动条 聚焦元素 改变下拉选项
1. 执行js脚本 控制滚动条 # http://www.cnblogs.com/yoyoketang/p/6128655.html In [347]: js = "window.scrol ...