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 名の命名スキームが機能しない場合

Red Hat Enterprise Linux 7 では、非常に特殊な状況を除き、一貫性のある ethX 命名規則を適用することはできません。
udev ルールはインターフェースに特定の名前を設定するので、指定した名前がすでに他のインターフェースで使用されている場合、設定に失敗します。これには、/usr/lib/udev/rules.d/60-net.rules ファイルで提供される機能が含まれます。
起動時にカーネルがすべてのネットワークデバイスを把握する際には、ethX 命名規則が使われます。ethx 名は再起動ごとに変わるので、予測が不可能です。したがって、udev を使用してインターフェース名を ethX 名に変更しようとしたり、カーネルにより与えられる予測が不可能な ethx 名の順序を変えようとした場合には、処理に失敗します。
以下の状況では、ethX 名の使用が正常に機能します。
  • システムにネットワークインターフェースが 1 つしかない。
  • Red Hat Enterprise Linux 7 ゲスト仮想マシンの virtio NIC に使われた場合。『仮想化の導入および管理ガイド』の「KVM 準仮想化 (virtio) ドライバー」および「ネットワーク設定」の章を参照してください。

例8.4 net.ifnames=0 を設定した結果 ethX 名に一貫性がない場合

systemd による予測可能インターフェース命名 (net.ifnames) および biosdevname による命名スキームの両方が無効な場合、ネットワークインターフェースは初めにカーネルにより与えられた予測が不可能で一貫性が維持できない可能性のある ethX 名を使い続けます。
起動時にカーネルがすべてのネットワークデバイスを把握する際には、必ず ethX 命名規則が使われます。並列処理が行われるため、カーネルがすべてのインターフェースを把握する順番は、再起動ごとに変わる可能性があります。Red Hat Enterprise Linux 7 では、systemd による予測可能なインターフェース命名スキームまたは biosdevname による命名スキームのどちらかを使って、カーネルにより与えられた予測が不可能な ethX インターフェースを、再起動後にも一貫性が維持できる予測可能な名前に変更します。
ネットワークアダプターの命名規則の詳細は、Red Hat カスタマーポータルでナレッジセンターサポートの記事「RHEL7 で net.ifnames=0 を設定しても安全ですか?」を参照してください。