systemd로 네트워크 인터페이스 이름 바꾸기

systemd로 네트워크 인터페이스 이름 바꾸기

Fedora 22에서 systemd-networkd(버전 219)가 관리하는 네트워크 인터페이스의 이름을 시스템 할당 이름 enp2s0에서 wan. 이를 위해 다음 파일을 만들었습니다 /etc/systemd/network/80-wan.link.

[Match]
MACAddress=mac-address
[Link]
Name=wan

그러나 이는 시스템에 아무런 영향을 미치지 않습니다. 재부팅 후에도 이름은 여전히 enp2s0​​. udevadmudev가 구성을 위해 파일을 선택했지만 제공된 이름을 무시한 것을 확인했습니다 .

~> 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/

*.linkinitramfs 내에서 부팅하는 동안 파일을 사용할 수 있기 전에 네트워크 인터페이스 이름이 아주 일찍 바뀌는 것 같습니다 /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물론 실제 16진수 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지시문 으로 테스트했습니다.

관련 정보