Friday, April 5, 2013

Фиксированные имена сетевых интерфейсов в Archlinux

Как известно, в Linux имена сетевых интерфейсов обычно имеют вид "eth0", "eth1" и назначаются ядром при загрузке системы. Поскольку модули соответствующих драйверов загружаются асинхронно, порядок обнаружения интерфейсов не является постоянным. Поэтому, если в системе имеется несколько сетевых интерфейсов, их имена могут периодически меняться при перезагрузке. Это может доставлять проблемы для приложений, использующих имена интерфейсов (e.g. фаерволы, сетевые мониторы).

Начиная с версии v197 systemd/udev автоматически назначает постоянные фиксированные имена для всех Ethernet, WLAN и WWAN интерфейсов. Для имен используются префиксы en, wl и ww соответственно и автоматически сгенерированные идентификаторы. Пример для ethernet-интерфейса: enp1s0.

При обновлении с более ранних версий systemd в Archlinux эта фича остается отключенной, благодаря наличию файла /etc/udev/rules.d/80-net-name-slot.rules:


$ cat /etc/udev/rules.d/80-net-name-slot.rules
# This file masks persistent renaming rules for network devices. If you
# delete this file, /usr/lib/udev/rules.d/80-net-name-slot.rules may
# rename network devices according to ID_NET_NAME_{ONBOARD,SLOT,PATH}
# properties of your network devices, with priority in that order. See
# the output of 'udevadm test-builtin net_id /sys/class/net/$interface'
# for details on what that new name might be.
#
# http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames


Чтобы для всех интерфейсов использовалось постоянное сгенерированное имя, достаточно удалить файл /etc/udev/rules.d/80-net-name-slot.rules. Посмотреть, какое имя будет назначено интерфейсу можно командой


udevadm test-builtin net_id /sys/class/net/eth0