web-dev-qa-db-ja.com

Ubuntu 17.04:パスに基づいてUSBネットワークインターフェースの名前を変更する方法は? (MACに基づかない)

いいえ、これは 16.04でWi-Fiアダプターがwlan0として表示されないのはなぜですか? の重複ではありません。これはeth0命名を復元する方法を説明しますが、特定のインターフェイスに個別に名前を付けます。

MAC一致に基づいて割り当てたくありません。 必要なのは、USBパスに基づいて名前を割り当てることです

USBネットワークアダプターを差し込むと、Ubuntu 17.04では、encx000000000000など、MACに基づいてネットワークインターフェイス名が割り当てられます。次に、ID_PATH = pci-000:02:03.0-usb-0:1:1.0に基づいて、わかりやすい名前に名前を変更したいと思います。特に、IはMACアドレスに基づいて一致したくない。理由は、インターフェースの交換後はすべて故障するが、誰かが単にネットワークインターフェースハードウェアを交換して新しいハードウェアが古いハードウェアと同じ場所にある場合、システムはITおよび再構成のサポートを必要とせずに押し込めるということです。

そこで、ファイル/etc/systemd/network/50-my-island.linkを作成しました。

[Match]
Path=pci-000:02:03.0-usb-0:1:1.0
[Link]
Name=island0

残念ながら、名前は割り当てられません。 udevadm infoを使用すると、ID_NET_NAME=island0セットがあることがわかりますが、適用されません。 NamePolicy=セクションの下でNamePolicy=nameまたは[Link]を試しても、助けにはなりません。

道に迷いました! .linkファイルの名前をUSBネットワークアダプターに割り当てるにはどうすればよいですか?これは、いくつかのudevルールに頼らずに可能ですか?私の場合、.linkファイルが機能しないように見えるのに、なぜ.linkファイルがまったくないのですか?どこでエラーを犯しましたか?

6
TheDiveO

だから私は最終的に実際に何が起こっているのかを自分自身で考え出した。

残念ながら、USB-basedネットワークインターフェイスの名前を変更できないという問題は、Ubuntu/Debian(およびRaspbian)のudevルール/lib/udev/rules.d/73-usb-net-by-mac.rulesが原因です。その原因は次のとおりです。

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
  ATTR{address}=="?[014589cd]:*", \
  TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
  TEST!="/etc/systemd/network/99-default.link", \
    IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}"

この特定のルールが/etc/udev/rules.d/80-net-setup-link.rulesが存在することを確認する方法に注意してください。そうでない場合、NAMEはMAC48ベースの名前に設定され、後のデフォルトのインストール規則/lib/udev/rules.d/80-net-setup-link.rulesNAMEを割り当てる機会を得られません。今それは悲しいです。再び。

ユーザー定義名をUSBネットワークインターフェイスに割り当てる機能を有効にするには、/etc/udev/rules.d/80-net-setup-link.rulesが必要です。これは、73-usb-net-by-mac.rulesが以前にチェックするルールセットであるためです。 NAMEを割り当てます。

これは、ユーザーが割り当てたネットワークインターフェイス名がもはや無視されないようにするために、/etc/udev/rules.d/80-net-setup-link.rulesから/lib/udev/rules.d/80-net-setup-link.rulesへの単純なリンクが必要であることを意味します。

Sudo ln -s /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules

リブート。できた.

73-usb-net-by-mac.rulesの設定方法の副作用により、eth0ファイルで明示的に名前が指定されていない限り、すべてのUSBベースのネットワークインターフェースが.linkなどの「古い」命名を想定することに注意してください。

明示的に名前が付けられていないすべてのUSBネットワークアダプターにMACベースの名前を付けることは問題ないため、ルールがそのまま記述されている理由はわかりません。考え直して...no、すべてのUSBネットワークドングルにラベルを付けて絶えずラベルを付けない限り、MAC48ベースの名前を使用しても意味がありませんそれらを入れ替えます。しかし、おそらくMACベースの名前は、実際には意味があるドッキングステーションで使用されます...?

10
TheDiveO

このスレッド および特にこの段落によると:

カスタムネットインターフェイスの命名...ルールファイルの名前には、/ lib/udev/rules.d/80-net-setup-link.rulesの前に実行されるように、「80」より小さいプレフィックスが必要です。 「75」より大きいプレフィックス。75-net-description.rulesの後に実行されるため、ID_VENDORおよび類似のプロパティで一致を使用できます。 ...

このファイルを作成しました:/etc/udev/rules.d/76-netnames.rules

このコンテンツで

# USB device by path
# get ID_PATH if not present yet
ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
SUBSYSTEM=="net", ACTION=="add", ENV{ID_PATH}=="*-usb-0:1.*", NAME="eth%n"

回避策を提供しなくても、正常に機能しています。

Debianのpreseed.cfgでこのファイルを作成し、Debianの完全自動インストールでターゲットネットワーク構成を設定しました。
Intel NUCでこれを行うと、私の内部NICはDebian 9.5(ストレッチ)によってeno1という名前になりました。

3
Brice Miramont