Linux网卡命名规则

网卡命名

一、为什么需要这个
      服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的。Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序。

为解决这类问题,dell开发了biosdevname方案。

systemd v197版本中将dell的方案作了进一步的一般化拓展。

目前的Centos既支持dell的biosdevname,也支持systemd的方案。

二、Centos7中的命名策略
      Scheme 1: 如果从BIOS中能够取到可用的,板载网卡的索引号,则使用这个索引号命名,例如: eno1,如不能则尝试Scheme 2

Scheme 2: 如果从BIOS中能够取到可以用的,网卡所在的PCI-E热插拔插槽(注:pci槽位号)的索引号,则使用这个索引号命名,例如: ens1,如不能则尝试Scheme 3

Scheme 3:如果能拿到设备所连接的物理位置(PCI总线号+槽位号?)信息,则使用这个信息命名,例如:enp2s0,如不能则尝试Scheme 5

Scheme 5:传统的kernel命名方法,例如: eth0,这种命名方法的结果不可预知的,即可能第二块网卡对应eth0,第一块网卡对应eth1。

Scheme 4 使用网卡的MAC地址来命名,这个方法一般不使用。

三、biosdevname和net.ifnames两种命名规范

net.ifnames的命名规范为:   设备类型+设备位置+数字

设备类型:

en 表示Ethernet

wl 表示WLAN

ww 表示无线广域网WWAN

实际的例子:

eno1 板载网卡

enp0s2  pci网卡

ens33   pci网卡

wlp3s0  PCI无线网卡

wwp0s29f7u2i2   4G modem

wlp0s2f1u4u1   连接在USB Hub上的无线网卡

enx78e7d1ea46da pci网卡

biosdevname的命名规范为

实际的例子:

em1 板载网卡

p3p4 pci网卡

p3p4_1 虚拟网卡

四、systemd中的实际执行顺序
按照如下顺序执行udev的rule

1./usr/lib/udev/rules.d/60-net.rules

2./usr/lib/udev/rules.d/71-biosdevname.rules

3./lib/udev/rules.d/75-net-description.rules

4./usr/lib/udev/rules.d/80-net-name-slot.rules

1)60-net.rules

使用/lib/udev/rename_device这个程序,去查询/etc/sysconfig/network-scripts/下所有以ifcfg-开头的文件,如果在ifcfg-xx中匹配到HWADDR=xx:xx:xx:xx:xx:xx参数的网卡接口则选取DEVICE=yyyy中设置的名字作为网卡名称。

2)71-biosdevname.rules

如果系统中安装了biosdevname,且内核参数指定biosdevname=1,且上一步没有重命名网卡,则按照biosdevname的命名规范,从BIOS中取相关信息来命名网卡。

主要是取SMBIOS中的type 9 (System Slot) 和 type 41 (Onboard Devices Extended Information)不过要求SMBIOS的版本要高于2.6,且系统中要安装biosdevname程序。

3)75-net-description.rules

udev通过检查网卡信息,填写如下这些udev的属性值

ID_NET_NAME_ONBOARD

ID_NET_NAME_SLOT

ID_NET_NAME_PATH

ID_NET_NAME_MAC

4)80-net-name-slot.rules

如果在60-net.rules ,71-biosdevname.rules这两条规则中没有重命名网卡,且内核指定net.ifnames=1参数,则udev依次尝试使用以下属性值来命名网卡,如果这些属性值都没有,则网卡不会被重命名。

ID_NET_NAME_ONBOARD

ID_NET_NAME_SLOT

ID_NET_NAME_PATH

上边的71-biosdevname.rules 是实际执行biosdevname的策略

75-net-description.rules和80-net-name-slot.rules实际执行上面策略的1,2,3。

根据上述的过程,可见网卡命名受 biosdevname和net.ifnames这两个内核参数影响。

这两个参数都可以在grub配置中提供。

biosdevname=0是系统默认值(dell服务器默认是1),net.ifnames=1是系统默认值:

修改默认参数:如回归默认命名方式:

1.编辑内核参数
      在GRUB_CMDLINE_LINUX中加入net.ifnames=0即可

[[email protected] ~]$vim /etc/default/grub

GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 rhgb quiet"

2.为grub2生成配置文件
      编辑完grub配置文件以后不会立即生效,需要生成配置文件。

[[email protected] ~]$grub2-mkconfig -o /etc/grub2.cfg

第二节所说的Scheme的策略顺序是系统默认的。

如系统BIOS符合要求,且系统中安装了biosdevname,且biosdevname=1启用,则biosdevname优先;

如果BIOS不符合biosdevname要求或biosdevname=0,则仍然是systemd的规则优先。

如果用户自己定义了udev rule来修改内核设备名字,则用户规则优先。

内核参数组合使用的时候,其结果如下:

默认内核参数(biosdevname=0,net.ifnames=1):  网卡名 "enp5s2"

biosdevname=1,net.ifnames=0:网卡名 "em1"

biosdevname=0,net.ifnames=0:网卡名 "eth0" (最传统的方式,eth0 eth1 傻傻分不清)

原文地址:https://www.cnblogs.com/morgan363/p/11078905.html

时间: 2024-10-29 02:25:29

Linux网卡命名规则的相关文章

RHEL7.x版本,修改网卡命名规则

RHEL7.x使用的是enoxxxx的网卡命名规则,如果这种网卡命名规则使用不习惯,可以将其修改到之前版本的eth0,1,2这种网卡命名规则,那么该如何修改呢?下面将介绍常用的修改办法.一,修改grub在grub中添加"net.ifnames=0 biosdevname=0"内容,其目的是禁用该可预测命名规则. [[email protected] ~]# vim /etc/sysconfig/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(s

rhel7修改网卡命名规则

1步:当安装完红帽RHEL7系统安装完成,您的网卡命名是这样的. 第2步:请编辑网卡的配置文件 将”/etc/sysconfig/network-scripts/ifcfg-eno16777736“的NAME参数项修改为eth0 第3步:将网卡配置文件ifcfg-eno1677736重命名为ifcfg-eth0 [[email protected] Desktop]# cd /etc/sysconfig/network-scripts/[[email protected] network-scr

RHEL7网卡命名规则

systemd 和 udev 引入了一种新的网络设备命名方式:一致网络设备命名(CONSISTENT NETWORK DEVICE NAMING).根据固件.拓扑.位置信息来设置固定名字,带来的好处是命名自动化,名字完全可预测,在硬件坏了以后更换也不会影响设备的命名,这样可以让硬件的更换无缝化.带来的不利是新的设备名称比传统的名称难以阅读,比如心得名称是enp5s0. 默认情况下,systemd会按照以下规则为网卡命名: 规则1:将依据Firmware或BIOS提供的设备索引编号为网卡命名.(比

Linux文件命名规则

文件命名规则 (1) 除了/之外,所有字符都合法: (2) 特殊字符如@.#.¥.&.().-.空格等最好不要使用,当使用空格作为文件名时,执行命令会出错: (3) 避免使用"."作为文件名的第一个字符,因为在Linux系统中以"."为开头的文件代表隐藏,系统将自动隐藏以"."为开头的文件: (4) Linux系统区分大小写,因此文件命名也区分大小写: (5) Linux文件后缀名无意义,但是为方便识别应定义后缀(.txt..php等),

网络配置管理之ip、ss、配置文件、网卡命名规则、nmcli

配置网络属性:IP家族命令 ip命令: ip [OPTIONS] OBJECT {COMMAND | help} OBJECT={link | addr | route} ip link使用: set dev IFACE 可设置的属性有:up or down:激活或者禁用制定端口 show [dev IFACE] [up] [[email protected] ~]# ip link show eth0  #查看指定端口的相关连接信息 [[email protected] ~]# ip link

Linux网卡命名enp3s0说明

用了很多年Linux的我在升级Ubuntu 16.04之后竟然发现我的以太网卡的名字竟然不是eth0,变成了enp3s0,每次想要修改什么配置,都要先ifconfig查一下网卡名,真是让我很郁闷! 去网上搜索一下才知道,这次的Ubuntu 16的更新幅度很大,当属systemd替换掉了initd来引导系统这个动作给用户带来的影响最大,原来习惯service什么的来控制系统服务什么的,现在竟然被systemctl这个命令替换了(虽然service依旧可用).systemd带来的另外一个副作用(或者

Linux系统根文件以及命名规则详解

一.Linux系统根文件详解 Linux的重要哲学思想其实就是:将程序的配置文件保存为纯文本格式. 1./boot:系统启动文件,如:内核文件,iniyrd以及gurb(bootloarder) 2./dev:目录下为设备文件,设备文件又分为块设备和字符设备: 块设备:按数据块随机访问,没有顺序. 字符设备:线性访问,按字符为单位进行. 注:其中背景为黑色,字体为***的文件,为特殊文件,"1,   0"分别为文件的主设备号和次设备号 [[email protected] ~]# ls

Linux网卡/防火墙

网络 网卡命名规则 在Centos6中网卡命名方式:其会根据情况动态变化且非唯一且固定的,其常用的网卡命名方式:eth0,eth1,当网卡增加或者减少的时候网卡名称会发生变化 在Centos7/8网卡命名方式:其会根据dmidecode 采集命名方案,以此来获取网卡信息,此时网卡的名称固定且唯一 dmidecode:用来收集硬件有关信息 网络设备命名方式 如果Fireware(固件)或者BIOS主板集成的设备提供索引信息可用且可预测,则根据此索引进行命名 例如:ifcfg-ens33 如果Fir

Linux如何修改网卡的命名规则

记录 时间 状态 备注 2019-12-1 编撰 待补充 参考资料(前人的肩膀) http://benjr.tw/93340 先做(操作步骤) Centos7 1.编辑 /etc/default/grub 找到这行GRUB_CMDLINE_LINUX,添加net.ifnames=0,关闭net.ifnames的命名规则即可 2.编译启动配置文件 cp /boot/grub2/grub.cfg{,.bak} grub2-mkconfig -o /boot/grub2/grub2.cfg 3.重启,