Linux有问必答:如何在CentOS7上改变网络接口名

Linux有问必答:如何在CentOS7上改变网络接口名

提问: 在CentOS7,我想将分配的网络接口名更改为别的名字。有什么合适的方法来来重命名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端口号链

新的命名方案的一个小的缺点是接口名称相比传统名称有点难以阅读。例如,你可能会发现像enp0s3名字。再者,你再也无法来控制接口名了。

如果由于某种原因,你喜欢旧的方式,并希望能够选择任意名称分配给CentOS/ RHEL7的设备,你需要重写默认的可预测的命名规则,定义基于MAC地址udev规则。

下面是如何在CentOS或RHEL7命名网络接口。

首先,让我们来禁用该可预测命名规则。对于这一点,你可以在启动时传递“net.ifnames=0”的内核参数。这是通过编辑/etc/default/grub并加入“net.ifnames=0”到GRUBCMDLINELINUX变量来实现的。

然后运行这条命令来重新生成GRUB配置并更新内核参数。

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

接下来,编辑(或创建)一个udev的网络命名规则文件(/etc/udev/rules.d/70-persistent-net.rules),并添加下面一行。更换成你自己的MAC地址(08:00:27:a9:7a:e1)和接口(sushi)。

 $ sudo vi /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:a9:7a:e1", ATTR{type}=="1", KERNEL=="eth*", NAME="sushi"

最后,重启电脑并验证新的接口名。

请注意,配置重命名后的接口仍然是你的责任。如果网络配置(例如,IPv4设置,防火墙规则)是基于旧名称(变更前)的,则需要更新的网络配置以反映更改的名称。

原文发布时间:2014-10-20

本文来自云栖合作伙伴“linux中国”

时间: 2024-12-21 18:42:54

Linux有问必答:如何在CentOS7上改变网络接口名的相关文章

Linux有问必答:如何在CentOS或者RHEL上启用Nux Dextop仓库

Linux有问必答:如何在CentOS或者RHEL上启用Nux Dextop仓库 问题: 我想要安装一个在Nux Dextop仓库的RPM包.我该如何在CentOS或者RHEL上设置Nux Dextop仓库? Nux Dextop是一个面对CentOS.RHEL.ScientificLinux的含有许多流行的桌面和多媒体相关的包的第三方RPM仓库(比如:Ardour,Shutter等等).目前,Nux Dextop桌面对CentOS和RHEL 6/7可用. 要在CentOS或者RHEL上启用Nu

Linux有问必答 - 如何在linux上安装WPS

Linux有问必答 - 如何在linux上安装WPS 问题: 我听说一个好东西Kingsoft Office(译注:就是WPS),所以我想在我的Linux上试试.我怎样才能安装Kingsoft Office呢? Kingsoft Office 是一套办公套件,支持多个平台,包括Windows, Linux, iOS 和 Android.它包含三个组件:Writer(WPS文字)用来文字处理,Presentation(WPS演示)支持幻灯片,Spereadsheets(WPS表格)是电子表格.其使

Linux有问必答-如何在Linux中安装Go语言

Linux有问必答-如何在Linux中安装Go语言 Go (也叫 "golang")是一款由Google最初开发的编程语言.它自诞生就有几个设计原则:简单性.安全性和速度.Go语言发行版拥有各种调试.测试.调优和代码审查工具.如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装. 在Ubuntu.Debian 或者 Linux Mint上安装Go语言 下面是在基于Debian的发行版上使用apt-get来安装Go语言和它的开发工具. $ sudo

Linux有问必答——如何在Linux命令行中剪裁图像

Linux有问必答--如何在Linux命令行中剪裁图像 问题:我想要去除图像文件中的白色空白,有没有什么便捷的方法能在Linux命令行中对图像文件进行剪裁? 当涉及到在Linux中转换或编辑图像文件时,ImageMagick毫无疑问是最为熟知的一体化软件之一.它包含了一整套命令行工具,用以显示.转换,或复制超过200中类型的光栅或矢量图像文件,所有这一切都在命令行下完成.ImageMagick可以用于多样化的图像编辑工作,如转换文件格式,添加特殊效果,添加文本,以及改变图像(调整大小.旋转.翻转

如何在CentOS7上安装Tomcat9

  在 CentOS7 上安装 Tomcat9 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器; 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目录 /usr/local/tools,如果有则忽略: mkdir -p tools 4 创建 /usr/local/tomcat 目录,如果已存在则忽略: mkdir -p tomcat 5 进入到目录 /usr/local/tools 中: cd tools/ 6 下载 apache-tomc

Linux有问必答:Ubuntu桌面上如何禁用默认的密钥环解锁提示

问题:当我启动我的Ubuntu桌面时,出现了一个弹出对话框,要求我输入密码来解锁默认的密钥环.我怎样才能禁用这个"解锁默认密钥环"弹出窗口,并自动解锁我的密钥环? 密钥环是一个以加密方式存储你的登录信息的本地数据库.各种桌面应用(如浏览器.电子邮件客户端)使用密钥环来安全地存储并管理你的登录凭证.机密.密码.证书或密钥.对于那些需要检索存储在密钥环中的信息的应用程序,需要解锁该密钥环. Ubuntu桌面所使用的GNOME密钥环被整合到了桌面登录中,该密钥环会在你验证进入桌面后自动解锁.

Linux有问必答:如何在CentOS上安装phpMyAdmin

Linux有问必答:如何在CentOS上安装phpMyAdmin 问题:我正在CentOS上运行一个MySQL/MariaDB服务,并且我想要通过网络接口来用phpMyAdmin来管理数据库.在CentOS上安装phpMyAdmin的最佳方法是什么? phpMyAdmin是一款以PHP为基础,基于Web的MySQL/MariaDB数据库管理工具.虽然已经存在着一些诸如Adminer的轻量级数据库管理工具, 但是phpMyAdmin还是更加广泛应用于网站管理员之中来进行各种MySQL/MariaD

Linux 有问必答:如何在debian及其衍生发行版中改变默认的 Java 版本

Linux 有问必答:如何在debian及其衍生发行版中改变默认的 Java 版本 提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境会设置一个"target"变量来设置程序可以运行的最低Java版本.如果你Linux系统上运行的程序不能满足最低的JRE版本要求,那么你会在运行的时候遇到下面的错误. Exception in thread

Linux 有问必答:如何在 Ubuntu 上配置网桥

Linux 有问必答:如何在 Ubuntu 上配置网桥 Question: 我需要在我的Ubuntu主机上建立一个Linux网桥,共享一个网卡给其他一些虚拟主机或在主机上创建的容器.我目前正在Ubuntu上使用网络管理器(Network Manager),所以最好>能使用网络管理器来配置一个网桥.我该怎么做? 网桥是一个硬件装备,用来将两个或多个数据链路层(OSI七层模型中第二层)互联,以使得不同网段上的网络设备可以互相访问.当你想要互联一个主机里的多个虚拟机器或者以太接口时,就需要在Linux