はじめに (対象読者・この記事でわかること)

この記事は、Red Hat Enterprise Linux 7(RHEL7)を利用しているシステム管理者やLinux技術者を対象としています。特に、RHEL7で導入された新しいネットワークインターフェースの命名規則(eno1など)に戸惑い、従来のeth0という名前に戻したいと考えている方に向けた内容です。この記事を読むことで、udevルールとNetworkManager設定を利用してNIC名をeno1からeth0に変更する具体的な手順を理解し、実際にシステムに適用できるようになります。また、変更後に発生する可能性のある問題とその解決策についても学べます。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。 - Linuxの基本的なコマンド操作 - RHEL7の基本的なシステム管理知識 - ネットワーク設定の基本的な理解

RHEL7のNIC命名規則と変更の必要性

RHEL7からは、従来のeth0のような固定名ではなく、eno1, eno2のような一意のNIC名が採用されました。この変更は、システム起動時にネットワークインターフェースが一貫して認識されることを目的としています。特に、PCIeスロットの変更やハードウェアの追加・削除があった場合でも、インターフェース名が安定することが期待されています。

しかし、この新しい命名規則にはいくつかの問題があります。まず、既存のスクリプトやドキュメントがeth0名を前提としている場合があり、互換性の問題が発生します。次に、運用上の理由で従来の命名規則を使用したい場合があります。さらに、クラウド環境やコンテナ環境との互換性の観点から、eth0名を維持したいというニーズもあります。

本記事では、この新しい命名規則を従来のeth0に変更する具体的な手順を解説します。変更には、udevルールの設定とネットワーク設定ファイルの編集が必要となります。また、変更後の確認方法と注意点についても触れます。

NIC名をeno1からeth0に変更する具体的な手順

ステップ1: 現在のネットワークインターフェースの確認

まず、現在システムに認識されているネットワークインターフェースを確認します。以下のコマンドを実行します。

ip addr show

または、

ifconfig -a

これにより、現在認識されているインターフェース名(例: eno1)とそのMACアドレスを確認できます。変更対象のインターフェースのMACアドレスをメモしておきましょう。例えば、以下のような出力が得られた場合:

2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::21a:2bff:fe3c:4d5e/64 scope link 
       valid_lft forever preferred_lft forever

この場合、インターフェース名はeno1で、MACアドレスは00:1a:2b:3c:4d:5eです。

ステップ2: udevルールの作成

次に、udevルールを作成して、特定のMACアドレスを持つインターフェースにeth0という名前を割り当てます。以下のコマンドでudevルールファイルを作成します。

vi /etc/udev/rules.d/10-network.rules

ファイルには以下の内容を記述します。XXXの部分には、ステップ1で確認したMACアドレスを記述します。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1a:2b:3c:4d:5e", NAME="eth0"

ファイルを保存して閉じます。このルールは、システム起動時にMACアドレスが00:1a:2b:3c:4d:5eのネットワークインターフェースが検出された場合に、その名前をeth0に変更するという意味です。

ステップ3: ネットワーク設定ファイルの禃集

次に、NetworkManagerの設定ファイルを編集します。RHEL7では、ネットワーク設定はNetworkManagerが管理しています。

vi /etc/sysconfig/network-scripts/ifcfg-eno1

ファイルのNAMEとDEVICEの行を以下のように変更します。

NAME=eth0
DEVICE=eth0

また、UUIDの行はそのままにしておきます。ファイルを保存して閉じます。

ステップ4: 設定ファイルのリネーム

次に、設定ファイル自体の名前を変更します。

mv /etc/sysconfig/network-scripts/ifcfg-eno1 /etc/sysconfig/network-scripts/ifcfg-eth0

これにより、NetworkManagerがeth0という名前のインターフェース設定を正しく認識できるようになります。

ステップ5: ネットワークサービスの再起動

設定を反映させるために、ネットワークサービスを再起動します。

systemctl restart network

または、NetworkManagerを再起動します。

systemctl restart NetworkManager

ステップ6: 変更の確認

変更が反映されたか確認します。

ip addr show

または、

ifconfig

これにより、インターフェース名がeth0になっていることを確認できます。また、ネットワーク接続が正常に機能していることも確認してください。

ステップ7: システム再起動後の確認

最後に、システムを再起動して変更が永続的に適用されるか確認します。

reboot

システム起動後、再度インターフェース名を確認し、eth0になっていることを確認してください。

ハマった点やエラー解決

問題1: 変更後もインターフェース名が変わらない

解決策: udevルールが正しく適用されていない可能性があります。udevルールを再読み込みするために、以下のコマンドを実行します。

udevadm control --reload-rules
udevadm trigger

また、udevルールファイルの構文に誤りがないか確認してください。特にMACアドレスの形式(大文字小文字、コロン区切り)に注意が必要です。

問題2: ネットワークに接続できない

解決策: 設定ファイルの記述に誤りがある可能性があります。設定ファイルの構文を確認し、正しい形式になっているかチェックします。特に、BOOTPROTO、ONBOOT、IPADDR、NETMASK、GATEWAYなどの設定が正しいか確認してください。

また、SELinuxが有効な場合は、ポリシーが変更をブロックしている可能性があります。一時的にSELinuxを無効にして確認する方法もあります。

setenforce 0

確認後、再度有効にします。

setenforce 1

問題3: システム再起動後に設定が反映されない

解決策: ネットワーク設定ファイルが正しく保存されているか確認します。また、NetworkManagerが自動起動するように設定されているか確認します。

systemctl enable NetworkManager
systemctl is-enabled NetworkManager

さらに、udevルールファイルのパーミッションが正しいか確認します。

ls -l /etc/udev/rules.d/10-network.rules

適切なパーミッション(644)でない場合は、以下のコマンドで修正します。

chmod 644 /etc/udev/rules.d/10-network.rules

問題4: 複数のネットワークインターフェースがある場合の名前の衝突

解決策: 複数のネットワークインターフェースがある場合、それぞれに異なる名前を割り当てる必要があります。udevルールファイルに、各インターフェースのMACアドレスに対応するルールを追加してください。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1a:2b:3c:4d:5e", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1a:2b:3c:4d:5f", NAME="eth1"

注意点

  • この変更はシステム全体に影響を与えるため、実施前に必ずバックアップを取得してください。
  • 複数のネットワークインターフェースがある場合、それぞれに適切な名前を割り当てる必要があります。
  • 仮想マシン環境では、ホストOSとゲストOS間のネットワーク設定に影響が出る可能性があります。
  • この変更は、RHEL7以降のバージョンで有効です。RHEL6以前のバージョンでは異なる手順が必要です。
  • クラウド環境でこの変更を行うと、クラウドプロバイダーのネットワーク設定と競合する可能性があります。

まとめ

本記事では、RHEL7でNIC名をeno1からeth0に変更する方法を解説しました。

  • udevルールを使用して特定のインターフェースにeth0という名前を割り当てる方法
  • NetworkManagerの設定ファイルを編集し、ファイル名も変更する手順
  • 変更後の確認方法と、よくある問題の解決策

この記事を通して、読者はRHEL7の新しいNIC命名規制を従来のeth0に変更する具体的な手順を理解し、実際のシステム運用に適用できるようになったことでしょう。特に、既存のスクリプトとの互換性維持や、運用上の観点からeth0名を維持したい場合に役立つ内容となっています。今後は、ネットワーク設定の自動化や、複数インターフェース環境での設定方法についても記事にする予定です。

参考資料