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

Обновлено: 03.07.2024

ifrename: переименовывать сетевые интерфейсы на основе различных статических критериев

Команда для отображения руководства по ifrename в Linux: $ man 8 ifrename

ifrename — переименовывать сетевые интерфейсы на основе различных статических критериев

ОБЗОР

ifrename [-c configfile] [-p] [-d] [-u] [-v] [-V] [-D]
ifrename [-c configfile] [-i interface] [- п новое имя]

ОПИСАНИЕ

По умолчанию имена интерфейсов являются динамическими, и каждому сетевому интерфейсу назначается первое доступное имя ( eth0 , eth1 . ). Порядок создания сетевых интерфейсов может различаться. Для встроенных интерфейсов нумерация времени загрузки ядра может отличаться. Для съемного интерфейса пользователь может подключать их в любом порядке.

Ifrename позволяет пользователю решать, какое имя будет иметь сетевой интерфейс. Ifrename может использовать различные селекторы, чтобы указать, как имена интерфейсов соответствуют сетевым интерфейсам в системе, наиболее распространенным селектором является MAC-адрес интерфейса .

Ifrename должен запускаться до запуска интерфейсов, поэтому он в основном полезен в различных сценариях (инициализация, горячее подключение), но редко используется непосредственно пользователем. По умолчанию ifrename переименовывает все существующие системные интерфейсы, используя сопоставления, определенные в /etc/iftab .

ПАРАМЕТРЫ

-c configfile Установить используемый файл конфигурации (по умолчанию /etc/iftab). Файл конфигурации определяет сопоставление между селекторами и именами интерфейсов и описан в iftab (5).
Если configfile равен "-", конфигурация считывается со стандартного ввода. -p Проверять (загружать) модули ядра перед переименованием интерфейсов. По умолчанию ifrename проверяет только уже загруженные интерфейсы и не загружает автоматически необходимые модули ядра. Эта опция обеспечивает плавную интеграцию с системой без загрузки модулей перед вызовом ifrename . -d Включить различные специфичные для Debian хаки. В сочетании с -p загружаются только модули для интерфейсов, указанных в /etc/network/interface. -i интерфейс Переименовать только указанный интерфейс, а не все интерфейсы в системе. Будет напечатано новое имя интерфейса. -n новое имя При использовании с -i укажите новое имя интерфейса. Список отображений из конфигурационного файла игнорируется, интерфейс, указанный с помощью -i, переименовывается напрямую в новое имя. Новое имя может быть подстановочным знаком, содержащим одну «*».
При использовании без -i переименовывайте интерфейсы, используя только сопоставления, которые переименовывают их в newname . Новое имя не может быть подстановочным знаком. Такое использование ifrename не рекомендуется, потому что оно неэффективно ( -n без -i ). Все интерфейсы системы должны обрабатываться при каждом вызове, поэтому в большинстве случаев это не быстрее, чем просто позволить ifrename переименовать их все (без -n и -i ). -t Включить поддержку замены имени. Это позволяет менять имя интерфейса между двумя или более интерфейсами.
Перехват позволяет интерфейсу «украсть» имя другого интерфейса. Это работает только с ядром 2.6.X и если другой интерфейс не работает. Следовательно, это несовместимо с Hotplug. Другому интерфейсу назначается случайное имя, но позже его можно переименовать с помощью «ifrename».
Количество поглощений ограничено, чтобы избежать циклических циклов, поэтому некоторые сложные ситуации многостороннего обмена именами могут быть обработаны не полностью.
В любом случае замена имен и использование этой функции не рекомендуется, и вам предлагается выбрать уникальные и недвусмысленные имена для ваших интерфейсов. -u Включить режим вывода udev. Это обеспечивает правильную интеграцию ifrename в структуру udev, udevd (8) будет использовать ifrename для назначения имен интерфейсов, присутствующих в /etc/iftab. В этом режиме вывод ifrename может быть проанализирован непосредственно udevd (8) как действие IMPORT. Для этого требуется udev версии 107 или новее. -D Режим пробного запуска. Ifrename не изменит какой-либо интерфейс, он только напечатает имя нового интерфейса, если применимо, и вернет результат.
В пробном режиме подстановочные знаки имен интерфейсов не разрешаются. Печатается новое имя интерфейса, даже если оно совпадает со старым именем.
Также имейте в виду, что некоторые селекторы могут быть прочитаны только пользователем root, например те, которые основаны на ethtool ), и при запуске обычным пользователем они не будут работать. Другими словами, пробный режим под обычным пользователем может не дать ожидаемого результата. -V Подробный режим. Ifrename отобразит внутренние результаты разбора файла конфигурации и запроса селекторов интерфейсов. В сочетании с пробным запуском это хороший способ отладки сложных конфигураций или тривиальных проблем.

Назовите свои сетевые интерфейсы Linux так же, как и своим детям. Легко запомнить и трудно перепутать.

Опубликовано: 13 мая 2020 г. | Тайлер Кэрриган (Red Hat)

доска с именами

Изображение Pexels

Дополнительные ресурсы по Linux

Сетевые интерфейсы сегодня являются жизненно важной частью любого бизнеса. Все, от семейных магазинов до компаний из списка Fortune 100, используют сеть для логистики и коммуникаций. Большинство, если не все, из этих предприятий могут каким-то образом напрямую связать свою прибыль со своей сетью — если сеть выйдет из строя или кто-то случайно запустит неправильный интерфейс, деньги на столе. Именно по этой причине системный/сетевой администратор должен уделять особое внимание каждый раз, когда он работает с сетевыми интерфейсами или рядом с ними.

Одной из самых основных задач, которую иногда упускают из виду, может быть соглашение об именах для различных интерфейсов, от которых вы зависите каждый день. Я работал с небольшими компаниями, которые имели только один или два интерфейса для всей своей среды. В этом случае соглашение об именах не является проблемой. Однако для более крупных корпоративных сред присвоение имен вашим сетевым интерфейсам имеет жизненно важное значение для долгосрочного успеха. Представьте, как легко было бы ошибиться, потому что все ваши интерфейсы имеют одинаковые имена.

Не нужно паниковать! Великолепное сообщество Linux/Unix предвидело появление этой проблемы и разработало несколько способов ее избежать. Я хочу взглянуть на три разные команды: nameif, ip link и ifrename. Вы можете использовать каждый из этих инструментов для присвоения имен интерфейсам и взаимодействия с ними различными способами.

Команда nameif является более старой командой, которая официально объявлена ​​устаревшей. Тем не менее, есть и те, кто использует его для конкретных задач. Единственная цель этой команды — назвать интерфейс в соответствии с MAC-адресом устройства (устройств). Например:

Опция -c позволяет вам указать, из какого файла конфигурации вы хотите читать. По умолчанию используется /etc/mactab. Флаг -s просто сообщает системе о необходимости отправки сообщений об ошибках в системный журнал. Затем вы даете ему MAC-адрес интерфейса, который вы переименовываете. Легкий день.

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

Имена сетевых интерфейсов по умолчанию являются динамическими и назначаются в порядке очереди: eth0 , eth1 , eth2 и т. д. Инструмент ifrename позволяет назначать последовательные имена для ваших интерфейсов. Вы можете настроить это несколькими способами. Однако чаще всего здесь используется установка имени на основе, как вы уже догадались, MAC-адреса. Это имеет смысл сделать так, поскольку MAC-адреса уникальны для устройства. Подобно nameif, вы должны запустить ifrename до запуска интерфейсов, чтобы избежать сбоев. Этот инструмент также извлекает данные из файлов конфигурации; однако на этот раз мы используем /etc/iftab (если не указано иное). Давайте посмотрим, как его использовать.

-c — позволяет указать файл конфигурации, отличный от /etc/iftab

-i — позволяет переименовать только определенный интерфейс, а не все системные интерфейсы

-n — позволяет указать новое имя интерфейса (используйте с -i )

-D — позволяет пользователю войти в пробный режим. Здесь ifrename не изменит имя интерфейса. Он только печатает новое имя и возвращает. Это отличный способ убедиться, что команда верна, прежде чем запускать ее по-настоящему.

-V — дает подробный вывод с дополнительной информацией, используемой для отладки.

Команда ip — это швейцарский армейский нож среди сетевых команд Linux. В частности, мы рассматриваем ip link , команду, используемую для присвоения имени и изменения сетевых интерфейсов.

Чтобы вывести список всех интерфейсов, используйте следующее:

Обратите внимание, что эта команда не предоставляет информацию об IP-адресе. Вам нужно использовать команду ip addr для удовлетворения этой потребности. Для получения конкретной информации об интерфейсе используйте следующее:

Чтобы изменить имя интерфейса, мы используем следующее:

Обратите внимание, что вы должны отключить интерфейс, изменить имя, а затем снова включить его, чтобы изменения вступили в силу. Вам также необходимо изменить /etc/sysconfig/network-scripts/ifcfg_old_device_name на новое имя устройства как в заголовке, так и в содержимом файла.

У меня был начальник, который говорил: "С кота можно содрать шкуру несколькими способами". Хотя есть более изящные способы сказать это, суть в том, что всегда есть альтернативный способ выполнить задачу. Это подтверждается почти каждой операцией, которую должен выполнить администратор. Даже такая простая вещь, как именование интерфейсов, предоставляет администратору выбор. о чем ты думаешь? Если представится ситуация, какую из этих команд вы бы использовали для выполнения работы?

[ Хотите больше для своей сети? Загрузите бесплатную электронную книгу по автоматизации сети с помощью Ansible. ]

Запись eth0 в первом столбце относится к логическому именованному интерфейсу Red Hat Linux. Этот первый столбец в выходных данных определяет логические имена, назначенные Red Hat сетевому интерфейсу. HW-адрес 00.14.

Как переименовать enp0s3 в eth0?

Переименовать enp0s3 в eth0 — Ubuntu 16.04

  1. Во-первых, откройте и отредактируйте файлы /etc/default/grub. Вам необходимо изменить этот раздел: GRUB_CMDLINE_LINUX="" на: GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
  2. Обновите grub: sudo update-grub.
  3. После того, как все сделано, перезагрузите устройство и посмотрите имя вашего интерфейса.

Как изменить имя интерфейса?

CentOS / RHEL 7: как изменить имена сетевых интерфейсов

  1. Изменить параметр загрузки ядра. Отредактируйте файл /etc/default/grub и добавьте net.ifnames=0 biosdevname=0 в строку GRUB_CMDLINE_LINUX, например:
  2. Правильная конфигурация файла ifcfg. Измените параметры NAME и DEVICE в файле ifcfg на новое имя сетевого интерфейса. …
  3. Отключить NetworkManager. …
  4. Перезагрузите систему. …
  5. Подтвердить.

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

Лучший способ переименовать сетевой интерфейс — через udev . Отредактируйте файл /etc/udev/rules. d/70-постоянная сеть. правила для изменения имени интерфейса сетевого устройства.

Какое имя интерфейса?

Имена сетевых интерфейсов зависят от того, является ли интерфейс физическим или виртуальным сетевым интерфейсом. Физическим интерфейсам назначаются имена на основе номера слота адаптера. Имена интерфейсных групп задаются пользователем. Имена VLAN получаются путем объединения имени интерфейса и идентификатора VLAN.

Как запустить сетевой интерфейс в Linux?

Для чего нужен интерфейс?

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

Как найти имя интерфейса?

  1. Используйте «ip route get 8.8.8.8», чтобы выяснить, какой АКТИВНЫЙ интерфейс имеет маршрут к Интернету (или используется в настоящее время). Вывод должен выглядеть так: 8.8.4.4 via 10.10.1.1 dev enp0s3 src 10.10.1.118 cache.< /li>
  2. Используйте awk для печати 5-го текстового блока для интерфейса NAME. …
  3. Используйте awk, чтобы напечатать 7-й текстовый блок для адреса интерфейса.

Что такое enp0s3 в Linux?

Как изменить имя wlan0?

Выберите решение:

  1. Набор IP-ссылок wlp5s0 name wlan0 — не постоянный.
  2. создайте себе файл правил udev в /etc/udev/rules. г – постоянный.
  3. добавить сеть. параметр ядра ifnames=0 в grub. cfg — постоянный, если ваш дистрибутив не перезапишет его.

Как изменить интерфейс по умолчанию в Linux?

Попробуй это:

  1. Чтобы узнать, какой шлюз используется по умолчанию, введите: ip route .
  2. Чтобы удалить текущий шлюз по умолчанию, запустите: sudo route delete default gw .
  3. Чтобы добавить новый шлюз по умолчанию, выполните: sudo route add default gw .

Что такое интерфейс ens3?

Команда ip в Linux для отображения вашего IP-адреса

На изображении выше приведен список сетевых интерфейсов, таких как ens3 и lo. На изображении выше показаны два IP-адреса. … Имя этого сетевого интерфейса — «ens3».

Где находится eth0 в Ubuntu?

Вы можете использовать команду ifconfig или команду ip с командой grep и другими фильтрами, чтобы узнать IP-адрес, назначенный eth0, и отобразить его на экране.

В девяностые годы eth0, eth1 и т. д. просто назначались ядром.

Почему от него отказались

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

Как вернуть его

Если вы уничтожите все другие механизмы присвоения имен, у вас останется этот.

Простой способ отключить всю текущую схему именования интерфейсов (которую вы, возможно, захотите попробовать для однократного тестирования) — просто загрузиться с параметром ядра net.ifnames=0, что может можно установить в интерактивном сеансе grub при загрузке или сделать постоянным, отредактировав /etc/default/grub и запустив update-grub.

Почему от этого отказались

Как цепляться за это сейчас

Если у вас есть работающий "устаревший" файл /etc/udev/rules.d/70-persistent-net.rules и вы хотите использовать его, вы можете безопасно выполнить обновление через Debian. 9 "растягивание" и Debian 10 "buster". (Возможно, это еще не все, хотя это еще не тестировалось — вклад приветствуется.) udev в этих выпусках по-прежнему уважает этот файл, если он присутствует (и примет только что созданный). Однако имейте в виду, что вам придется поддерживать его самостоятельно, и со временем даже эта устаревшая поддержка может прекратиться, поэтому вы должны быть готовы перейти на другую схему до того, как это произойдет.

Как отпустить ситуацию и двигаться дальше

Несколько обходных путей для переименования интерфейсов появилось на заре существования беспроводных интерфейсов с возможностью горячей замены, но если они все еще работают, то это потому, что, как и в случае с ifrename, они теперь используют правила udev под капотом. Неясно, какое оставшееся преимущество у этого есть по сравнению с каноническим подходом .link - возможно, это полезно для машин, не использующих systemd?

В старых выпусках RedHat (среди прочих) использовалась система "biosdevname", но она никогда не поддерживалась в Debian. Если вам нужно знать об этом, где-то обязательно есть документация.

В новой схеме используются имена, обычно производные от расположения интерфейса с точки зрения аппаратных шин и т. д.: eno1, wlp1s3. Идея заключалась в том, что это обеспечивает «Предсказуемые имена», хотя, как оказалось, главное, что предсказуемо в этом, заключается в том, что вызов этого вызовет появление разъяренных пользователей, оспаривающих уместность этого имени. (Можем ли мы просто пропустить все это здесь, пожалуйста?) Очевидно, они должны были назвать их «детерминистически вычисляемыми именами сетевых интерфейсов».

Как справиться с этим при новых установках

Это должно быть достаточно просто; прежде чем вы начнете настраивать брандмауэры и т. д., просто посмотрите (например) на вывод ip a и запишите имена интерфейсов. В отличие от старых дней, когда единственным способом угадать, какой кабель был подключен к eth0, а какой к eth1, было отслеживание MAC-адресов, эта система предоставляет дополнительные подсказки в названия интерфейсов. Либо enp0s1 находится слева, а enp1s0 — справа, либо, что равновероятно, наоборот. Видеть? Так намного проще.

Как перейти на эту схему в обновленных системах

Рекомендуется выполнять это как отдельный перенос, а не как часть общего обновления дистрибутива. Однако, если на вашем ПК есть только один сетевой интерфейс и на карту поставлено немного, вы можете попробовать:

Стратегия А

Возможно, вам, по крайней мере, следует заранее проверить, какие файлы жестко закодированы имена интерфейсов, запустив что-то вроде

Очевидные вероятные попадания включают /etc/network/interfaces и файлы конфигурации для брандмауэров, Wi-Fi, DHCP. но возможно, что (например) ноутбук с одним интерфейсом Wi-Fi, управляемый NetworkManager, может вообще не нуждаться в исправлении. Это всего лишь предположение. Приветствуются отзывы пользователей NM

О, и подождите, разве нет приложений, которые требуют, чтобы вы поместили конфигурацию для каждого интерфейса в файл, названный в честь интерфейса, например /etc/whatever/wlan0.conf ? Вам также может понадобиться проверить их:

Стратегия Б

Чтобы узнать, какие имена будет выбирать udev при переходе на новую систему, сначала получите список сетевых устройств, о которых знает система:

Для каждого пути к устройству (кроме /sys/class/net/lo) спросите udevadm, какие NET_ID ему известны:

Скорее всего, он расскажет вам о таких вещах, как ID_OUI_FROM_DATABASE и ID_NET_NAMING_SCHEME, но важны строки (указанные в случайном порядке), начинающиеся с ID_NET_NAME_. Одним из них является имя, которому udev отдаст приоритет — список кандидатов может быть настолько коротким, что все, что вам нужно знать, это . _PATH лучше . _MAC, но есть и более редкие возможности, и вообще, если обнаружится что-то необычное, то оно будет иметь приоритет. Вы могли бы подумать, что в здравом мире мы бы просто запросили udevadm ifnames, и он перечислил бы известные ему интерфейсы с их доступными именами, упорядоченными в соответствии с действующей в настоящее время политикой приоритетов. или, подождите, конечно, в нормальном мире мы могли бы свободно использовать любое из этих имен, как мы можем использовать любой из псевдонимов в /dev/disks для обратитесь к жесткому диску. Но это было бы слишком просто.

Список от наивысшего приоритета к низшему:

Одной из веских причин для выполнения миграции отдельно от dist-upgrade является то, что ответы, которые вы получаете от (например) udevadm от stretch, не обязательно полностью совпадают с ответами, которые вы получаете от buster. . Это также означает, что каждый раз, когда вы обновляете systemd и перезагружаетесь, есть шанс, что ваш сервер может отключиться от сети, что кажется хорошим аргументом в пользу использования индивидуальной схемы, по крайней мере, для интерфейса, в котором вы используете SSH. вкл.

Осложнения и крайние случаи

(Дополнения приветствуются, но, пожалуйста, постарайтесь не раздувать этот раздел рассказами типа "Я не знаю, как это случилось, но у меня все пошло не так". )

в Debian 9 "stretch" или новее простая загрузка без переопределения net.ifnames=0 (и без файла 70-persistent-net.rules) должна будет достаточно, чтобы вы могли запустить новую схему, но в Debian 8 "jessie" вам нужно будет активно установить для нее значение net.ifnames=1. А в Debian 7 "wheezy" это, вероятно, просто не будет работать, но стоит ли вам вообще подключать его к Интернету?

* НАЖАТИЕ ПЕРЕКЛЮЧАТЕЛЯ

Смелый способ узнать, какие имена сетевых интерфейсов вы получите без файла /etc/udev/rules.d/70-persistent-net.rules, – удалить его (и обновить ваш initrd перед перезагрузкой), но вам не нужно заходить так далеко. Достаточно просто переименовать его (например, в 70-persistent-net.rules.old) или закомментировать определенные строки. См. файл udev README.Debian.gz. Обратите внимание, что возможна смешанная система с (скажем) enp1s1, названным из ее аппаратного пути, рядом с wlan0, все еще определенным как «постоянное» имя. * ИЕРАРХИЯ ID_NET_NAME_

если вы игнорируете ID_NET_NAME_SOMETHING, полагая, что все, что вы не понимаете, вероятно, не важно, вам нужно перечитать вышеизложенное. Общее правило таково: если вы его не узнаете, это все испортит. вверх. * ПРЕФИКСЫ И ПУТИ

проводные устройства получают префикс en- для Ethernet, беспроводные устройства получают wl- (а также есть еще несколько неясных возможностей, таких как ib-< /tt> для InfiniBand); тогда в принципе можно расшифровать все следующие последовательности кодовых букв плюс шестнадцатеричные цифры, которые кодируют топологию оборудования. Но нет особого смысла пытаться узнать все подробности, поскольку единственный работающий способ предсказать, какие ID_NET_NAME получит интерфейс, — это спросить udevadm, который сообщит вам полные строки. * ЗАГАДОЧНЫЕ ПРИОРИТЕТЫ

если вы посмотрите /lib/systemd/network/99-default.link на buster, вы увидите, что стандартная иерархия приоритетов выглядит следующим образом: "сохранять путь слота встроенной базы данных ядра< /tt>" (в порядке убывания; mac учитывается только с помощью другого механизма). Документации по этим первым трем типам имен явно не хватает, но лучшим источником для keep (post-stretch) является /usr/share/doc/systemd/NEWS.gz (но не NEWS.Debian.gz), что объясняет, что раньше он считался присутствующим по умолчанию, а теперь существует как явное правило, согласно которому имена, назначенные пользовательскими файлами .link, не будут переопределен. Тип имени kernel означает что-то подобное для имен интерфейсов, которые были "объявлены как постоянные", но неясно, о чем идет речь. * USB-УСТРОЙСТВА

на виртуальных машинах (согласно udev README) вам потребуется удалить файлы /etc/systemd/network/99-default.link и (при использовании сетевые устройства virtio) /etc/systemd/network/50-virtio-kernel-names.link, затем пересоберите initrd.

все очень хорошо, если все упорядочено в /etc, но переименование интерфейса должно происходить очень рано во время загрузки; чтобы убедиться, что ваш initrd не содержит устаревшие версии важных файлов systemd, перегенерируйте его с помощью sudo update-initramfs -u Если, конечно, вы не работаете без initrd, в этом случае предположительно вы знаете, что делать * LEFTOVERS

старая система постоянных имен впервые публично объявлялась устаревшей в файлах NEWS еще в середине 2015 года, так что это обновление долгое время зловеще висело над головами людей. Вы уверены, что ничего не делали с этим в прошлый раз, когда поднималась эта тема, например, не устанавливали параметр ядра net.ifnames=0 и/или не маскировали какой-то файл конфигурации systemd? Если это так, это может привести к запутанным симптомам при попытке перейти на новую систему. Проверьте свои административные журналы. Что вы имеете в виду, вы не ведете журналы? * ОШИБКИ

если вы знаете о дополнительных источниках осложнений, не учтенных здесь, включая (например) несистемные системы инициализации; второстепенные порты; systemd-networkd; или что-то еще, что появилось с тех пор, как это было впервые написано, пожалуйста, добавьте их сюда. * НЕПРЕДСКАЗУЕМОСТЬ

Оказывается, даже после всего этого до сих пор зафиксированы случаи смены названия интерфейсов при перезагрузке. Все, что должно произойти, это то, что какой-нибудь глючный BIOS (или какая-то новая, менее глючная версия модуля драйвера или политика именования systemd) изменит свое мнение о какой-то детали, например, считается ли ваше оборудование типом, который должен иметь ВСТРОЕННОЕ имя. . Есть даже сообщения об изменении нумерации PCI-портов устройств из-за установки другого оборудования.

Сетки безопасности

если ожидается, что ваш интерфейс SSH вернется как enp0s1 после перезагрузки, и это то, что вы настроили в /etc/network/interfaces, но вместо этого он решает называть себя eno0, это проблема, но достаточно осторожный администратор может предотвратить ее, имея целые дублирующие строфы в файле interfaces для определения одного и того же IP-адреса. для каждого имени, которое он может получить, включая eno0, ens0, eth0 и т. д. Имейте в виду, это все равно не поможет, если он вернется как enp7s1. * РУЧНАЯ ПЕРЕЗАГРУЗКА

один из способов убедиться в этом — не доверять udev самому решать, как должен называться ваш важный сетевой интерфейс; переключите его на имя, указанное в пользовательском файле .link. * ДОПОЛНИТЕЛЬНЫЕ ПРЕДЛОЖЕНИЯ ЗДЕСЬ .

Описанная выше схема является новой стандартной схемой по умолчанию, но есть и канонический способ переопределения схемы по умолчанию: вы можете использовать файлы .link для настройки политик именования в соответствии с вашими потребностями. Таким образом, например, если у вас есть два ПК, каждый из которых имеет только одну беспроводную карту, но один называет ее wlp0s1, а другой wlp1s0, вы можете настроить их обоих для использования имя wifi0, чтобы упростить обмен настройками брандмауэра. Подробнее см. systemd.link(5).

Вот относительно перспективная «ручная» версия приведенного выше примера: у меня это работает, по крайней мере, с исправленным MAC-адресом

Примечание: в соответствии с systemd.link(5) вы не должны использовать имя, которое ядро ​​может использовать для другого интерфейса (например, "eth0").

Также можно реорганизовать политику именования, переопределив /lib/systemd/network/99-default.link, например, настаивая на том, чтобы все сетевые интерфейсы именовались исключительно по MAC-адресу: У меня работает, но я предпочитаю вышеперечисленное

Примечания к выпуску для растягивания и сжатия

Ближайшим из исходных документов к каноническому HOWTO миграции был https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/. Большая проблема заключалась в том, что он делегировал все свои технические детали ссылке, указывающей на исходный код: https://github.com/systemd/systemd/blob/master/src/udev/udev-builtin-net_id.c. но большинство полезных комментариев, которые раньше были в верхней части этого файла, были удалены, поэтому вам нужно вернуться через дерево git к предыдущей версии, такой как https:// github.com/systemd/systemd/blob/eefe36e64c1a583bb9470884ed92115e0ce4647e/src/udev/udev-builtin-net_id.c. Между тем, страница теперь утверждает, что устарела, и вместо этого указывает на https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html, что гораздо менее полезно. Так что ближе всего к официальному HOWTO осталось, вероятно, /usr/share/doc/udev/README.Debian.gz (хотя он вообще не охватывает часть «как предсказывать имена» ).

Ключевые слова: постоянный, предсказуемый, NIC, wlan, eth, миграция

Читайте также: