изменение имен сетевых интерфейсов, Debian Wheezy

14

Я пытаюсь установить имя для интерфейса, ethLan вместо eth0. Это также гарантирует, что имя if будет оставаться неизменным при каждой перезагрузке и ядре.

Я нашел некоторые статьи в этой теме, но им всего пару лет:
http://www.debian-administration.org/articles/463
http://www.linuxfromscratch.org/hints/downloads/files/ nameif.txt

Я сделал, как они сказали, и добавил ethLan mac в / etc / mactabs / . На данный момент у меня есть две проблемы:
1) if [...] && /sbin/nameifСценарий, который я поместил в /etc/network/if-pre-up.d/ , не запускается. Я решил это, добавив это в /etc/init.d/networking , но почему не работает if-pre-up.d ?
2) Интерфейс не загрузится, если я не выполню команду ifconfig ethLan вручную , несмотря на добавление его в / etc / network / interfaces . Что я делаю неправильно?

пользователь
источник

Ответы:

17

Статьи, которые вы нашли, несколько устарели. Теперь есть простой способ назначать имена сетевым интерфейсам через Udev .

В Debian и его производных (включая Ubuntu) найдите файл с именем /etc/udev/rules.d/70-persistent-net.rules. Этот файл создан /lib/udev/rules.d/75-persistent-net-generator.rulesс помощью скрипта /lib/udev/write_net_rules. Каждый раз, когда udev видит новое сетевое устройство, он присваивает ему новый номер и добавляет его к /etc/udev/rules.d/70-persistent-net.rules. Таким образом, номера интерфейсов сохраняются при перезагрузке и сохранятся после переустановки, если вы восстановите /etc.

(Если ваш дистрибутив не отправляет эти файлы, найдите их в пакете Debian .)

Если вы хотите дать значимое имя интерфейсу, и у вас есть /etc/udev/rules.d/70-persistent-net.rules, все, что вам нужно сделать, это отредактировать этот файл и перейти "eth0"на "ethLan". Запустите, udevadm trigger --sysname eth0чтобы переименовать существующее устройство после того, как вы отредактировали файл (я думаю, что это требует закрытия интерфейса). Если у вас нет этого файла, вы можете написать соответствующую ему строку (сложные сценарии, которые добавляет Debian, предназначены только для этого автоматически):

SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="01:23:45:67:89:ab", NAME="ethLan"
Жиль "ТАК - перестань быть злым"
источник
1
Если вам нужен удобный список атрибутов, используемых в правилах udev, вы можете попробовать что-то вроде udevadm info -a /sys/class/net/eth0. ( udevadm(8)подробности см. )
Остин Адамс,
1
В этом вопросе четко говорится о Wheezy, однако стоит отметить, что этот ответ больше не подходит для более новых Debian и Ubuntu. Начиная с systemd 220-7, наименование интерфейса должно выполняться другими способами.
Сампи
@sampi Мой ответ по-прежнему относится к Debian jessie (текущий стабильный выпуск). Это терпит неудачу на растяжке, или это просто рекомендует устаревший метод? Вы знаете, какой выпуск Ubuntu является отсечкой?
Жиль "ТАК - перестань быть злым"
@ Жиль Я не углубился в детали, чтобы узнать, действительно ли это не так или просто рекомендуется. Кажется, Ubuntu Wily и новее используют systemd выше 220-7 .
Сампи
6

Для людей, которые сталкиваются с этим постом через поисковик, как я:

В Debian stretch и новее вы можете использовать файлы systemd .link, чтобы udev переименовал устройства. См. Https://manpages.debian.org/stretch/udev/systemd.link.5.en.html для справочной страницы.

Пример:

cat /etc/systemd/network/10-uplink0.link 
[Match]
MACAddress=00:0d:b9:49:8a:18

[Link]
Name=uplink0

Не забудьте запустить update-initramfs -uпотом, чтобы вставить эти обновленные файлы конфигурации в ваши initramfs, где они будут применены.

Майкл
источник
Если файлы ссылок присутствуют в системе с udev.rules.d, какой из них будет иметь приоритет?
vfclists
1

Есть немного более простой способ сделать это с помощью пакета с именем ifrename. Он имеет отдельный (из udev) файл конфигурации, и вы можете использовать MAC-адреса для идентификации интерфейсов.

Это противоречит, wireless-toolsоднако.

Миша арефьев
источник
2
Следует отметить, что ifrenameбудет конфликтовать с тем, udevесли оба будут использовать для интерфейсов постоянные имена.
Миша Арефьев