サーバーにおける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(デバイス): 物理的なネットワークカード(例:
ens33やeth0)のことです。通常の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 を通を通じて行うようにしましょう。

