Hatena::ブログ(Diary)

めもめも

2014-07-28

RHEL7のNICのネーミングルール


参考資料

Predictable Network Interface Names


何の話かというと

RHEL7では、NICのネーミングルールが変わっています。RHEL6では、DELL製のハードウェアの場合だけネーミングルールが変わるという謎のudevルール(biosdevname)がありましたが、RHEL7では、さらにまた仕組みが変わって、systemdがNICのネーミングを行うようになりました。


まとめると次のようになります。

バージョンハードウェアネーミングルール
RHEL5すべて古典的な「eth0」「eth1」など
RHEL6一般のマシン古典的な「eth0」「eth1」など
RHEL6DELL製のハードウェアbiosdevnameによる「em1」「em2」「p1p1」など
RHEL7一般のマシンPredictable Network Interface Names
RHEL7DELL製のハードウェアbiosdevnameによる「em1」「em2」「p1p1」など

※もともと、biosdevnameはDELL社が開発したもので、DELL製のハードウェアが特別扱いになっているのは、DELL社からのリクエストによるものです。biosdevnameの詳細については、下記の資料を参考にしてください。


RHEL 6 SP1が、デル製システム上でネットワークデバイスの進化した命名規則を実現

Consistent Network Device Naming in Linux [PDF]


Predictable Network Interface Namesの命名ルール

RHEL7からの新しい命名ルールは、「Predictable Network Interface Names」と呼ばれます。詳細は、冒頭の参考資料に詳しく書かれていますが、ざっくりまとめると次のようになります。


まず、頭の2文字からNICの種類が分かります。

種類頭の2文字
イーサネットen
ワイヤレスwl

次に、Firmware/BIOSNICの(固定的な)論理番号を提供する場合は、その番号に基づいて「eno1」「ens1」などとなります。この時の3文字目は、オンボードPCI Expressかを表します。

種類3文字目
オンボードo
PCI Expresss

Firmware/BIOSNICの(固定的な)論理番号を提供していない場合は、PCI(もしくはUSB)の物理的なロケーション(バスとスロットの番号)に基づいて、「enp1s1」などとなります。3文字目以降が「p<Bus>s<Slot>」というルールです。


ロケーション情報が取得できない場合は、古典的な「eth0」などが割り当てられます。


より詳細なルールについては、ソースコードを参照下さい。


仮想マシンクローンした時の処理

Linux KVM仮想マシンでは、NICデバイス名は古典的な「eth0」になります。RHEL6では、仮想マシンクローンするなどして、NICMACアドレスが変わった場合、デバイス名が変わるので、「/etc/udev/rules.d/70-persistent-net.rules」を修正する必要がありました。RHEL7の場合は、デバイス名とMACアドレスの紐づけは無くなっているため、MACアドレスが変わってもNICデバイス名は変更されません。


ただし、RHEL7では、IPアドレスの設定は、NetworkManagerで行われており、設定ファイル「/etc/sysconifg/network-scripts/ifcfg-eth0」の中に、MACアドレスを表すHWADDRのエントリーが記載されています。したがって、HWADDRを新しいMACアドレスに修正する必要があります。(HWADDRのエントリーを削除してもうまくいくようですが、NetworkManagerでは、nmcliコマンドによる管理が推奨されるので、設定ファイル内のエントリーは不用意に削除しないほうがよいかも知れません。)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/enakai00/20140728/1406504163
おとなり日記