
私は、この USB3 LAN アダプターをそれぞれ接続したさまざまな小型 NUC を持っています (NUC にはイーサネットが 1 つしかないため、USB3 アダプター付きのものを追加で追加しました)。
商品の画像を見ることができますここ。
突然、おそらく無人自動アップグレードが原因で、これらのデバイスはランダムな MAC アドレスを取得し始めました。
前に:
各 USB3 接続デバイスのアドレスは次の形式になります。
00:0E:C6:XX:XX:XX
それぞれが異なっており、常に同じ(安定)であり、再起動しても存続します。
現在、次のようなアドレスがあります:
eth1 - be:7d:ee:6a:26:ab
eth2 - be:7d:ee:6a:26:ab
eth3 - be:7d:ee:6a:26:ab
eth4 - be:7d:ee:6a:26:ab
eth5 - be:7d:ee:6a:26:ab
すべてランダムに選択された同じアドレスを共有します。
一言で言えば、トラブル:
- マシンが再起動するたびに、このランダムな MAC アドレスは変更されます。
- それらはすべて同じランダム MAC アドレスを共有します。以前は、それぞれが明確に異なる MAC アドレスを持っていました。
デバイスはlsusb
次のように識別されます。
ASIX Electronics Corp. AX88179 ギガビット イーサネット
最新の自動更新以降に何が起こったのか全く分かりません。最新の 2 日、1 時間前まではすべて正常に動作していましたが、その後、すべてのデバイスでこの奇妙な動作が発生し始めました。
問題のあるアップデートでしょうか? 毎回 MAC アドレスをランダム化する新しいドライバーがリリースされたのでしょうか? Linux カーネル、ディストリビューション、または GRUB 設定の機能により、USB LAN デバイスが毎回ランダムな MAC アドレスを取得するようになったのでしょうか? しかし、この場合、なぜすべてが同じものを共有するのでしょうか? 完全にランダムであるはずです...
私は助けを求めており、テストを受けるつもりです...
OSについて:
Debian バージョン:12.5
Linux 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux
これまでに提案された回避策には、@AB のおかげで常に機能する最終的なものも含まれています。
答え1
これ6.8 カーネルコミット、6.1.x にバックポートされました:
net: usb: ax88179_178a: 2回連続したデバイスリセットを回避する
AX88179 ベースの NIC での二重リセットを回避することを目的としたこの方法は、副作用として NIC のランダムな MAC アドレスを取得することがありました。
将来の6.9カーネルでは修正が予定されています。カーネル6.1.85以降にすでにバックポート済みこれは以前の問題を認めている(そして想定これを修正するには)。確認の部分は次のとおりです。
net: usb: ax88179_178a: インターフェースが常にランダムアドレスとして構成されるのを避ける
コミット d2689b6a86b9 ("net: usb: ax88179_178a: 2 回の連続したデバイス リセットを回避する") の後、バインド操作からリセットは実行されず、その時点ではデバイス レジスタまたはデバイスツリーから MAC アドレスは読み取られません。インターフェイスに割り当てられた MAC アドレスがランダムかどうかを構成するためのチェックは、usbnet_probe からのバインド操作後に行われるため、アドレスはオープン操作中に正しく読み取られ、設定されますが (現在唯一のリセット)、インターフェイスはランダム アドレスとして構成されたままになります。
問題は、Debianのカーネル6.1.0-20-amd64がすでに修正を含むアップストリームカーネル6.1.85を使用していることです。OPのコメントによると、これは正しく動作していないようです。はカーネル 6.1.0-20-amd64 を使用します。
確実に機能するのは、以前の状態、つまり 2024-02-05 にパッチが 6.1.x にバックポートされる前の状態に戻すことです。現在のところ、これは 2 つのパッチを元に戻すことを意味するようです。
- net: usb: ax88179_178a: インターフェースが常にランダムアドレスとして構成されるのを避ける
- net: usb: ax88179_178a: 2回連続したデバイスリセットを回避する
以前と同じように動作することが保証されます (そして、当時は問題ではなかったダブルリセット動作が元に戻ります)。
過去数週間で、元に戻すことがnet: usb: ax88179_178a: 2回連続したデバイスリセットを回避する動作はしましたが、新しい状態 (例: カーネル 6.1.85 または Debian 6.1.0-20-amd64) での動作は確認していません。OP の Q/A によると、最初のパッチ後に発生した動作を修正するための 2 番目のパッチでは不十分で、さらに別の修正を提供する必要がある可能性があります。
要約すると、今日考えられる選択肢は次のようになります。
- Debianの6.1.0-18-amd64などの古いカーネルを以下から入手してください。https://snapshot.debian.org/ そこには:
linux-image-6.1.0-18-amd64
- この回答で言及されている最初のパッチを元に戻して再コンパイルすることにより、カーネルを 6.1.77 から 6.1.84 にパッチします (動作テスト済み)
- カーネル 6.1.85 以降がそのまま動作するかどうかを確認してください。
動作するか(これ以上何もする必要はありません)
あるいはそうではない(OPの場合)
少なくとも最初のパッチを元に戻して再コンパイルします。
net: usb: ax88179_178a: インターフェースが常にランダムアドレスとして構成されるのを避ける(オプション、元に戻すのではなく保持できます)
net: usb: ax88179_178a: 2回連続したデバイスリセットを回避する: (これを元に戻す必要があります)
または、これを修正する将来のパッチを待つこともできます。
アップデート: 2024-04-18 からのこのコミット:
net: usb: ax88179_178a: 最初の読み取り前に MAC アドレスを書き込まないでください
修正しました (6.8.x カーネルでテストしました)。おそらく次の 6.1.x アップストリーム カーネル 6.1.88 に含まれるはずで、遅かれ早かれ Debian によって採用されるでしょう。追加ボーナス: リセットはプローブ時に行われ、インターフェイスの UP 時には行われないようです。そのため、ダウンとアップの間の遷移の遅延が短くなりました。