Debian 6.1.0-20 カーネルアップデート後の USB3 ネットワークカードインターフェイスの問題のパート 4。
ここで他の投稿をチェックしてください:
- Debian 12 - 再起動するたびに、突然USB3 LanアダプタにランダムなMACアドレスが割り当てられます。
- MAC アドレスに依存するのではなく、UDEV 設定で親属性「シリアル」を使用して、LAN インターフェイスに別の名前を割り当てます。
- udevルールでは、USBネットワークカードアドレスのUSBパスを使用してMACアドレスの代わりにインターフェイス名を割り当てます。
抽象的な: カーネル 6.1.0-20 を使用した最近の Debian アップデートにより、usb-lan nics EEPROM に保存された MAC アドレス認識が中断されました。ATTR{住所}(macアドレスに基づいてインターフェース名を変更する)は機能しなくなりました。
私が今この記事を書いている理由:
- 使用ATTRS{シリーズ}うまくいきますが、私が持っている6つのアダプタのうち3つが同じ「シリアル」属性を共有するので、どちらがどれであるかを知る方法はありません。
- 私はUSBを使ってみました。ATTRS{バス番号}そしてATTRS{devnum}しかし、残りの3つのインタフェースを具体的に識別するために、これらの値は、主AC電流が除去され、再投入されるにつれて、時間の経過とともに不安定で変化するようです。
したがって、上記の解決策のどれも実際に最終的な問題を解決しません。
しかし、以下を使用してethインターフェースを削除して開くと(または単に開くと)そうです。
ip link set dev eth0 down
ip link set dev eth0 up
eth0(別名USB3 LANアダプタ)は、EEPROMに保存されている正しいMACアドレスを再読み込みします。
このとき私の唯一の考えは次のとおりです。
- すべてのインターフェイスを削除または開いて正しいMACアドレスを取得し、udevにルールを再適用させることはできますか?それとも起動時に一度だけ発生しますか?可能であれば、ethを0から10に削除してからudevを再呼び出しして、インターフェイスの名前を変更できるスクリプトを書くのに役立ちますか?
または...
- インターフェイスが元のMACアドレスを取り戻したときにudevを呼び出す前に、ETHを上下にフラッシュできます。この場合、udevは操作を完了する必要があります。
前回@ABが提案したRUN+=ソリューションは関連していますか?
答え1
説明する
OPのアイデアに基づいて現在の状態を修正するためにウデブ規制:
以下の条件がすべて満たされている場合のみ:
- 次へ追加
- インターネット機器
- ドライバーを含む
ax88179_178a
- 任意のMACアドレスで生成(
addr_assign_type=1
)
する:
インターフェイスをUPに設定します。これにより、ドライバは永続MACアドレス属性を取得できます。
もう一度DOWNに設定します。 (新しく追加されたインターフェイスの予想状態です。)
これで、インターフェイスが永続的なMACアドレス()を取得したことが確認されると、
addr_assign_type=0
インターフェイスの追加が再びトリガされます。...したがって、インターフェイス名を適切に変更して新しいラウンドをトリガーします。 (例:通常、USBネットワークインタフェースは、特に指定されていない場合、MACアドレスに基づいて名前が変更されます
enx...
。)
ルールと有効化
優先順位が十分に低いルールを作成します(私は40を選択しました)。
/etc/udev/rules.d/40-local-net-ax88179_178a.rules
:
ACTION=="add", SUBSYSTEM=="net", ATTR{addr_assign_type}=="1", DRIVERS=="ax88179_178a", \
RUN="/bin/ip link set %k up", RUN+="/bin/ip link set %k down", \
RUN+="/bin/udevadm trigger -s net -a addr_assign_type=0 -p INTERFACE=%k -c add"
それから最初にのみ(重い効果から最も軽い効果まで):
再起動
または再起動
udev
:systemctl restart udev
USBデバイスを取り外して再接続します。
またはドライバを再ロードしてください。
rmmod ax88179_178a modprobe ax88179_178a
または、変更が必要なインターフェイスでのみ新しいルールを人為的にトリガします。
udevadm trigger -v -s net -p ID_NET_DRIVER=ax88179_178a -a addr_assign_type=1 -c add
インターフェイスがすでに実行されている場合(たとえば、次の方法で)ネットワーク管理者)、MACアドレスの種類を確認する必要はありませんが、次のようにします。
udevadm trigger -v -s net -p ID_NET_DRIVER=ax88179_178a -c add
補足説明
これにより、最終的にパッチの前と同じ数のデバイスリセットが発生し、これらのデバイスリセットが発生するのを防止する。つまり、インターフェイスが追加のUP(次にDOWN)を取得するため、これらのリセットがトリガされます。
したがって、カーネルをどのようにコンパイルしてもパッチに戻す方が簡単です。この回避策は、SecureBootが必要で、生成されたカーネルモジュールに署名できない場合に便利です。
実際の3番目のドライバパッチはまだ歓迎されます。
コマンドの実行
最初のRUNコマンドを使用する必要があります。
NICを正しく処理するカーネルドライバとして実行した場合と同じ結果を得るには、2番目のRUNコマンドを使用する必要があります。つまり、DOWN状態でインターフェイスを追加することです。 1つのデバイスがリセットされるのを防ぐために、「オフ」に設定せずに「オン」にすることを検討できます(将来のネットワークツールでこの問題を解決できる場合)。
最後のRUNコマンドはスキップできます。 MACアドレスにのみ依存する最新のネットワークツールでインターフェイスの名前を変更した場合は、このコマンドは不要です。
次の理由でループは発生しません。
- インターフェイスが永続MACアドレスを取得する場合:アクションなし
- 一度アクティブなインターフェイスがシャットダウンしても永続的なMACアドレスを取得できない場合(つまり、回避策が機能しない場合)、操作は実行されず
add
(永続的なMACアドレスデバイスに制限されるため)、デバイスはそのまま残ります。任意のMACアドレス
Debian 以外のディストリビューション
存在することを確認する
/bin/ip
か、正しいパスに置き換えます(例/sbin/ip
::)。ユデフ(Devuan、Gentoo...):それはわかりませんが、ユデフ同じように振る舞うシステム~のウデブ内部でイベントがトリガーされる場合。 3番目の実行を変更する必要があるかもしれません。
何らかの理由で追加条件を追加する必要がある場合、一致するバリエーション
...S
(親属性の場合)はすべて同じ親属性の一部である必要があるため、必要に応じて同様の効果に置き換えることDRIVERS=="ax88179_178a"
ができます(特定のUSBデバイスが一致する場合)。ATTRS{product}=="AX88179"
この属性) 他の親要素から代替の有用ATTRS{serial}
な属性を取得する少なくとも
addr_assign_type=3
これは、MACアドレスが変更されたことを意味するようです(手動でまたは他の方法で、例えばインターフェイスをボンドスレーブに設定)。この規則はこれに触れません(触れてはいけません、会ってはいけません)。使用された文書
udev(7)
udevadm(8)
/lib/udev/rules.d/
たとえば、ファイル