01-Redhat/Centos7网卡命名介绍及修改方式
1. Redhat/Centos7网卡命名介绍
1.1 网络设备命名
Redhat/Centos7提供在网络接口中使用新的网络设备命名方法。这些功能会更改系统中的网络接口名称,以便定位和区分这些接口。
1.2 命名方案层级结构
默认情况下,systemd会使用以下策略,采用支持的命名方案为接口命名:
- 方案1:如果固件或BIOS信息适用且可用,则使用整合了为板载设备提供索引号的固件或BIOS的名称(例如:eno1),否则请使用方案2。
- 方案2:如果固件或BIOS信息适用且可用,则使用整合了为PCI快速热插拔插槽提供索引号的固件或BIOS名称(例如ens1),否则请使用方案3。
- 方案3:如果硬件连接器物理位置信息可用,则使用整合了该信息的名称(例如:enp2s0),否则请使用方案5。
- 方案4:默认不使用整合接口MAC地址的名称(例如:enx78e7d1ea46da),但用户可选择使用此方案。
- 方案5:传统的不可预测的内核命名方案,在其他方法均失败后使用(例如:eth0)。
这个策略(如上所述)是默认策略。如果该系统已启用biosdevname,则会使用该方案。注:启用biosdevname需要添加biosdevname=1作为命令行参数(Dell系统除外),此时只要安装biosdevname,就会默认使用该方案。如果用户已添加udev规则,该规则会更高内核设备名称,则会优先使用这些规则。
1.3 设备重命名过程
设备命名过程如下:
- 1. /usr/lib/udev/rules.d/60-net.rules
文件中的规则会让udev帮助工具/lib/udev/rename_device查看所有/etc/sysconfig/network-scripts/ifcfg-suffix文件。如果发现包含HWADDR条目的ifcfg文件与某个接口的MAC地址匹配,它会将该接口重命名为ifcfg文件中由DEVICE指令给出的名称。
例,如下配置文件网卡则以eth0命名:
[root@spring rules.d]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
NAME=eth0
UUID=e073eeeb-ecba-4481-841f-539454d90a6f
DEVICE=eth0
ONBOOT=yes
HWADDR=00:0c:29:7c:4a:f8
- 2. /usr/lib/udev/rules.d/71-biosdevname.rules
文件中的规则让biosdevname根据其命名策略重命名该接口,即在上一步中没有重命名该接口、已安装biosdevname、且在boot命令行中将biosdevname=0作为内核命令给出。
- 3. /lib/udev/rules.d/75-net-description.rules
文件中的规则让udev通过检查网络接口设备,填写内部udev设备属性值ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。注:有些设备属性可能处于未定义状态。
- 4. /usr/lib/udev/rules.d/80-net-name-slot.rules
文件中的规则让udev重命名该接口,优先顺序如下:ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。并提供如下信息:没有在步骤1或2中重命名该接口,同时未给出内核参数net.ifnames=0。如果一个参数未设定,则会按列表的顺序设定下一个。如果没有设定任何参数,则不会重命名该接口。
1.4 网卡命名规则
1.4.1 net.ifnames规范
根据接口类型以两个字母开头(net.ifnames规范):
说明:设备类型+设备位置+数字
- 1. en 代表以太网
- 2. wl 代表无线局域网(WLAN)
- 3. ww 代表无线广域网(WWAN)
例:
eno1 板载网卡
enp0s2 pci网卡
ens33 pci网卡
wlp3s0 PCI无线网卡
wwp0s29f7u2i2 4G modem
wlp0s2f1u4u1 连接在USB Hub上的无线网卡
enx78e7d1ea46da pci网卡
1.4.2 biosdevname规范
dell开发
例:
em1 板载网卡
p3p4 pci网卡
p3p4_1 虚拟网卡
格式 | 描述 |
o<index> | 板载设备索引号 |
s<slot>[f<function>][d<dev_id>] | 热插拔插槽索引号 |
x<MAC> | MAC地址 |
p<bus>s<slot>[f<function>][d<dev_id>] | PCI地理位置 |
p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] | USB端口链 |
- 所有多功能PCI设备都在其设备名称中包含[f<function>]号,其中包括function0设备。
- 在USB设备中会组成集线器端口号完整链。如果该名称超过15个字符上限,则无法导出该名称。
- 已取消USBconfigurationdescriptors==1和USBinterfacedescriptors==0(如果只有一个USB配置或接口存在,则默认值为configuration==1及interface==0)。
2. Redhat/Centos7修改网卡名
如系统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 傻傻分不清)
2.1 方法一
说明:修改/etc/sysconfig/grub文件,在GRUB_CMDLINE_LINUX配置中添加"net.ifnames=0 biosdevname=0"
评价:如果系统同时存在光卡、电卡,因为不同网卡驱动加载时间不同,会出现网卡乱序现象,如:2光2电的网口,出现一光一电交错出现的现象。
1. 修改/etc/sysconfig/grub文件
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"
2. 生成grub配置
grub2-mkconfig -o /boot/grub2/grub.cfg
3. 修改网卡配置文件
[root@spring ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=a88bc211-429d-4a00-8e52-1fa11c811b7f
DEVICE=eth0
ONBOOT=yes
4. 重启操作系统
shutdown -h now
2.2 方法二
原理同第一种方法,但是在安装系统时配置
1. 进入系统安装界面,将光标移动到Install CentOS7,根据系统提示使用Tab或者e
2. 编辑grub配置
3. 设置网卡选项,发现网卡名称为eth0
2.3 方法三
修改/usr/lib/udev/rules.d/60-net.rules更改网卡名,因为mac地址与网卡名一一对应,所以不会出现网卡乱序的现象。
注意:使用以下脚本,网卡配置文件需要存在,使用后如果网卡启动,不能同时多个网卡使用dhcp获取IP模式,否则network网络服务重启会报错
1. 脚本配置文件
#原网卡名 新网卡名
eno1 eth0
eno2 eth1
eno3 eth2
2. 脚本内容
#!/bin/bash inforfile=$1
>testfile
cat $1 | egrep -v '^#|^#' | while read line
do
src_name=$(echo ${line} | awk '{print $1}')
dst_name=$(echo ${line} | awk '{print $2}')
mac_=$(ifconfig ${src_name} | awk '/ether/{print $2}')
a='ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="'
b='", NAME="'
c='", GOTO="net_end"'
echo $a$mac_$b$dst_name$c >> testfile
cp -a /etc/sysconfig/network-scripts/ifcfg-${src_name} ./ifcfg-${src_name}.backup
sed -i -e "/^DEVICE/s/DEVICE=.*/DEVICE=${dst_name}/g" -e "/^NAME/s/NAME=.*/NAME=${dst_name}/g" /etc/sysconfig/network-scripts/ifcfg-${src_name} mv /etc/sysconfig/network-scripts/ifcfg-${src_name} /etc/sysconfig/network-scripts/ifcfg-${dst_name}
done echo 'ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"' >> testfile
echo 'LABEL="net_end"' >> testfile
cp -a /lib/udev/rules.d/60-net.rules ./60-net.rules.backup
cat testfile > /lib/udev/rules.d/60-net.rules
3. 脚本执行
sh change-nic.sh inforfile
2.4 自动生成ifcfg-xxx网卡配置文件的方法
启动NetworkManager服务
systemctl start NetworkManager
使用nmcli
# 创建通过dhcp获取IP的配置文件
nmcli connection add con-name default type ethernet ifname eth0 # 创建静态配置IP的配置文件
nmcli connection add con-name static type ethernet ifname eth0 ip4 192.168.0.111/24 gw4 192.168.0.254 参数详解:
connection/con -- 连接
add -- 添加
default -- 默认dhcp获取IP
type ethernet -- 以太网类型
ifname -- 接口名称
3.参考文档
Redhat官方手册
https://www.jianshu.com/p/b66981dbb389
https://blog.51cto.com/zaa47/1927466
01-Redhat/Centos7网卡命名介绍及修改方式的更多相关文章
- CentOS7网卡命名规则
CentOS6之前基于传统的命名方式如:eth1,eth0.... Centos7提供了不同的命名规则,默认是基于固件.拓扑.位置信息来分配.这样做的优点是命名是全自动的.可预知的,缺点是比eth0. ...
- centos7 网卡命名
CentOS6 及之前以太网网卡进行顺序命名的:多网卡如:eth0,eth1 依次.Centos7 则不同,命名规则默认是基于固件.拓扑.位置信息来分配.一.网卡命名的策略systemd对网络设备的命 ...
- centos7修改网卡命名规则
实验目的: 修改默认的网卡命名规则,习惯于ethx的形式 实验环境: centos7 熟悉控制网卡名字的规则生产的参数biosdevname/net.ifnames /etc/default/gr ...
- CentOS7.3将网卡命名方式设置为传统方式
CentOS7.3将网卡命名方式设置为传统方式 生产环境可能拥有不同系列的操作系统,比如,既有CentOS6系列,也有CentOS7系列的系统,而CentOS6和CentOS7在网卡命名方面有着较大区 ...
- rhel7修改网卡命名规则
1步:当安装完红帽RHEL7系统安装完成,您的网卡命名是这样的. 第2步:请编辑网卡的配置文件 将”/etc/sysconfig/network-scripts/ifcfg-eno16777736“的 ...
- centos7网卡名修改
centos7网卡名不是以etho的方式命名,有时候在自动化方面不便于管理,在安装的时候输入如下代码即可命名: net.ifnames=0 biosdevname=0
- RHEL 7.3修改网卡命名规则为ethX
RHEL 7网卡默认命名规则:以太网卡(Ethernet)为enX,无线网卡(WLAN)为wlX,修改网卡命名规则为ethX如下: 1.修改/etc/sysconfig/grub文件,添加net.if ...
- 修改CentOS7网卡名字
需求:CentOS7网卡名字不像之前CentOS6版本的eth0,eth1这样的名字了,而是enoxxx比较长,不太容易记忆,操作也不方便!这时候就需要改网卡名字了. 1 :查看你的CentOS7 ...
- biosdevname网卡命名方式
在前天通过了最后的 Go/No-Go 会议后,Fedora 15 已定于下周正式发布,这个永远站在开源技术最前沿的发行版,即将迎来又一个新的大的变动.作为 Fedora 用户,相信你已经习惯了每个新版 ...
随机推荐
- 前端技术大行其道,再不拥抱TypeScript你就老了!
本篇文章旨在介绍下TypeScript这门新兴的程序设计语言,不需要你有多么强的专业知识,只需要你有半支烟的功夫. 好了,废话不多说,赶紧进入正题.为什么你需要拥抱TypeScript?那么你首先需要 ...
- mongo connections url string 的问题
摘要 driver 连接Mongo DB的url其实很简单,就是几个变量拼接成一个url,和关系型数据库没什么不同.但是因为mongo有单个instance和replicaSet不同的部署策略,还有m ...
- Angular CLI 安装和使用
1.背景介绍 关于Angular版本,Angular官方已经统一命名Angular 1.x同一为Angular JS:Angular 2.x及以上统称Angular: CLI是Command Line ...
- centos修改主机名的正确方法
1 centos6下修改hostname [root@centos6 ~]$ hostname # 查看当前的hostnmae centos6.magedu.com [root@centos6 ~]$ ...
- 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式
原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6439313.html Java后台实现极光推送有两种方式,一种是使用极光推送官方提供的推送请 ...
- Spring Cloud 系列之 Eureka 实现服务注册与发现
如果你对 Spring Cloud 体系还不是很了解,可以先读一下 Spring Cloud 都有哪些模块 Eureka 是 Netflix 开源的服务注册发现组件,服务发现可以说是微服务架构的核心功 ...
- Web部分
说出Servlet的生命周期,并说出Servlet和GCI的区别. Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init方法进行Servlet的初始化,请求到达时 ...
- 编程心法 之 怎么选择合适的IDE
一般情况下,使用IDE进行开发可以极大的提高开发效率 最佳选择 如果语言是GNU开源的则Eclipse,因为Eclipse就是开源的 例如C和C++这样的底层语言并且经典的语言,基于GNU的语言,推荐 ...
- Salesforce 简介
Salesforce是什么 Salesforce是一个功能全面的云平台.它是践行Saas(软件及服务)概念的先驱之一. Salesforce的核心功能是CRM(客户关系管理系统).系统默认提供大多数C ...
- MATLAB 音响系统工具箱
音响系统工具箱 设计和测试音频处理系统 发行说明 pdf文档 音频系统工具箱™为音频处理系统的设计,仿真和桌面原型设计提供了算法和工具.它支持低延迟信号流式传输到音频接口,交互式参数调整以及数字音频工 ...