如何在 CentOS 上将网络接口重命名为 eth0如何在 CentOS 上将网络接口重命名为 eth0如何在 CentOS 上将网络接口重命名为 eth0如何在 CentOS 上将网络接口重命名为 eth0
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 CentOS 上将网络接口重命名为 eth0

发表 admin at 2025年2月28日
类别
  • 未分类
标签

在这篇文章中,我们将学习Linux接口命名。它是为基于 RHEL 的 Linux 发行版(例如 AlmaLinux、CentOS 和 Rocky Linux)编写的。您将了解 Linux 上名为 eth(X)、ens(X)、eno(X) 等的网络接口如何使用。

首先,我们了解Linux系统上网络接口的命名概念,包括经典的命名方案、biosdevname和系统udev策略。

1. 传统命名约定

传统命名约定是 Linux 内核驱动程序提供的默认传统接口命名方案。众所周知,传统的命名约定是例如 eth(n) 代表以太网设备,wlan(n) 代表无线 LAN 设备,usb(n) 代表 USBnet。

在传统的命名约定中,所有网络硬件都将由内核驱动程序以相同的方式处理。它足以告诉我们有关连接的类型,但对于您习惯的自然硬件来说就不够了。

2.Biosdev名称

Biosdevname 是由 Dell 发起的一个项目,旨在提供网络设备的一致命名。 Biosdevname 是一个 udev 实用程序帮助程序,它根据系统 BIOS 建议的硬件物理位置为网络设备提供一致的命名机制。

下面是biosdevname提供的默认命名方案:

  • 对于板载网络设备,将命名为“em[_<虚拟实例>]”
  • 对于附加 NIC 设备,将命名为“pp[_<虚拟实例>]”

更多细节:

  • em=板载网络设备
  • <插槽>=相应的 PCI 插槽
  • =NIC 的端口号(如果有多端口 NIC)
  • <虚拟实例>=SRIOV 和/或 NPAR 实例索引
  • 附加网卡上的“p”分别代表 pci 插槽和端口

3. Systemd Udev 规则

如今,一些流行的 Linux 发行版(例如 Ubuntu、CentOS 和 Debian)都使用 Systemd 作为系统和服务管理器。从版本 197 开始,systemd 已添加到网络接口的本机命名策略和方案中,类似于 Biosdevname。

以下是基于 Systemd 的系统的 5 种网络接口命名策略:

  1. 对于板载网络设备,它将被命名为“eno1”、“eno2”等。
  2. 为了合并固件/BIOS,提供了 PCI Express 热插拔插槽索引号,命名为“ens1”。如果第一个策略失败,则将应用此策略。主要由VMWare、KVM等虚拟机使用。
  3. 如果适用,则应用包含硬件连接器物理位置的名称(例如:enp2s0),否则在所有其他情况下直接回落到方案 5。
  4. 默认情况下不使用包含接口 MAC 地址的名称(例如:enx78e7d1ea46da),但如果用户选择,则可以使用。
  5. 如果所有其他方法都失败,则使用传统的不可预测的内核命名方案(例如:eth0)。

现在我们已经了解了 Linux 接口命名约定。

接下来,我们将向您展示如何将网络接口名称更改为传统的“et0”、eth1等。有两种方法可以做到这一点,通过“biosdevname”和通过“systemd udev”更改网络接口名称规则'。

1. 通过禁用 Biosdevname 将接口名称更改为 eth0

正如我们在顶部所知,biosdevname 是 Dell 创建的 udev 实用程序,用于按照系统 BIOS 的建议命名网络接口。默认情况下,biosdevname 软件包安装在 Linux 系统上。

要在 Linux 系统上禁用 biosdevname,您需要通过编辑系统上的 grub 配置在引导级别禁用它。

在继续之前,让我们使用以下命令检查系统上的当前接口。

ifconfig -a
ip addr

下面是结果。

因此,我们有两个网络接口“ens3”和“ens8”。

接下来,我们将通过编辑每个接口的 grub 配置和网络配置,将 CentOS 8 系统上的两个接口重命名为“eth0”和“eth1”。

- 设置 Grub2

转到“/etc/sysconfig/”目录并使用 vim 编辑器编辑“grub”配置。

cd /etc/sysconfig/
vim grub

在“GRUB_CMDLINE_LINUX”配置上,添加以下配置以禁用 biosdevname 和 net.ifnames 内核参数。

net.ifnames=0 biosdevname=0

保存并关闭。

之后,使用“grub2-mkconfig”命令生成新的 grub 配置,如下所示。

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

你会得到如下结果。

- 编辑网络脚本

接下来,我们需要重命名位于“/etc/sysconfig/network-scripts/”目录中的配置上的两个网络接口。

转到“/etc/sysconfig/network-scripts/”。

cd /etc/sysconfig/network-scripts/

将两个接口名称重命名为“ifcfg-ethX”。

mv ifcfg-enp0s3 ifcfg-eth0
mv ifcfg-enp0s8 ifcfg-eth1

之后,使用下面的 sed 命令将两个文件上的两个接口更改为“ethX”。

sed -i -e 's/enp0s3/eth0/g' ifcfg-eth0
sed -i -e 's/enp0s8/eth1/g' ifcfg-eth1

现在重新启动CentOS 8系统。

sudo reboot

- 测试

再次登录后,使用以下命令检查可用的网络接口。

ifconfig
ip addr

您将看到如下结果。

CentOS 8 系统上的两个网络接口都已更改,现在使用传统的命名约定。通过在系统引导期间禁用“biosdevname”来更改网络接口。

- 可选

如果您想查看系统启动变化的详细信息,可以运行以下命令。

dmesg | grep -i eth

您将看到默认接口名称已更改为传统名称“ethX”,通过自定义 udev 规则进行更改。

2. 使用 Udev 规则将接口名称更改为 eth0

将网络接口名称更改为传统命名(例如 eth0 等)的另一种方法是创建自定义 udev 规则。并且通过使用自定义的udev规则,网络接口将在系统之后更改。

- 创建自定义 Udev 规则

现在转到“/etc/udev/rules.d/”目录并使用 vim 编辑器创建名为“70-persistent-net.rules”的自定义规则。

cd /etc/udev/rules.d/
vim 70-persistent-net.rules

将 MAC 地址和默认接口“ens3”和“ens8”更改为您自己的并粘贴到其中。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:6c:a8:e6", ATTR{type}=="1", KERNEL=="ens3", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:97:cf:33", ATTR{type}=="1", KERNEL=="ens8", NAME="eth1"

保存并关闭。

- 编辑网络脚本

接下来,转到“/etc/sysconfig/network-scripts”目录。

cd /etc/sysconfig/network-scripts/

将两个接口名称重命名为“ifcfg-ethX”。

mv ifcfg-enp0s3 ifcfg-eth0
mv ifcfg-enp0s8 ifcfg-eth1

之后,使用下面的 sed 命令将两个文件上的两个接口更改为“ethX”。

sed -i -e 's/enp0s3/eth0/g' ifcfg-eth0
sed -i -e 's/enp0s8/eth1/g' ifcfg-eth1

现在重新启动 CentOS 8 服务器。

sudo reboot

- 测试

再次登录后,请使用以下命令检查所有可用的网络接口。

ifconfig
ip addr

您将获得已分配的新接口“ethX”。

- 可选

如果您想查看系统启动变化的详细信息,可以运行以下命令。

dmesg | grep -i eth

您将看到“ensX”名称更改为传统名称“ethX”,这是通过自定义 udev 规则更改的。

参考

  • https://access.redhat.com/documentation/
©2015-2025 Norria support@alaica.com