Я хочу переименовать в Fedora 22 сетевой интерфейс, управляемый systemd-networkd (версия 219) с системного имени enp2s0
на wan
. Для этого я создал следующий файл /etc/systemd/network/80-wan.link
:
[Match]
MACAddress=mac-address
[Link]
Name=wan
Однако это не оказывает никакого влияния на систему. После перезагрузки имя все еще enp2s0
. Я вижу, udevadm
что udev выбрал файл для конфигурации, но проигнорировал предоставленное имя:
~> udevadm info /sys/class/net/enp2s0
P: /devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: ID_BUS=pci
E: ID_MM_CANDIDATE=1
E: ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
E: ID_MODEL_ID=0x8168
E: ID_NET_DRIVER=r8169
E: ID_NET_LINK_FILE=/etc/systemd/network/80-wan.link
E: ID_NET_NAME_MAC=enxMacAddress
E: ID_NET_NAME_PATH=enp2s0
E: ID_OUI_FROM_DATABASE=Shuttle Inc.
E: ID_PATH=pci-0000:02:00.0
E: ID_PATH_TAG=pci-0000_02_00_0
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_VENDOR_ID=0x10ec
E: IFINDEX=2
E: INTERFACE=enp2s0
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp2s0
E: TAGS=:systemd:
E: USEC_INITIALIZED=24183
Также нет упоминания нового имени wan
ни в одном журнале даже после активации отладочного вывода udev. Что я делаю не так?
решение1
По крайней мере, в Debian Stretch, похоже, что для вступления в силу существующих интерфейсов вам необходимо update-initramfs -u && reboot
добавить *.link
файлы ./etc/systemd/network/
Похоже, что сетевые интерфейсы переименовываются очень рано во время загрузки из initramfs, до того, как *.link
файлы /etc/systemd/network
становятся доступны... и как только интерфейс переименовывается один раз ( /sys/class/net/*/name_assign_type=4
), тоudev-builtin-net_setup_link
больше не будетиспускаютID_NET_NAME
потому что should_rename
возвращаетсяfalse
.
решение2
Вы используете systemd-networkd
? Я думаю, что .link
файлы имеют значение только в том случае, если вы используете (вместо NetworkManager по умолчанию или устаревших initscripts). (Хотя признаю, что я еще не изучал это глубоко.)
Я думаю, что вам нужен файл .rules
в формате /etc/udev/rules.d
, что-то вроде
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="mac-address", NAME="wan"
( mac-address
конечно, где находится ваш фактический шестнадцатеричный MAC-адрес).
Этот файл необходимо заказатьдо /usr/lib/udev/rules.d/80-net-setup-link.rules
, Итакдокументы по восходящей цепочкепредлагать /etc/udev/rules.d/70-my-net-names.rules
.
решение3
По каким-то нехорошим причинам, похоже, что networkmanager имеет приоритет над networkd (кто бы мог себе это представить?). Вы можете проверить это следующим образом:
systemctl stop NetworkManager
- отключите сетевой интерфейс
ip addr
Результат: правила /etc/systemd/network/*.link соблюдены.
Если вы запустите NetworkManager и повторите тест, /etc/systemd/network/*.link больше не будет учитываться. Я проверил это с помощью MACAddressPolicy=random
директивы