一、命名规则策略


规则1:

命名依据BIOS提供的在线硬件索引号;如果信息可读就命名,比如:eno1,否则使用规则2

规则2:

命名依据BIOS提供的PCI-E热插拔口索引号,如果信息可读就命名,比如:ens1,否则使用规则3

规则3:

命名依据硬件接口的物理位置,如果信息可读就命名,比如enp2s0,否则直接到规则5

规则4:

命名依据接口的MAC地址,默认不使用,除非用户选择使用此方案。比如enx78e7d1ea46da

规则5:

使用传统的方案,如果所有的方案都失败,则使用eth0这种样式。

二、网卡eth0命名


从centos7开始,系统默认的网卡命名有已经不是我们熟悉的eth0方式了,细心的同学会留意到一些,比如ensenp等开头的网卡名称,简单了解,可以解释为centos7开始,网卡命名会根据网卡的硬件信息,插槽位置等有关;而网上也有为那些依然想使用eth0方式命名的提供了策略。比如在内核启动参数里增加biosdevname=0 net.ifnames=0;

但是这里忽略了一个问题,那就是为什么centos7不再使用以前的eth0方式?是因为之前eth0方式是不确定的,每次启动可能都不同(如果没有用户自定义网卡名称的前提下);所以大家提供的这种办法其实是不好的;

三、核心流程


核心流程:Linux内核启动过程中,会默认给网卡以eth0方式随机命名,然后再通过systemd去rename成其他名称。

(1)如何rename?

默认rename流程,按照如下顺序执行udev的rule:

  1. /usr/lib/udev/rules.d/60-net.rules
  2. /usr/lib/udev/rules.d/71-biosdevname.rules
  3. /usr/lib/udev/rules.d/75-net-description.rules
  4. /usr/lib/udev/rules.d/80-net-name-slot.rules

step1,依据/usr/lib/udev/rules.d/60-net.rules,查看是否有ifcfg-xx配置文件(路径在/etc/sysconfig/network-scripts/),是否有定义了指定MAC地址的配置文件(ifcfg-xx,xx必须和配置文件的内容DEVICE一致),如果有,则命名改网卡;

step2,依据/usr/lib/udev/rules.d/71-biosdevname.rules,如果biosdevname使能了(安装了biosdevname这个包,且内核启动参数显式设置为1),且网卡没有在step1中定义,则按照biosdevname命名规则rename网卡;(注意,如果没有安装biosdevname这个包,就没有这个文件)

step3,依据/usr/lib/udev/rules.d/75-net-description.rules,将udev工具会根据device属性将填写网卡的属性命名,可能一个网卡会有多个维度的名称哦;

step4,udev根据step3中的赋值,按照指定的scheme规则,去给在step1 step2中没有命名的网卡命名;

强调:这个step顺序是在我们没有自定义自己的rules的前提下,如果用户自定义了自己的rules,则用户自定义为优先级最高;

(2)scheme次序

上面step4中提到,按照指定的scheme规则,这个规则是什么呢?首先说step3中,提到按照网卡的不同属性命名,系统识别网卡有好几种维度:

  • BIOS提供的在线硬件索引号 (example:eno1),
  • BIOS提供的PCI-E热插拔口索引号 (example:ens1)
  • 硬件接口的物理位置 (example:enp2s0),
  • 接口的MAC地址

同一个网卡通常同时具有多个维度的名称,systemd在选取的时候,按照有先后次序,使用先命中的;顺序可以简单理解为(eno1>ens1>enp1)

问:eth2这个网卡,scheme名称有3个,如果systemd自选,会使用哪个?

答:ens5f0.

问:那这个为什么是/sys/class/net/eth2而不是/sys/class/net/ens5f0

答:那是因为自定义的缘故,自定义拥有最高优先权

(3)用户自定义网卡名称

在用户没有自定义rules文件前提下,step1中的网卡命名方式也可认为是一种用户自定义的网卡命名,即在/etc/sysconfig/network-scripts/ifcfg-xx文件,xx就是这个网卡名称,文件内容中体现MAC_ADDRESS、NAME,这种情况下,则会按照配置文件中指定的名称来命名网卡;

如果用户自定义了rules文件(一般命名为70-persistent-net.rules),放在/etc/udev/rules.d/目录下,则这个优先级是最高的;比ifcfg-xx方式优先级更高,但是如果两者不一致,则在重启network服务时,会依据/etc/udev/rules.d下的用户定制配置文件。

(4)内核启动参数

biosdevnane

默认就是内核启动参数没有biosdevname也没有net.ifnames参数(其实默认是net.ifnames=1,biosdevname=0)这种情况下就按照第一节中顺序进行网卡命名;eno>ens>enp的方式逐个匹配。但是如果使能了biosdevname.则会使用biosdevname的命名规则将第一节没有命名的网卡进行命名。要么是em开头,要么是p开头。

怎么样使能biosdevname呢?2个条件(缺一不可):

  • 安装biosdevname包
  • 在内核启动参数中明确biosdevname=1.

但是不管怎么样,如果用户自定义了udev rules,则用户自定义的rules优先!

综上所述,但凡用户自定义rules,优先级最高;

net.ifnames

如果在启动参数中增加net.ifnames=0,这个文件会在/lib/udev/rules.d/80-net-name-slot.rules体现使用价值,则告诉系统不用scheme的方式来命名,这个时候,会恢复eth0这种不确定性的命名方式。

四、不要用eth0去命名


内核在boot过程是默认使用eth0方式来命名的,每次启动的时候都不确定,启动会后再通过udev等方式去rename。网络形成时间会延长

五、修改网卡名称样式为eth0(网络中比较流行的,适用于Red-hat系列Linux)


如果不习惯使用新的命名规则,可以恢复使用传统的方式命名,编辑grub文件,增加两个变量,再使用grub2-mkconfig重新生成grub配置文件即可。

  • 编辑grub配置文件
vim/etc/sysconfig/grub              #其实是/etc/default/grub的软连接

为GRUB_CMDLINE_LINUX变量增加2个参数,具体内容如下:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"

  • 重新生成grub配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg

然后重新启动Linux操作系统,通过ip a可以看到网卡名称已经变为eth0。

  • 修改网卡配置文件

原来网卡配置文件名称为ifcfg-ens12,这里需要修改为eth0的格式,并适当调整网卡配置文件。

mv /etc/sysconfig/network-scripts/ifcfg-ens12 /etc/sysconfig/network-scripts/ifcfg-eth0        #修改ifcfg-eth0文件如下内容(其它内容不变)
  • NAME=eth0
  • DEVICE=eth0
systemctl restart network.service #重启网络服务

六、修改网卡名称样式为eth0(另辟蹊径)


直接在/usr/lib/udev/rules.d/60-net.rules配置文件中修改对应网卡信息如下:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME=="eth0"

其中XX:XX:XX:XX:XX:XX是硬件的MAC地址

同时修改/etc/sysconfig/network-scripts/ifcfg-eth0以及配置文件中的两个参数即可

  • NAME=eth0
  • DEVICE=eth0

、修改网卡名称样式为eth0(我喜欢的方法)


直接在/etc/udev/rules.d/中创建或修改70-persistent-net.rules文件,加上或修改信息为:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME=="eth0"

如果IP地址是自动获取(DHCP),就可以重启电脑了

如果IP地址是手动输入,就修改NAME和DEVICE参数,然后重启电脑。

网卡名称命名原理和修改方法相关推荐

  1. 转: 网卡名字eth0,eth1的修改方法

    转自:http://longwind.blog.51cto.com/419072/982738 我使用这个方法生效: 现象:只有eth2, vi /etc/udev/rules.d/70-persis ...

  2. 一文搞懂网卡驱动的原理与移植方法

    1.网卡设备驱动原理 1.1 层次结构 Linux系统对网络设备驱动定义了4个层次, 这4个层次有到下分为: 1.网络协议接口层:实现统一的数据包收发的协议.该层主要负责调用dev_queue_xmi ...

  3. 服务器项目带文件名,tomcat服务器上webapps里的文件名和项目名称不一样,修改方法...

    第一种方法: 打开工程所在目录,找到一个 .mymetadata的文件,用记事本等打开,内容大致如下: type="WEB" name="QingNiaoCang&quo ...

  4. Linux网卡名称命名

    CentOS7服务器,默认网卡名为ifcfg-eno33,如果想改成ifcfg-eth0,使用一下步骤即可 (1)编辑/etc/sysconfig/grub文件,命令vi /etc/sysconfig ...

  5. 网络适配器网卡名称变成WLAN2的解决方法

    问题 更换了网卡之后,发现网络适配器网卡名称变成WLAN2,就很不爽 听说有些系统更新之后也会变成这个样子 在网上查了几篇文章,什么打开注册表修改删除的,都没有用,最后发现解决方法其实很简单 解决方法 ...

  6. NURBS曲面结构及生成原理、修改方法

    NURBS全称是Non-Uniform Rational B-Splines中文叫做非均匀有理B样条曲线,Rhinoceros中的模型曲线便是通过NRUBS曲线进行描述,曲面则是通过U和V两个方向的曲 ...

  7. network-scripts目录下添加新网卡文件方法、nmcli修改NAME网卡名称和DEVICE一致

    文章目录 说明 开启NetworkManager 添加网卡文件方式1[不建议用] 添加网卡文件方式2[建议用] 说明 在VMware的一台正在使用中的虚拟机中添加了几个新的网络适配器[已连接的那种] ...

  8. linux6.5修改网卡名称,Centos7更改网卡名为eth0

    centos7以前的网卡名是eth0.eth1这样的命名方式 但是centos7的网卡名称命名方式却并不是这样,这让使用惯了eth0命名方式的童鞋用着不习惯 那么我们何不修改成我们自己惯用的形式呢? ...

  9. 服务器修改网卡,美国服务器CentOS 6.x修改网卡名称的方法

    大家好,今天给大家带来了修改美国服务器CentOS 6.x修改网卡名称的方法,有需要的朋友们可以根据这篇文章修改网卡名称. RAK美国服务器默认有两个网口,安装完cenos6.x后发现网卡名称为em1 ...

最新文章

  1. sys.stdout.write与sys.sterr.write(二)
  2. ROS学习之包的概念
  3. Java jmap查看堆内存
  4. Google Chrome input 设置 line-height 后光标变得和input一样高
  5. c++清空一个txt文本_Linux下常用文本处理命令大全
  6. 理论基础 —— 排序
  7. pacbio 原始下机数据h5 文件简介
  8. Cimag 用法总结
  9. 循环switch 变量x 如果case a 车辆型号查询系统官网,车辆型号怎么去查询?
  10. php三极管导通条件,三极管的导通条件 - 三级管饱和导通的条件是什么?
  11. 微信支付-----扫码支付,统一下单
  12. 【Mathematica】 曲面的绘制
  13. 按键边缘检测,控制LED亮灭
  14. Linux signal捕获
  15. NIS (Network Information Service)
  16. 一万字一篇文20分钟学会C语言和Python,十四年编程经验老鸟传授经验之道
  17. C# 实例解释面向对象编程中的单一职责原则
  18. 当Spring Cloud Alibaba Sentinel碰上Spring Cloud Sleuth会擦出怎样的火花
  19. 设置NTFS磁盘文件夹的可写权限(转自:http://doc.spacebuilder.cn/Default.aspx?Page=setNTFSAspxAutoDetectCookieSuppor)
  20. 概率论与数量统计(二)_第2章随机变量及其概率分布__贝努利试验

热门文章

  1. C++最小二乘法拟合平面
  2. 27、Docker 镜像命令
  3. Android电话相关的操作 - 打电话,接电话,挂电话
  4. 今天过生日,煲靓汤庆祝,好叻!--介绍“番茄薯子汤”煲制方法给大家:)
  5. Python 之 bytes/bytearray 的深入浅出
  6. 三星手机换新卡显示无服务器,玩机“老炮”告诉你三星手机新玩法
  7. 2021/07/11 老男孩带你21周搞定Go语言 (二)
  8. 为什么说 交叉验证能 防止过拟合 呢?
  9. python列表格式化输出_python中请问怎么格式化输出列表
  10. 有理数加减乘除 计算机应用带答案,计算机应用数学-(组合数学)-答案哈工大