16 июля 2010 г.

Переименование сетевых интерфейсов в Linux (настройка UDEV)

Вб современных популярных дистрибутивах Linux имена сетевым интерфейсам присваиваются системой UDEV во время загрузки.

Для переименования интерфейса необходимо подправить файл /etc/udev/rules.d/70-persistent-net.rules

Например, файл 70-persistent-net.rules содержит такие строки:

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:f3:3e:b4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

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

Меняем параметр NAME="eth0" на NAME="internet":

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:f3:3e:b4", ATTR{type}=="1", KERNEL=="eth*", NAME="internet"

Выполняем из под root'а следующие команды (или перезагружаемся):

Выключить интерфейс:
# ifconfig eth0 down 
Перечитать правила udev:
# udevadm control --reload-rules
Выгрузить драйвер сетевой карты:
# modprobe -r atl1
Загрузить драйвер сетевой карты:
# modprobe atl1
Поднять интерфейс с новым именем:
# ifconfig internet up

Узнать какой драйвер используется для вашей сетевой карты можно командой lspci -k

Всё.

(!) Переименование сетевого интерфейса может понадобиться, если у вас поменялась сетевая карта или вообще жесткий диск с работоспособной системой переставлен в другую машину, в которой, естественно, опять же другая сетевая карта. Т.к. привязка осуществляется по MAC-адресам, то UDEV добавит правило для новой сетевой карты, но если прошлая сетевая карта у вас была под именем eth0, то новой он присвоит имя eth1 и все ваши настройки работать разумеется не будут.