UDEV 構成で親属性「serial」を使用して、MAC アドレスに頼るのではなく、LAN インターフェイスに別の名前を割り当てます。

UDEV 構成で親属性「serial」を使用して、MAC アドレスに頼るのではなく、LAN インターフェイスに別の名前を割り当てます。

このカーネルの問題は修正を待っており、この USB3 LAN アダプタに MAC アドレスがランダムに割り当てられます。Debian 12 - 突然、再起動するたびに USB3 LAN アダプタにランダムな MAC アドレスが割り当てられるようになりました

私はカスタム以外の回避策を見つけようとしていますパッチを適用してカーネルを再コンパイルするまたは古いカーネルバージョンを使用する

基本的に私のインターフェース設定はすべて、udev設定ファイルを使用して取得したカスタム名に基づいています。70-永続ネットルール(特定のインターフェースは MAC アドレスに基づいて名前が変更されますが、上記のバグがあるため、これはもう機能しません)。

udevファイルの構文を見ると/etc/udev/rules.d/70-persistent-net.rules

私の conf には次のようなさまざまな行があります:

SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{address}="00:....", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"

コマンドを呼び出すことによって私が発見したこと:

udevadm 情報 -a -p /sys/class/net/eth1

eth2、eth3、eth4、eth5 も同様です...

インターフェイスを一意に識別するための興味深い ATTR があることです。

これは「serial」と呼ばれる属性ですが、eth1、eth2 では使用できませんが、それらの直接の親 dev で使用できます。

実際、この命令は次のように始まりますデバイスを見ています...しかし、親デバイスを確認しています...

そこで、次のようなことができるのではないかと考えています:

SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{parent>serial}="00000003", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"

LAN インターフェイスの名前を変更するには、MAC アドレスに基づいて構成を作成するのではなく、親シリアルを使用します。

このような構文は存在しますか?

ありがとう

答え1

この投稿でその答えを見つけたようです:USB デバイスはどのようにして一意に区別されるのでしょうか?

この参照を読む:https://www.reactivated.net/writing_udev_rules.html

シングルペアレントを実際のレベルと混ぜることもできるようです。アトラス、したがって、ATTRS{シリアル}の代わりにATTR{アドレス}提供されたシリアル番号を使用してudevadm 情報 -a -p /sys/class/net/eth1仕事をする。

例:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRS{serial}=="00000000000094", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="lan1"

そこで、Debian 開発者がアップストリーム チャネルにパッチを適用して EEPROM 内の MAC を読み取れるようになるまで、最新の Linux カーネルを使用して元に戻しました。今のところは回避策ですが、確実なものです。

唯一の面白い部分は、デバイスにケーブルが接続されていない場合、私のケースでは lan1 と eth0 の両方が存在し、lan1 はアクティブで「奇妙に」正しい MAC アドレスを取得し、eth0 はランダムな MAC アドレスでダウンしたままであることです。

編集: これは、一部のデバイスが同じシリアル番号を共有していることがわかったまでは機能していました¯_(ツ)_/¯ ので、アダプターを移動せずに常に所定の位置に残しておくという事実を考慮して、アダプターを一意に識別するために USB ルート バス番号とデバイス番号を直接使用し始めました。これについては、次の質問を確認してください:MAC アドレスの代わりにインターフェイス名を割り当てるには、udev ルールで USB NIC アドレスの USB パスを使用します。

関連情報