8.10. ネットワークデバイス命名におけるトラブルシューティング

「デバイスの名前変更ステップについて」 にあるように、適用可能な場合は、予測可能なインターフェイス名が各インターフェイスに割り当てられます。udev が使用する名前を一覧表示するには、root で以下の形式のコマンドを実行します。
~]# udevadm info /sys/class/net/ifname | grep ID_NET_NAME
ここでの ifname は、以下のコマンドで一覧を表示されるインターフェイスのいずれかになります。
~]$ ls /sys/class/net/
「デバイスの名前変更ステップについて」 にあるルールにしたがって、udev が使用可能な名前のいずれかを適用します。ルールを以下に要約します。
  • /usr/lib/udev/rules.d/60-net.rules - initscript からのもの。
  • /usr/lib/udev/rules.d/71-biosdevname.rules - biosdevname からのもの。
  • /usr/lib/udev/rules.d/80-net-name-slot.rules - systemd からのもの。
上記のルールファイルを見ると、インターフェイス命名が initscript もしくは biosdevname 経由で実行されると、これらは常に udev のネイティブ命名よりも優先されることが分かります。ただし、initscript による名前変更が行われない場合、または biosdevname が無効となっている場合にインターフェイス名を変更するには、80-net-name-slot.rules/usr/ から /etc/ にコピーして、このファイルを適切に編集することになります。つまり、コメントアウトするか使用するスキームを特定の順番に配置します。

例8.1 カーネルネームスペースから命名されているインターフェイス (eth[0,1,2...]) と udev が正常に名前を変更したものが混在している場合

スキームが混在しているのは、ハードウェアのなかにはカーネルが udev に提供する情報で使用可能なものがないため命名できないか、udev に提供された情報が非一意のデバイス ID などのように適切でない場合のことが考えられます。後者の方が可能性が高く、この場合の解決法は、ifcfg ファイルでカスタマイズ命名スキームを使用するか、80-net-name-slot.rules を編集して使用される udev スキームを変更します。

例8.2 /var/log/messages または systemd ジャーナルで、各インターフェイスの名前が 2 回実行されている場合

命名スキームがあるシステムで ifcfg ファイルでエンコードされているものの initrd イメージを再生成していないものは、この問題に直面する可能性があります。インターフェイス名は当初 initrd にある間、初期ブート時に (biosdevnameudev、またはカーネルコマンドライン上の dracut パラメーター経由で) 割り当てられます。そして実際の rootfs に切り替わった後、2 回目の名前変更が行われ、60-net.rules を処理するため、udev が生成する /usr/lib/udev/rename_device バイナリーによって新規インターフェイス名が決定されます。このメッセージは無視しても問題ありません。

例8.3 ifcfg ファイル内の ethX 名の命名スキームが機能しない場合

カーネルネームスペースからのインターフェイス名の使用は推奨されません。予測可能かつ安定性のあるインターフェイス名を付けるには、"eth" 以外の接頭辞を使用してください。