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

Вопрос или проблема

Мой основной Ethernet-интерфейс называется enp2s0, но некоторые программы требуют, чтобы я назвал его eth0.

Как я могу его переименовать?

Я пытался создать /etc/udev/rules.d/10-rename-network.rules (согласно этому посту), создать /etc/udev/rules.d/70-persistent-net.rule и отредактировать /etc/network/interfaces.

Содержимое /etc/udev/rules.d/10-rename-network.rules было следующим:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ff:ff:ff:ff:ff", NAME="eth0"

где ff:ff…:ff заменено на mac-адрес enp2s0.

Используя netplan, который в настоящее время является стандартом.
Файл /etc/netplan/50-cloud-init.yaml.

Найдите целевые mac/hw адреса с помощью команды lshw:

lshw -C network

Вы увидите некоторый вывод, который выглядит так:

root@ys:/etc# lshw -C network
  *-network
       description: Ethernet interface
       physical id: 2
       logical name: eth0
       serial: dc:a6:32:e8:23:19
       size: 1Gbit/s
       capacity: 1Gbit/s
       capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=bcmgenet driverversion=5.8.0-1015-raspi duplex=full ip=192.168.0.112 link=yes multicast=yes port=MII speed=1Gbit/s

Теперь вы берете серийный номер

dc:a6:32:e8:23:19

Обратите внимание на опцию set-name.

Это также работает для раздела wifi.

network:
    version: 2
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: <ВАШ MAC ID ЗДЕСЬ>
            set-name: eth0

Затем, чтобы протестировать эту конфигурацию, выполните.

sudo netplan try

Когда вы будете довольны этим

sudo netplan apply

Откройте “etc/netplan/01-network-manager-all.yaml” с помощью любого текстового редактора
и скопируйте и вставьте текст из ниже, не забыв вставить ваши собственные “mac-адреса”

# Пусть NetworkManager управляет всеми устройствами в этой системе
  network:
    version: 2
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: fc:15:b4:bn:34:g5
            set-name: eth0
        wlan0:
            dhcp4: true
            match:
                macaddress: 00:22:34:f4:d3:45
            set-name: wlan0

и сохраните файл, после этого используйте

netplan try

netplan apply

Версия arm64 Focal Fossa, которая у меня есть, не имеет netplan, она использует nmcli, и изменить параметры командной строки ядра сложно. Я смог создать /etc/udev/rules.d/73-special-net-names.rules (которая в этой установке переопределяет /usr/lib/udev/rules.d/73-special-net-names.rules), чтобы изменить имя usb-подключенного Ethernet-порта (после использования lsusb, чтобы найти id 413c:a102), добавив:

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", ATTRS{idVendor}=="413c", ATTRS{idProduct}=="a102", NAME="eth0"

и затем перезагрузив.

Существует простой способ сделать это, который использует udev косвенно.
Добавьте файл для каждого интерфейса в формате PRIORITY-DESCRIPTIVE_NAME.link в /etc/systemd/network/. Например, 10-eth-internal.link:

[Match]
PermanentMACAddress=11:11:11:11:11:11

[Link]
Name=eth0

и 10-eth-dock.link:

[Match]
PermanentMACAddress=22:22:22:22:22:22

[Link]
Name=eth1

Если устройства не подключаются горячо или система иным образом не отображает новые имена, перезагрузите, чтобы они вступили в силу.
Вы сможете проверить ваши изменения с помощью ip link.

Объяснение

Согласно заявлению о том, почему у нас теперь есть эти некрасивые, но последовательные названия, второй вариант переопределения этих имен очень прост:

Вы создаете свою собственную схему именования, например, называя свои интерфейсы “internet0”, “dmz0” или “lan0”. Для этого создайте свои собственные .link файлы в /etc/systemd/network/, которые выбирают явное имя или лучшую схему именования для одного, нескольких или всех ваших интерфейсов. См. systemd.link(5) для получения дополнительной информации.

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

Если вы не хотите использовать MAC-адреса, например, при развертывании на системных образах, вы можете сопоставлять по Path= или другим последовательным идентификаторам (см. документы в цитате).
Вы можете получить эти идентификаторы из вывода udevadm info /sys/class/net/*.

Это хорошо работает для меня:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

Некоторым может понравиться этот метод больше, чем другие, упомянутые здесь. Он независим от mac-адреса и достаточно прост и низкоуровнев, чтобы хорошо взаимодействовать с инструментами переопределения сети. (Я сделал это на 22.04, но подозреваю, что 20.04 и 24.04 будут работать так же)

Поместите это в /etc/systemd/network/01-eth0.link

[Match] 
OriginalName=enp2s0

[Link] 
Name=eth0

Затем либо перезагрузите, либо выполните

udevadm trigger --action=add /sys/class/net/enp2s0

Примечание: триггер будет работать только один раз, потому что после этого имя будет изменено на eth0 с точки зрения триггера и файлов .link. Если вы хотите переименовать интерфейс, который уже был переименован, вы можете создать временный файл link и вызвать триггер, но этот путь рискован.

Вы можете добавить другие файлы .link для всех других интерфейсов, чтобы переименовать их в старые привычные имена.

Очевидной альтернативой является использование предложения Уолфа о сопоставлении по MAC-адресу или pci пути, что имеет преимущество повторного применения. Я также повторю его предложение использовать udevadm info /sys/class/net/[interface], чтобы проверить текущее состояние управления udev интерфейсом

Другой альтернативный способ сделать это – изменить

GRUB_CMDLINE_LINUX=""

на

GRUB_CMDLINE_LINUX="net.ifnames=0"

в /etc/default/grub, затем выполните update-grub и перезагрузите. Это полностью отключает новую “предсказуемую схему именования”. Мне кажется, что мне больше нравится метод .link, потому что вы можете манипулировать переименованием вещей без перезагрузки и/или изменять только те имена, которые вам важны.

Ответ или решение

Как переименовать сетевой интерфейс в Ubuntu 20.04

Переименование сетевого интерфейса в Ubuntu 20.04 может показаться непростой задачей, но с помощью нескольких шагов вы сможете изменить имя вашего интерфейса. В вашем случае необходимо переименовать интерфейс enp2s0 в eth0, поскольку это требуется некоторыми программами. Ниже приведены несколько методов, которые можно использовать для достижения этой цели.

Метод 1: Использование netplan

  1. Определите MAC-адрес интерфейса:
    Сначала вам нужно узнать MAC-адрес вашего интерфейса enp2s0. Чтобы сделать это, выполните команду:

    lshw -C network

    Найдите строку serial, которая обозначает MAC-адрес вашего интерфейса.

  2. Редактируйте файл конфигурации netplan:
    Откройте файл конфигурации netplan, который находится по пути /etc/netplan/. Например, вы можете использовать файл 50-cloud-init.yaml, или создать новый файл.

    network:
       version: 2
       ethernets:
           eth0:
               dhcp4: true
               match:
                   macaddress: <ваш_MAC_адрес>
               set-name: eth0

    Замените <ваш_MAC_адрес> на фактический MAC-адрес вашего интерфейса.

  3. Примените конфигурацию:
    Сначала протестируйте изменения:

    sudo netplan try

    Если все в порядке, примените конфигурацию:

    sudo netplan apply

Метод 2: Использование udev

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

  1. Создайте файл правил udev:
    Создайте файл /etc/udev/rules.d/10-rename-network.rules (или любое другое название):

    sudo nano /etc/udev/rules.d/10-rename-network.rules

    Добавьте следующую строку, заменив ff:ff:ff:ff:ff:ff на ваш фактический MAC-адрес:

    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="<ваш_MAC_адрес>", NAME="eth0"
  2. Примените изменения:
    Перезагрузите систему, чтобы изменения вступили в силу.

Метод 3: Использование systemd

В Ubuntu вы также можете использовать конфигурацию systemd для переименования интерфейсов.

  1. Создайте файл .link:
    Перейдите в каталог /etc/systemd/network/ и создайте новый файл, например 10-eth0.link:

    sudo nano /etc/systemd/network/10-eth0.link

    Добавьте следующее содержимое, заменив enp2s0 на ваше текущее имя интерфейса:

    [Match]
    OriginalName=enp2s0
    
    [Link]
    Name=eth0
  2. Перезагрузите или примените изменения:
    Перезапустите систему или выполните следующую команду, чтобы применить изменения:

    sudo udevadm trigger --action=add /sys/class/net/enp2s0

Заключение

Переименование сетевого интерфейса в Ubuntu 20.04 может быть выполнено через netplan, udev или systemd. Выберите метод, который кажется вам наиболее удобным и целесообразным для вашей ситуации. Если у вас возникнут какие-либо сложности, обязательно проверяйте логи и воспользуйтесь командами ip link или systemctl status systemd-networkd для диагностики.

Запомните, что правильное конфигурирование сетевых интерфейсов поможет не только удовлетворить требования программного обеспечения, но и повысить управляемость сети в целом.

Оцените материал
Добавить комментарий

Капча загружается...