Linux ベースのシステム(NI Linux RT を含む)では、ネットワークインターフェースは、カーネルがハードウェアを検出した順に eth0, eth1, eth2, … と命名されます。複数の USB-LAN アダプタを接続している場合、この検出順は電源投入ごとに保証されません。その結果、以下のような現象が発生します。
- インターフェース名(ethX)が起動ごとに異なるハードウェアに割り当てられる
- 各インターフェースに設定した IP アドレスが「入れ替わった」ように見える
- NI MAX では元の設定が表示されているにもかかわらず、実際のインターフェースとハードウェアの対応関係が変わっている
USB-LAN アダプタが 1 台のみの場合は、列挙の曖昧さがないため、通常この問題は発生しません。
この問題を恒久的に解決するには、MAC アドレスに基づいて安定したインターフェース名を割り当てる udev ルールを設定します。
これにより、起動順に依存せず、各物理 Ethernet アダプタが常に同じインターフェース名で認識されるようになります。
設定ファイル
NI Linux RT ターゲット上で、以下のファイルを編集します(空の場合は作成してください)。
/etc/udev/rules.d/80-net-name-slot.rules
udev ルールの例
各 USB-LAN アダプタを、その MAC アドレスに基づいて一意で安定したインターフェース名にマッピングします。
# MAC アドレスに基づいて安定した名前を割り当てる
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:80:2f:19:0c:79", NAME="ethA"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:80:2f:19:0c:3c", NAME="ethB"
※ MAC アドレスおよびインターフェース名は、使用環境に合わせて置き換えてください。