systemd .linkファイルが機能しない

systemd .linkファイルが機能しない

私はOdroid HC2でArmbian Busterを実行しています。実際、私のインターフェース名はenx001e0632c19dforeth0wlx503eaa4a712aforと同じです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​​インタフェースです。

私のインターフェイスの2つは.linkファイルの名前変更を使用しますが、このインターフェイスはそうではありません。 udev renameを使用する別の(同じ)設定は、3つのインターフェースすべての名前を正常に変更しました。

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'

幸いなことに、私はこのデバイスをブリッジインターフェイスで使用しているので、3つの名前すべてにインポートするように指示できます(2つは明らかに失敗します)。したがって、何かが変更され、後で動作し始めても、把握しようとして頭を傷つけません。何が変更され、ネットワークが破損しているのですか?

私の問題を発見しました。

私はDebianを使用しており、次のものがあります。

/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どおりに機能しました。

関連情報