12 июн. 2008 г.

Изменение имени сетевого интерфейса

Когда то давно, уе не помню и по каким причинам (то ли глюк системы был, толи интерфейсы переставлял..неважно), но случилась такая вещь - единственный вроде Ethernet интерфейс начал обзывать себя eth2. Да, работает, но как то не-Ъ. Как то я тогда вернул интерфейсу его кошерное eth0, вроде бы через пользование скрипта /etc/sysconfig/network/scripts/convert_persistent_name_rules и чтением каких то док в /usr/share/doc/. Щас в IRC появился человек с такой же проблемой. Сидел я, пытался вспомнить, как там оно это делается...так и не вышло. А помочь то надо ;). Нашелся другой, более пролетарский способ.
Берем любимый текстовый редактор и открываем файл /etc/udev/rules.d/70-persistent-net.rules, ищем в нем строчку вида
# PCI device 0x10de:0x03ef (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:1a:4d:9e:12:a0", NAME="eth2"
При наличии большого числа интефейсов подобных строк будет много, причем встречаются случаи, что самой сетевки уже давно и нет, а запись осталась. А если оно так, то втыкание другой сетевки выльется в появление нового сетевого интерфейса с увеличенным на единицу номером.
Так вот, каждая строка описания ифейса, как мы видим, содержит название ядерного модуля, поддерживающего железку (forcedeth в примере), физический адрес карты ( ATTR{address}), и имя сетевого интерфейса (NAME), ради которого все и затеялось. Меняем значение на нужное, eth0 или eth1000 ;), перезагружаем систему (вроде бы и рестарта только сетевой подсистемы должно быть достаточно, но у меня не прочухала ОС изменений, подняв снова eth2), и наслаждаемся Ъ-выводом ifconfig'a.
P.S.: Это я рассказывал про openSuSE, различия с Debian минимальны, в Etch'e файлик называется z25-persistent-net.rules, а все остальные телодвижения - аналогичны.