MAC アドレスに依存するのではなく、UDEV 設定で親属性「シリアル」を使用して、LAN インターフェイスに別の名前を割り当てます。

MAC アドレスに依存するのではなく、UDEV 設定で親属性「シリアル」を使用して、LAN インターフェイスに別の名前を割り当てます。

このカーネルの問題が解決を待っていて、MACアドレスがこのUSB3 LANアダプタにランダムに割り当てられていることを考えると、次のようになります。Debian 12 - 再起動するたびに、突然USB3 LanアダプタにランダムなMACアドレスが割り当てられます。

カスタマイズ以外の解決策を見つけようとしています。パッチを使用してカーネルを再コンパイルするまたは以前のカーネルバージョンの使用

デフォルトでは、すべてのインターフェイス設定はudev設定ファイルを使用して取得したカスタム名に基づいています。70-持続性-network.rules(一部のインターフェイスの名前はMACアドレスに基づいて変更されましたが、上記のバグのため動作しなくなりました。)

udevファイルの構文を見ると/etc/udev/rules.d/70-pertant-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があります。

これは「シリアル」という属性ですが、eth1、eth2には適用されませんが、直系の親開発者には適用されます。

実際、順序は最初に言うデバイスを見ています...しかしその言葉の後親デバイスを見る...

それで、次のようにできるかどうか疑問に思います。

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

MACアドレスベースの設定ではなく、親シリアルを使用してLANインターフェイスの名前を変更します。

そのような構文はありますか?

ありがとう

答え1

この記事で答えを見つけたようです。USBデバイスはどのように一意に区別されますか?

次の参考資料をお読みください。https://www.reactivated.net/writing_udev_rules.html

以下を使用して、単一の親レベルと実際のレベルを混在させることができるようです。ATTRSだから、使用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"

だから私はeepromのMacを読むことができるように、Debian開発者がアップストリームチャンネルにパッチを入れるのを待っている間、最新のLinuxカーネルを使用するように戻しました。現在は解決策ですが、信頼できる方法です。

唯一興味深いのは、デバイスにケーブルが接続されていない場合、私の場合はlan1とeth0の両方が表示され、lan1が有効になって「奇妙に」正しいmacアドレスを取得するのに対し、eth0はまだ任意のmacアドレス1にあることです。

編集:これは、一部のデバイスが同じシーケンス ---_(ツ)_/--- を共有することが分かるまで機能しました。そこで、アダプターを移動せずに常に所定の位置に保持するので、USBルートバス番号とデバイス番号を直接使用してアダプターを一意に識別し始めました。 。この質問を確認してください:udevルールでは、USBネットワークカードアドレスのUSBパスを使用してMACアドレスの代わりにインターフェイス名を割り当てます。

関連情報