CentOS Stream 9:network-scriptsとの別れ、nmcliを使った「正しい」固定IP設定方法

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

サーバーにおけるDHCPの悪夢

こんなシナリオを想像してみてください。午前3時、システムダウンの通知が届き、Webサーバーが突然データベースを見失いました。冷や汗をかきながら15分間ログを確認した結果、データベースが再起動し、ルーターのDHCPによって全く新しいIPアドレスが割り当てられていたことが判明しました。これは初心者が陥りやすいミスですが、非常に致命的です。MySQLやNginx、Proxyなどを動かすサーバーでは、まずIPアドレスを固定することが鉄則です。

CentOS 7の時代、私たちはよく /etc/sysconfig/network-scripts/ に直接入り、ifcfg-eth0 ファイルを編集していました。しかし、CentOS Stream 9やRHEL 9では、その伝説的なディレクトリはもはや中身のない抜け殻です。Red Hatは旧来の管理方法を正式に廃止し、keyfile/etc/NetworkManager/system-connections/ に保存)による管理に移行しました。

古いファイル編集方法に固執していると、システムアップデート時にトラブルに見舞われることになります。以下に、nmcli を使用してネットワークを正しく管理するための標準的な手順を説明します。

Device(デバイス)とConnection(接続)を正しく理解する

これらの概念を区別できないと、コマンドを打ち間違えて自分自身のネットワークを「切断」してしまうことになりかねません。

  • Device(デバイス): 物理的なネットワークカード(例:ens33eth0)のことです。通常のIP設定コマンドで名前を変更することはできません。
  • Connection(接続): 設定プロファイル(普段使うWi-Fi名のようなもの)のことです。1つのネットワークカードに2〜3つの異なるプロファイルを持たせることはできますが、同時にアクティブにできるのは1つだけです。

nmcli の考え方は非常に明快です。設計図(Connection)を作成し、それをフレーム(Device)に適用します。このアプローチは、複雑なネットワークレイヤーを管理する必要がある場合に非常に論理的です。

実践:ミスを防ぐための固定IP設定3ステップ

ステップ1:「対象」の特定

コマンドを入力する前に、サーバーが認識しているネットワークカード名を確認しましょう。

nmcli device status

結果には connected 状態が表示されます。例えば、私の環境では enp0s3 です。次に、既存のプロファイルを確認します。

nmcli connection show

通常、システムはネットワークカードと同じ名前のプロファイルを自動的に作成しています。時間を節約するために、このプロファイルを直接上書きします。

ステップ2:設定コマンドの実行

サーバーのIPを 192.168.1.100、ゲートウェイを 192.168.1.1 に設定すると仮定します。5〜6個のコマンドをバラバラに打つ代わりに、次のように1回でまとめて実行しましょう。

nmcli con mod enp0s3 \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 1.1.1.1" \
ipv4.method manual

重要な注意点:

  • /24 はサブネットマスク 255.255.255.0 を意味します。これを忘れると nmcli は即座にエラーを出します。
  • ipv4.method manual が肝心です。これは NetworkManager に対し、ルーターからIPを取得するのをやめ、手動設定モードに切り替えるよう指示するものです。

ステップ3:変更を適用するためのアクティブ化

注意が必要なのは、ステップ2を終えただけではIPはまだ変更されていないということです。新しい設定をロードするために「キックスタート」を行う必要があります。

nmcli con up enp0s3

警告: 旧IPでサーバーにSSH接続している場合、この瞬間に接続が切断されます。慌てずに、新しいIP 192.168.1.100 で再度ログインしてください。

ヒント:長いコマンドが苦手な場合は nmtui を使おう

もしパラメータを忘れてしまったら、nmtui と入力してください。ターミナル内にシンプルなグラフィカルインターフェースが表示されます。矢印キーとTabキーを使って、Windowsのように数値を入力するだけです。寒いサーバー室でコンソール画面から直接操作しなければならない時など、非常に重宝します。

結果の確認

エンジニアたるもの、結果で語りましょう。ip addr コマンドを使用して確認します。

ip addr show enp0s3

inet 192.168.1.100/24 という行が表示されれば、90%完了です。最後に、ping google.com -c 4 を試して、サーバーが外部ネットワークから「孤立」していないか確認しましょう。

おわりに

ファイルの直接編集から nmcli の利用に切り替えるのは、最初は少し戸惑うかもしれませんが、サーバー管理をよりプロフェッショナルで安定したものにしてくれます。最後に一つ注意点として、NetworkManager は /etc/resolv.conf ファイルを自動管理します。手動で編集しても再起動後に上書きされてしまうため、DNSの設定も常に nmcli を通を通じて行うようにしましょう。

Share: