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即可
[root@centos7 ~]$vim /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 rhgb quiet"
2.为grub2生成配置文件
编辑完grub配置文件以后不会立即生效,需要生成配置文件。
[root@centos7 ~]$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 傻傻分不清)
Linux网卡命名规则的更多相关文章
- RHEL 7.3修改网卡命名规则为ethX
RHEL 7网卡默认命名规则:以太网卡(Ethernet)为enX,无线网卡(WLAN)为wlX,修改网卡命名规则为ethX如下: 1.修改/etc/sysconfig/grub文件,添加net.if ...
- ubuntu 18.04网卡命名规则改回传统的ethx
自15版本开始网卡命名规则就不叫eth0了.而是用可预期网络接口设备名称的命名规则,比如网卡名为enp3s0 . 如果想要变回ethx也是可以的,参考以下步骤: 1.编辑/etc/default/gr ...
- centos7修改网卡命名规则
实验目的: 修改默认的网卡命名规则,习惯于ethx的形式 实验环境: centos7 熟悉控制网卡名字的规则生产的参数biosdevname/net.ifnames /etc/default/gr ...
- linux centos7 修改默认网卡命名规则为eth0脚本
CentOS6之前基于传统的命名方式如:eth1,eth0.... Centos7提供了不同的命名规则,默认是基于固件.拓扑.位置信息来分配.这样做的优点是命名是全自动的.可预知的,缺点是比eth0. ...
- rhel7修改网卡命名规则
1步:当安装完红帽RHEL7系统安装完成,您的网卡命名是这样的. 第2步:请编辑网卡的配置文件 将”/etc/sysconfig/network-scripts/ifcfg-eno16777736“的 ...
- CentOS7网卡命名规则
CentOS6之前基于传统的命名方式如:eth1,eth0.... Centos7提供了不同的命名规则,默认是基于固件.拓扑.位置信息来分配.这样做的优点是命名是全自动的.可预知的,缺点是比eth0. ...
- 《linux就该这么学》第七节课:文件的各种权限以及linux分区命名规则
笔记 (借鉴请改动) 5.3:文件特殊权限 SUID 临时拥有文件所有者的权限(基本上只是执行权限) SGID 临时拥有文件所有组的权限,在目录中创建文件自动继承该目录的用户组. SBIT 粘滞 ...
- RHEL7网卡命名规则
systemd 和 udev 引入了一种新的网络设备命名方式:一致网络设备命名(CONSISTENT NETWORK DEVICE NAMING).根据固件.拓扑.位置信息来设置固定名字,带来的好处是 ...
- RHEL7禁用网卡命名规则
[root@rhel7 ~]# vi /etc/sysconfig/grub GRUB_TIMEOUT= GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g ...
随机推荐
- 牛客多校训练AFJ(签到)
题目链接https://ac.nowcoder.com/acm/contest/881/A(单调栈) #include<cstdio> #include<iostream> # ...
- AngularJS中的父作用域与自作用域
对于$scope上的原生类型,如$scope.name=""; 自作用域获取变量时,会查找作用域本身,找不到就会查找父作用域 修改时,若本作用域不存在,就会在本作用域创建一个变量, ...
- 09 promise then
then() 方法返回一个 Promise 链式调用:then里面回调函数(成功回调和失败回调),凡事这两个回调函数里面抛出错误或者返回一个已经是拒绝状态的 Promise. 那么 then 返回的 ...
- docker 修改容器配置文件
启动docker镜像命令docker run 可以指定端口映射,但是容器一旦创建就无法在通过命令修改.通常是保存镜像在创建一个新的容器.有没有办法不保存镜像直接修改这个容器呢?答案是有的,本文已mys ...
- Java的ArrayList实现随机生成N-M之间N个不重复的随机数
在此之前我使用Java的数组实现了产生N-M之间的不重复的随机数,下面是使用数列ArrayList实现同样的功能,代码如下: /** * 随机生成 N--M,N个不重复随机数 使用ArrayList ...
- linux:apache-配置基于域名的虚拟机主机
一个http服务要配置多个站点,就需要用到虚拟机主机. 虚拟机主机一般有三类:1.基于域名 2.基于端口 3.基于ip 举例操作基于域名配置三个站点: 域名 站点目录 www.eejind.com ...
- Javaweb中的请求路径的相关总结
重定向和转发相对路径和绝对路径问题 注意:转发和重定向的URLString前有加 / 为绝对路径 反之为相对路径 1.假设通过表单请求指定的Url资源 action="LoginServ ...
- oracle之同义词
同义词 从字面上理解就是别名的意思,和视图的功能类似.就是一种映射关系. 14.1 私有同义词; 一般是普通用户自己建立的同义词,创建者需要create synonym 权限. sys:SQL> ...
- 典藏版Web功能测试用例库
界面显示 初始界面元素:title.内容,默认值.必填项(红*) 样式美观 排版规范 字体统一 编辑页面有光标,定位在第一个可编辑文本框 内容过多时,滚动条 loading ...
- 关于java中循环的学习
switch 值是固定的 效率高语法:switch (表达式) { case 常量 1: 语句; break; case 常量 2: 语句; break; … default: 语句; break;} ...