そんなトラブルに困った経験はないでしょうか。
CentOS7からNICの命名規則が変わり、ネットワークインターフェース名が
enp0s3 や p4p2 のような形式で自動割り当てされるようになりました。一部のソフトウェアやスクリプトは
eth0 を前提にしているため、互換性の問題が起きることがあります。
この記事では、CentOS7のNIC名をCentOS6系の
eth0 形式に変更する手順を解説します。設定変更には再起動が必要になりますので、メンテナンス時間を確保してから作業してください。
・/etc/default/grub に net.ifnames=0 biosdevname=0 を追加することでCentOS7の新NIC命名規則を無効化できる
・grub2-mkconfig -o /boot/grub2/grub.cfg でGRUB設定を再生成して変更を反映する
・/etc/sysconfig/network-scripts/ifcfg-xxxxをifcfg-eth0にリネームして設定を引き継ぐ
・NAME・DEVICE・HWADDRをeth0に統一してから再起動することでCentOS6系との互換性を確保できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜCentOS7でNIC名が変わったのか
CentOS7(RHEL7)から採用された命名規則は「Predictable Network Interface Names(予測可能なネットワーク名)」と呼ばれます。従来の
eth0 形式は、NICの認識順序によって名前が変わる場合があり、複数NICを搭載したサーバーで予期せぬ動作を引き起こすことがありました。
新しい命名規則はPCI接続位置などのハードウェア情報を元に決まるため、
再起動後も名前が変わらないのが特徴です。
ただし、既存スクリプトやソフトウェアとの互換性を保ちたい場合は、
従来の
eth0 形式に戻す設定が必要です。
CentOS7のNIC名をeth0に変更する手順
1. /etc/default/grubを編集してnet.ifnames=0を追加する
カーネルの起動パラメータにnet.ifnames=0 biosdevname=0 を追加します。まず現在の設定を確認します。
# grep GRUB_CMDLINE_LINUX /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_CMDLINE_LINUX の末尾、閉じダブルクォートの直前に net.ifnames=0 biosdevname=0 を追加します。# vi /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
2. GRUBの設定を再生成する
編集した内容をGRUBの設定ファイルに反映させます。# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img done
3. NICの設定ファイルをリネームする
/etc/sysconfig/network-scripts/ 配下の設定ファイルを ifcfg-eth0 にリネームします。現在のNIC名(例:p4p2)は環境によって異なりますので、
ls /etc/sysconfig/network-scripts/ で確認してください。# mv /etc/sysconfig/network-scripts/ifcfg-p4p2 /etc/sysconfig/network-scripts/ifcfg-eth0
4. 現在のMACアドレスを確認する
次の手順で設定ファイルを編集するために、NICのMACアドレスを控えます。# nmcli device show | grep HWADDR GENERAL.ハードウェアアドレス: 58:8A:5A:29:2B:BA
5. NICの設定ファイルを編集する
リネームしたifcfg-eth0 を編集し、NAME・DEVICE・HWADDRを修正します。# vi /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes NAME=eth0 HWADDR=58:8A:5A:29:2B:BA UUID=22f748d6-6718-47ac-bc27-7188a419465f DEVICE=eth0 ONBOOT=yes IPADDR=192.168.0.36 PREFIX=24 GATEWAY=192.168.0.1 DNS1=192.168.0.1
・DEVICE:eth0 に変更します
・HWADDR:手順4で確認したMACアドレスを追記します
6. サーバーを再起動する
# shutdown -r now
7. NIC名がeth0になったか確認する
# nmcli device show | head -5 GENERAL.デバイス: eth0 GENERAL.タイプ: ethernet GENERAL.ハードウェアアドレス: 58:8A:5A:29:2B:BA GENERAL.MTU: 1500 GENERAL.状態: 100 (接続済み)
GENERAL.デバイス が eth0 になっていれば変更成功です。
本記事のまとめ
| 手順 | コマンド/操作 |
|---|---|
| GRUBパラメータ追加 | vi /etc/default/grub → net.ifnames=0 biosdevname=0を追記 |
| GRUB設定を再生成 | grub2-mkconfig -o /boot/grub2/grub.cfg |
| 設定ファイルをリネーム | mv /etc/sysconfig/network-scripts/ifcfg-p4p2 /etc/sysconfig/network-scripts/ifcfg-eth0 |
| MACアドレスの確認 | nmcli device show |
| 設定ファイルの編集 | vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
| サーバー再起動 | shutdown -r now |
ネットワーク設定のトラブル、一人で抱えていませんか?
NIC名の変更に限らず、ネットワーク設定は一つ間違えると接続が切れてリモートから操作できなくなります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:CentOS 7のバージョンアップ手順|yum updateの実行方法と注意点
- 前のページへ:unameコマンドでLinuxのカーネルバージョンを確認する方法|OS情報の確認コマンドも
- この記事の属するカテゴリ:CentOS7・Linuxtips・デバイス管理・ネットワークへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます