web-dev-qa-db-ja.com

ワイヤレスインターフェイスと有線インターフェイスを区別するUdevルール

USBサムドライブにArchインストールをセットアップしようとしていますが、サムドライブを接続するマシン(物理または仮想)に関係なく、ネットワークインターフェイス名を同じにしたいと思います。

これを行うには、インターフェイスが有線か無線かに基づいてudevルールを記述します。次のルールを試しましたが、インターフェイスの名前を変更できませんでした。

SUBSYSTEM=="net",ACTION=="add",ATTR{ifindex}==2,NAME=eth0
SUBSYSTEM=="net",ACTION=="add",ATTR{ifindex}==3,NAME=wlan0

もちろん、これは、有線インターフェイスが2番目にリストされ、無線インターフェイスが3番目にリストされる(ループバック後)という単純な仮定に基づいています。

私の質問は次のとおりです。

  1. ルールがインターフェイスの名前変更に失敗したのはなぜですか?この失敗をデバッグするにはどうすればよいですか?
  2. インターフェイスが有線か無線かを検出するためのより堅牢な方法はありますか
  3. ボーナス:簡単にするために、接続するすべてのマシンには、各タイプのインターフェイスが最大で1つあると想定しています。複数の有線/無線インターフェースを処理する方法はありますか?
3
Joseph R.

それが役立つ場合は、(異なる命名スキームの場合は非推奨になりました)/etc/udev/rules.d/70-persistent-net.rulesファイルは、その目的のために正確に使用され、インデックスではなくMACアドレスと一致します。そして、私は本当に本当にインデックスに依存しません、noネットワークインターフェースが特定の順序で作成されることを保証します。これが私のマシンでは次のようになります。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="11:22:33:44:55:66", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

このファイルは自動的に作成されますが、なぜeth0の追加属性が含まれているのかわかりません。システムの必要に応じて変更します。上記のコメントで述べたように、属性の完全なリストを取得するには、udevadm info -p /sys/class/net/wlan0などを使用します。

3
dirkt