systemd .link 파일이 작동하지 않습니다

systemd .link 파일이 작동하지 않습니다

저는 Odroid HC2에서 Armbian Buster를 실행하고 있습니다. 실제로 내 인터페이스 이름은 enx001e0632c19dfor eth0wlx503eaa4a712afor 와 같습니다 wlan0.

제 생각에는아니요사용예측 인터페이스 이름대신 eth0 및 wlan0을 가져옵니다.

그래서 다음 위치에 2개의 파일을 만들었습니다 /etc/systemd/network/.

# ls -l /etc/systemd/network/
total 2
-rw-r--r-- 1 root root 54 Sep  2 00:32 10-eth.link
-rw-r--r-- 1 root root 55 Sep  2 00:32 10-wlan.link

eth0의 내용은 다음과 같습니다.

# cat 10-eth.link
[Match]
MACAddress=00:1e:06:32:c1:9d
[Link]
Name=eth0

wlan0의 경우:

# cat 10-wlan.link
[Match]
MACAddress=50:3e:aa:4a:71:2a
[Link]
Name=wlan0

그러다가 한 가지 주제를 보았습니다(내 시스템 링크 파일이 무시되는 이유는 무엇입니까?) 내가 해야 했던 일:

update-initramfs -u

그런 다음 재부팅했습니다.

하지만 여전히 작동하지 않습니다 ...

[편집] systemd-networkd 서비스가 활성화되어 있지 않습니다. 그래서 다음을 사용하여 활성화합니다.

systemctl enable systemd-networkd.service

그런 다음 재부팅했습니다. 하지만 여전히 작동하지 않으며 인터페이스 이름이 eth0and 로 변경되지 않습니다 wlan0.

출력은 다음과 같습니다 systemctl status systemd-networkd.service.

# systemctl status systemd-networkd.service
* systemd-networkd.service - Network Service
   Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor
   Active: active (running) since Mon 2019-09-02 00:59:54 UTC; 7min ago
     Docs: man:systemd-networkd.service(8)
 Main PID: 297 (systemd-network)
   Status: "Processing requests..."
   Memory: 2.3M
   CGroup: /system.slice/systemd-networkd.service
           `-297 /lib/systemd/systemd-networkd

Sep 02 00:59:54 ohc2 systemd[1]: Starting Network Service...
Sep 02 00:59:54 ohc2 systemd-networkd[297]: Enumeration completed
Sep 02 00:59:54 ohc2 systemd[1]: Started Network Service.
Sep 02 00:59:56 ohc2 systemd-networkd[297]: wlan0: Interface name change detecte
Sep 02 00:59:59 ohc2 systemd-networkd[297]: enx001e0632c19d: Gained carrier
Sep 02 01:00:01 ohc2 systemd-networkd[297]: enx001e0632c19d: Gained IPv6LL

라고 나와 있지만 wlan0: Interface name change detecte실행해도 ip addr아무것도 바뀌지 않습니다.

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enx001e0632c19d: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1e:06:32:c1:9d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::9b38:fe20:a87c:287/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: wlx503eaa4a712a: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 50:3e:aa:4a:71:2a brd ff:ff:ff:ff:ff:ff

누가 날 도울 수 있죠? 감사해요

답변1

인터페이스에서도 똑같은 문제가 발생했습니다. 오히려 AIX 드라이버를 사용하는 USB 인터페이스입니다.

내 인터페이스 중 두 개는 .link 파일 이름 바꾸기를 사용하지만 이 인터페이스는 그렇지 않습니다. udev rename을 사용하는 또 다른 (동일한) 설정은 세 인터페이스 모두의 이름을 성공적으로 변경했습니다.

Nov 23 22:12:16 xen17 vmunix: [ 7256.680568] asix 1-2:1.0 eth0: register 'asix' at usb-0000:00:14.0-2, ASIX AX88772 USB 
2.0 Ethernet, 00:0e:c6:b2:fb:30
Nov 23 22:12:16 xen17 vmunix: [ 7256.680691] usbcore: registered new interface driver asix
Nov 23 22:12:16 xen17 vmunix: [ 7256.684159] systemd-udevd[6406]: Using default interface naming scheme 'v240'.
Nov 23 22:12:16 xen17 vmunix: [ 7256.688004] systemd-udevd[6406]: link_config: autonegotiation is unset or enabled, the 
speed and duplex are not writable.
Nov 23 22:12:16 xen17 vmunix: [ 7256.688284] asix 1-2:1.0 enx000ec6b2fb30: renamed from eth0

하지만 .link 파일을 무시하더라도 이름이 잘못 표시됩니다.

root@xen17:/var/log# udevadm test-builtin net_id /sys/class/net/enx000ec6b2fb30 2>/dev/null
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=enx000ec6b2fb30
ID_OUI_FROM_DATABASE=ASIX ELECTRONICS CORP.
ID_NET_NAME_PATH=enp0s20u2

PATH가 MAC보다 우선하므로 enp0s20u2로 호출해야 합니다.

usbadm 테스트에서는 .link 파일에 올바른 이름이 있어야 함을 보여줍니다.

root@xen17:/var/log# udevadm test /sys/class/net/enx000ec6b2fb30 2>/dev/null
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/net/enx000ec6b2fb30
INTERFACE=enx000ec6b2fb30
IFINDEX=48
ACTION=add
SUBSYSTEM=net
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=enx000ec6b2fb30
ID_OUI_FROM_DATABASE=ASIX ELECTRONICS CORP.
ID_NET_NAME_PATH=enp0s20u2
ID_VENDOR=ASIX_Elec._Corp.
ID_VENDOR_ENC=ASIX\x20Elec.\x20Corp.
ID_VENDOR_ID=0b95
ID_MODEL=AX88772A
ID_MODEL_ENC=AX88772A
ID_MODEL_ID=7720
ID_REVISION=0001
ID_SERIAL=ASIX_Elec._Corp._AX88772A_000BAF
ID_SERIAL_SHORT=000BAF
ID_TYPE=generic
ID_BUS=usb
ID_USB_INTERFACES=:ffff00:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=asix
ID_USB_CLASS_FROM_DATABASE=Vendor Specific Class
ID_USB_SUBCLASS_FROM_DATABASE=Vendor Specific Subclass
ID_VENDOR_FROM_DATABASE=ASIX Electronics Corp.
ID_MODEL_FROM_DATABASE=AX88772
ID_PATH=pci-0000:00:14.0-usb-0:2:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0
ID_NET_DRIVER=asix
ID_NET_LINK_FILE=/etc/systemd/network/10-persistent-net-usblan2.link
ID_NET_NAME=usblan2
USEC_INITIALIZED=7256957740
run: 'bridge-network-interface'
run: 'ifupdown-hotplug'

운 좋게도 저는 이 장치를 브리지 인터페이스에서 사용하고 있으므로 세 가지 이름 모두로 가져오도록 지시할 수 있습니다(두 개는 분명히 실패할 것입니다). 따라서 뭔가 변경되어 나중에 작동하기 시작하더라도 알아내려고 머리를 긁지 않을 것입니다. 무엇이 변경되었으며 네트워크가 손상된 이유는 무엇입니까?

내 문제를 발견했습니다.

나는 데비안을 사용하고 있으며 다음을 가지고 있습니다:

/lib/udev/rules.d/73-usb-net-by-mac.rules

이것은 체계적인 규칙보다 우선하는 것 같습니다. 전체 파일을 주석 처리하면 이제 .link 파일이 제대로 작동합니다.

그래서 나는 시스템 이름 지정을 능가하는 유사한 udev 규칙을 OP에서 찾아볼 것을 제안합니다.

나는 이것을 실수라고 생각할 것 같다. 내가 본 문서에 따르면 다음 안정 릴리스에서는 사라질 것이라고 udev 규칙에서 전환했습니다. 하지만 USB 네트워크 장치를 사용하고 있다면 쉽게 전환할 수 없을 것 같습니다.

답변2

인터페이스 이름은 다음 명령을 사용하여 변경할 수 있습니다 udev./etc/udev/rules.d/70-persistent-net.rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:06:32:c1:9d", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:3e:aa:4a:71:2a", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="wlan0"

작동했고 재부팅 후 인터페이스 이름이 변경되었습니다.

하지만 내 문제는 해결되지 않았습니다. 왜 작동하지 않는지 아직도 모르겠습니다 systemd-networkd.

답변3

비슷한 문제가 있었는데 /etc/systemd/network.link 규칙이 기본 규칙으로 대체되어 발생했는데, /lib/systemd/network이에 따라 이런 일이 발생해서는 안 됩니다.문서. 특히 99-default.link교체 중이어서 파일을 호출했는데 98-something.link예상대로 작동했습니다.

관련 정보