Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

11.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 - from initscripts,
  • /usr/lib/udev/rules.d/71-biosdevname.rules - from biosdevname,
  • /usr/lib/udev/rules.d/80-net-name-slot.rules - from systemd
上記のルールファイルを見ると、インターフェース命名が initscript もしくは biosdevname 経由で実行されると、これらは常に udev のネイティブ命名よりも優先されることが分かります。ただし、initscript による名前変更が行われない場合、または biosdevname が無効となっている場合にインターフェース名を変更するには、80-net-name-slot.rules/usr から /etc にコピーして、このファイルを適切に編集することになります。つまり、特定の順番で使われるようにスキームをコメントアウトまたは配置します。

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

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

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

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

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

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

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

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

例11.5 イーサネットインターフェースの接頭辞の制限

選択する接頭辞は、次の要件を満たす必要があります。
  • ASCII 文字で構成される。
  • 英数字の文字列である。
  • 16 文字より短い。
  • ethenoens、および em など、ネットワークインターフェースの命名に使用される他の周知の接頭辞と競合しない。