本文主要是介绍CentOS7将可预见的命名规则改回枚举命名方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
CentOS/RHEL6引入了一致和可预测的网络设备命名网络接口的方法,从CentOS/RHEL7起,这种可预见的命名规则变成了默认。根据这一规则,接口名称被自动基于固件,拓扑结构和位置信息来确定。
传统上,Linux的网络接口被枚举为eth[0123...],但这些名称并不一定符合实际的硬件插槽,PCI位置,USB接口数量等,这引入了一个不可预知的命名问题(例如,由于不确定的设备探测行为),这可能会导致不同的网络配置错误(例如,由无意的接口改名引起的禁止接口或者防火墙旁路)。基于MAC地址的udev规则在虚拟化的环境中并不有用,这里的MAC地址如端口数量一样无常。
CentOS/RHEL6引入了一致和可预测的网络设备命名网络接口的方法。这些特性可以唯一地确定网络接口的名称以使定位和区分设备更容易,并且在这样一种方式下,无论是否重启机器、过了多少时间、或者改变硬件,其名字都是持久不变的。然而,这种命名规则并不是默认在CentOS/RHEL6上开启。
从CentOS/RHEL7起,这种可预见的命名规则变成了默认。根据这一规则,接口名称被自动基于固件,拓扑结构和位置信息来确定。现在,即使添加或移除网络设备,接口名称仍然保持固定,而无需重新枚举,和坏掉的硬件可以无缝替换。
* 基于接口类型的两个字母前缀:
* en -- 以太网
* sl -- 串行线路IP (slip)
* wl -- wlan
* ww -- wwan
*
* 名字类型:
* b<number> -- BCMA总线和新书
* ccw<name> -- CCW总线组名
* o<index> -- 车载设备的索引号
* s<slot>[f<function>][d<dev_port>] -- 热插拔插槽索引号
* x<MAC> -- MAC 地址
* [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
* -- PCI 位置
* [P<domain>]p<bus>s<slot>[f<function>][u<port>][..]1[i<interface>]
* -- USB端口号链
以下是修改步骤
1.修改grub启动系统内核参数
首先,让我们来禁用该可预测命名规则。需要在启动时传递“net.ifnames=0”的内核参数。这是通过编辑/etc/default/grub并加入“net.ifnames=0”到GRUB_CMDLINE_LINUX变量来实现的
然后运行命令来重新生成GRUB配置并更新内核参数。
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
2.修改接口配置文件
首先切换到网络接口配置文件目录下
cd /etc/sysconfig/network-scripts
找到那个根据预测命名的网络接口文件。我的是ifcfg-eno16777736,将此文件备份到其它文件夹(不要放在此处),然后修改此文件。
先将他改名为ifcfg-eth0
mv ifcfg-eno16777736 ifcfg-eth0
再编辑修改其中的内容
我修改好的内容如下:
主要注意修改以下几个地方
接口名称
NAME=eth0
开机启动
ONBOOT=yes
MAC地址(主要靠他联系设备),没有的话要自己添加上,记住这个MAC地址,一会儿后面的配置还要用
我是在虚拟机上安装的系统,所以地址可以通过查看属性获取
如果是修改的刚才ifcfg-eno16777736文件,要去掉DEVICE参数
3.修改网络命名规则文件
编辑 /etc/udev/rules.d/70-persistent-net.rules 文件(CentOS7最小版本下没有此文件,需要创建) 内容如下
注意MAC地址要和你上面获取的一致,我第一次配置就是没有创建这个文件,所有network启动时老是失败。
4.重启系统
这篇关于CentOS7将可预见的命名规则改回枚举命名方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!