Linux はネットワーク デバイスの割り当てをどのように、またはどこで決定するのでしょうか。具体的には、ワイヤレス USB デバイスの場合wlan0
です。wlan1
しばらく前に TP USB ワイヤレスを接続しましたが、 が割り当てられましたwlan0
。取り外しました。今週、Edimax USB ワイヤレス デバイスを接続しましたが、 として表示されますwlan1
。今日、2 台目の Edimax USB ワイヤレス デバイス (2 台購入) を試すために取り外しましたが、今度は として表示されますwlan2
。
私は Unix/Linux について十分な知識を持っているので、これがどこかで設定されていることは知っています。未使用の設定ファイルを削除すれば、最新の Edimax にすることができますwlan0
。しかし、どのように/どこで?
答え1
ウデブは、Linux 上のデバイスの名前 (主に 下のファイル名です/dev
が、ネットワーク インターフェイスの名前も含む) を決定するシステム コンポーネントです。
udev のバージョン 099 から 196 には、ネットワーク インターフェイスの名前を記録し、同じデバイスには常に同じ番号を使用するというルールが付属しています。これらのルールは、udev 174 以降ではデフォルトで無効になっていますが、ディストリビューションによっては有効になっている場合があります (たとえば、Ubuntu では有効になっています)。一部のディストリビューションでは、異なるルール セットが提供されています。
将来の使用に備えてインターフェース名を記録して予約するスクリプトは です
/lib/udev/rules.d/75-persistent-net-generator.rules
。 は にルールを書き込みます 。 したがって、から/etc/udev/rules.d/70-persistent-net.rules
既存のエントリwlan0
とエントリを削除し、に変更します。(またはデバイスに一致するパラメータ)を実行して、すでに接続されているデバイスにルールを再適用します。wlan1
/etc/udev/rules.d/70-persistent-net.rules
wlan2
wlan0
udevadm --trigger --attr-match=vendor='Edimax'
--attr-match
答え2
systemd
この問題は、ネットワーク デバイスの永続的な命名が導入されたバージョン 197で解決されました。
フリーデスクトップによると予測可能なネットワークインターフェース名ページでは、カーネルは関連するドライバーによってプローブされた順序に基づいて名前を割り当てました。
カーネルによって適用されるネットワーク インターフェイスの従来の命名方式は、ドライバーによってプローブされるすべてのインターフェイスに、単に「eth0」、「eth1」などで始まる名前を割り当てるというものです。ドライバーのプローブは、一般的に最新のテクノロジでは予測できないため、複数のネットワーク インターフェイスが利用可能になると、「eth0」、「eth1」などの名前の割り当ては一般的に固定されなくなり、1 回の起動で「eth0」だったものが、次の起動では「eth1」になる可能性が高くなります。
ディストリビューションが systemd を使用している場合は、 のように予測どおりに割り当てられるが扱いにくい名前を使用するか、のように、MAC アドレスに基づいてより使いやすい名前を付けるルールwlp0s11
を作成することができます...udev
wifi1
/etc/udev/rules.d/
と呼ばれるファイルをインクルードします10-network-device.rules
:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"