Сетевые интерфейсы · 5 min read · Sep 29, 2025

Как переименовать сетевые интерфейсы в eth0 на CentOS

В этой статье мы узнаем о наименовании интерфейсов в Linux. Она написана для дистрибутивов Linux на базе RHEL, таких как AlmaLinux, CentOS и Rocky Linux. Вы узнаете, как сетевой интерфейс в Linux называется eth(X), ens(X), eno(X) и т.д.

Во-первых, мы узнаем о концепции наименования сетевого интерфейса в системе Linux, включая классическую схему наименования, biosdevname и политику udev системы.

1. Традиционная схема наименования

Традиционная схема наименования — это стандартная традиционная схема наименования интерфейсов, предоставляемая драйвером ядра Linux. Как мы знаем, традиционная схема наименования выглядит как eth(n) для Ethernet-устройства, wlan(n) для устройства беспроводной локальной сети и usb(n) для usbnet.

В традиционной схеме наименования все сетевое оборудование обрабатывается одинаково драйвером ядра. Это достаточно хорошо, чтобы сообщить нам о типе подключения, но не очень информативно о самом оборудовании, к которому вы привыкли.

2. Biosdevname

Biosdevname — это проект, который был начат компанией Dell для обеспечения последовательного наименования сетевых устройств. Biosdevname — это утилита udev, которая предоставляет последовательный механизм наименования для сетевых устройств на основе физического расположения оборудования, как это предложено системным BIOS.

Ниже представлена стандартная политика схемы наименования, предоставляемая biosdevname:

  • Для встроенных сетевых устройств будет использоваться имя “ em<порт>[_<виртуальный экземпляр>]
  • Для дополнительных устройств NIC будет использоваться имя “ p<слот>p<порт>[_<виртуальный экземпляр>]

Более подробная информация:

  • em = встроенные сетевые устройства
  • <слот> = соответствующий PCI-слот
  • <порт> = номер порта NIC (если есть многопортовые NIC)
  • <виртуальный экземпляр> = индекс экземпляра SRIOV и/или NPAR
  • p ‘ на дополнительном NIC обозначает соответственно pci слот и порт

3. Правила Systemd Udev

В настоящее время некоторые популярные дистрибутивы Linux, такие как Ubuntu, CentOS и Debian, используют Systemd в качестве менеджера системы и служб. И с версии 197 в systemd были добавлены нативные политики и схемы наименования для сетевых интерфейсов, аналогичные biosdevname.

Ниже приведены 5 политик наименования сетевых интерфейсов для системы на базе Systemd:

  1. Для встроенных сетевых устройств имя будет таким, как ‘eno1’, ‘eno2’ и т.д.
  2. Для интеграции номеров индексов слотов PCI Express, предоставленных прошивкой/BIOS, имя будет ‘ens1’. Это будет применено, если первая политика не сработает. В основном используется виртуальными машинами, такими как VMWare и KVM.
  3. Имена, учитывающие физическое расположение разъема оборудования (пример: enp2s0), применяются, если это возможно, в противном случае возвращаются к схеме 5 во всех других случаях.
  4. Имена, учитывающие MAC-адрес интерфейса (пример: enx78e7d1ea46da), по умолчанию не используются, но доступны, если пользователь выберет.
  5. Традиционная непредсказуемая схема наименования ядра используется, если все другие методы не сработают (пример: eth0).

Теперь мы узнали о традиционной схеме наименования интерфейсов в Linux.

Далее мы покажем вам, как изменить имена сетевых интерфейсов на традиционные ‘eth0’, ‘eth1’ и т.д. Существует два способа сделать это: изменить имена сетевых интерфейсов через ‘biosdevname’ и через ‘правила systemd udev’.

1. Изменение имени интерфейса на eth0, отключив Biosdevname

Как мы знаем, biosdevname — это утилита udev, созданная компанией Dell для наименования сетевых интерфейсов по предложению системного BIOS. И по умолчанию пакет biosdevname установлен в системе Linux.

Чтобы отключить biosdevname в системе Linux, вам нужно отключить его на уровне загрузки, отредактировав конфигурацию grub в вашей системе.

Прежде чем продолжить, давайте проверим текущие интерфейсы в системе, используя следующую команду.

ifconfig -a  
ip addr

А вот и результат.

В результате у нас есть два сетевых интерфейса ‘ens3’ и ‘ens8’.

Далее мы переименуем оба интерфейса в ‘eth0’ и ‘eth1’ на нашей системе CentOS 8, отредактировав конфигурацию grub и сетевую конфигурацию для каждого интерфейса.

- Настройка Grub2

Перейдите в директорию ‘/etc/sysconfig/‘ и отредактируйте конфигурацию ‘grub’ с помощью редактора vim.

cd /etc/sysconfig/  
vim grub

В конфигурации ‘GRUB_CMDLINE_LINUX’ добавьте следующую конфигурацию для отключения biosdevname и параметра ядра net.ifnames.

net.ifnames=0 biosdevname=0

Сохраните и закройте.

После этого создайте новую конфигурацию grub, используя команду ‘grub2-mkconfig’, как показано ниже.

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

После этого измените оба интерфейса на ‘ethX’ в обоих файлах, используя команду sed ниже.

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. Изменение имени интерфейса на eth0 с использованием правил Udev

Другой способ изменить имя сетевого интерфейса на традиционное наименование, такое как eth0 и т.д., — это создание пользовательских правил udev. И с помощью пользовательских правил udev сетевые интерфейсы будут изменены после системы.

- Создание пользовательских правил Udev

Теперь перейдите в директорию ‘/etc/udev/rules.d/‘ и создайте пользовательское правило с именем ‘70-persistent-net.rules’ с помощью редактора vim.

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

После этого измените оба интерфейса на ‘ethX’ в обоих файлах, используя команду sed ниже.

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.

Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.