![systemd .link 파일이 작동하지 않습니다](https://linux55.com/image/160889/systemd%20.link%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
저는 Odroid HC2에서 Armbian Buster를 실행하고 있습니다. 실제로 내 인터페이스 이름은 enx001e0632c19d
for eth0
및 wlx503eaa4a712a
for 와 같습니다 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
그런 다음 재부팅했습니다. 하지만 여전히 작동하지 않으며 인터페이스 이름이 eth0
and 로 변경되지 않습니다 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
예상대로 작동했습니다.