Red Hat Certified System Administrator (RHCSA) #10 基本ネットワーキング: NetworkManager (nmcli)、hostname、/etc/hosts

読了 8分

#9 システム運用 で chronyd で時刻を合わせ、journald と cron でログと作業を管理したなら、今回はシステムを外部とつなぐ ネットワーキング を扱います。RHEL 9 でネットワーク設定の出発点であり終着点でもあるのが NetworkManager で、試験で手で扱うツールはそのコマンドラインクライアントである nmcli です。

RHCSA でのネットワーキング作業の核心は単純です。静的 IP を設定し、その設定が再起動後も生きているようにする ことです。インターネットのない試験環境では IP を 1 文字でも打ち間違えると検証すら止まるので、今回の記事は nmcli で接続を作り直す流れをしっかり手に覚えさせます。

NetworkManager とは何か #

RHEL 9 のネットワークは NetworkManager というデーモンが管理します。昔は手で直していた /etc/sysconfig/network-scripts/ifcfg-* 方式はなくなり、今やすべての設定を NetworkManager が保管し適用します。試験でネットワークを変えるということは、すなわち NetworkManager に変更を指示することです。

NetworkManager を理解するには 2 つの概念を区別する必要があります。

概念意味
device (装置)eth0ens160 のような実 (または仮想) のネットワークインターフェース
connection (接続)1 つの device に適用する設定のまとまり (IP・ゲートウェイ・DNS など)

device はハードウェアに近く、connection はその device にかぶせる 設定プロファイル です。1 つの device に複数の connection を作っておき、状況に応じて差し替えることもできます。試験で「静的 IP に設定せよ」という作業は、結局 その device に適用された connection を修正する ことです。

まず NetworkManager 自体が起動しているかから確認します。

systemctl status NetworkManager
systemctl is-enabled NetworkManager

デーモンが起動していないと nmcli コマンドが動作しないので、作業前に稼働状態を確認する習慣をつけます。

nmcli で現在の状態を見る #

nmcli は NetworkManager のコマンドラインクライアントです。試験では GUI やテキストメニュー (nmtui) も使えますが、速く正確に 処理するには nmcli を手に覚えさせるほうが安全です。

まず最初に device の状態を見ます。

nmcli device status

出力の STATE 列で connecteddisconnected か、そしてどの connection が適用されているかを確認します。

connection の一覧は次で見ます。

nmcli connection show

NAME (接続名)、UUID、TYPE、DEVICE の 4 列が出ます。ここでの NAME が作業対象の名前です。特定の connection の詳細設定をすべて見るには名前を後ろに付けます。

nmcli connection show "System ens160"

このコマンドはその connection のすべての属性を ipv4.methodipv4.addressesipv4.gatewayipv4.dns のようにキーと値で並べます。静的 IP を設定するとき、このキー名をそのまま modify に使います。

静的 IP の永続設定: RHCSA の核心 #

今回の記事で最も重要な作業です。試験では「このシステムに静的 IP 192.0.2.10/24 を設定し、ゲートウェイは 192.0.2.1、DNS は 192.0.2.53 にせよ」のような問題がよく出ます。nmcli で処理する流れは次のとおりです。

既存の connection を修正する方法 #

すでに適用された connection があるなら、新しく作る必要なく modify で直すほうがすっきりします。接続名が System ens160 だと仮定します。

nmcli connection modify "System ens160" \
  ipv4.addresses 192.0.2.10/24 \
  ipv4.gateway 192.0.2.1 \
  ipv4.dns 192.0.2.53 \
  ipv4.method manual

各キーの意味は次のとおりです。

キー意味
ipv4.addresses割り当てる IP アドレスとプリフィックス (/24 はネットマスク 255.255.255.0)
ipv4.gatewayデフォルトゲートウェイ
ipv4.dnsDNS サーバーアドレス
ipv4.methodmanual (静的) または auto (DHCP)

ここで決定的に重要なキーが ipv4.method manual です。addresses だけ入れて method を auto のままにしておくと、DHCP が受け取ったアドレスが一緒に付いて意図と違ってしまいます。静的 IP なら必ず method を manual に 変えなければなりません。

変更を適用する #

modify は設定ファイルに記録するだけで、すぐにインターフェースへ反映はしません。変更を適用するには connection をもう一度上げる必要があります。

nmcli connection up "System ens160"

up は connection を有効化し、down は無効化します。

nmcli connection down "System ens160"
nmcli connection up "System ens160"

modify で保存した設定は NetworkManager がディスクに記録するので、再起動後もそのまま維持されます。この点が RHCSA で核心です。手で ip addr add だけした設定は再起動すると消えますが、nmcli connection で保存した設定は永続的です。

新しい connection を作る方法 #

既存の connection に触れず新しく作る方法も知っておくとよいです。connection add を使います。

nmcli connection add \
  type ethernet \
  con-name static-ens160 \
  ifname ens160 \
  ipv4.addresses 192.0.2.10/24 \
  ipv4.gateway 192.0.2.1 \
  ipv4.dns 192.0.2.53 \
  ipv4.method manual
キー意味
type接続の種類 (ethernet が一般の有線)
con-name新しく作る connection の名前
ifname接続を結びつける device 名

add で作った connection もディスクに保存され再起動後も維持されます。作ってから nmcli connection up static-ens160 で有効化すると適用されます。

DNS を複数入れる、または追加する #

DNS サーバーを 2 つ以上指定するにはカンマで並べます。

nmcli connection modify "System ens160" ipv4.dns "192.0.2.53,192.0.2.54"

既存の値に追加だけしたいならキーの前に + を、一部だけ抜きたいなら - を付けます。

nmcli connection modify "System ens160" +ipv4.dns 8.8.8.8
nmcli connection modify "System ens160" -ipv4.dns 8.8.8.8

DHCP に戻す #

逆に静的設定を DHCP に戻す作業が出ることもあります。method を auto に変え、残っている静的な値を空にします。

nmcli connection modify "System ens160" ipv4.method auto
nmcli connection modify "System ens160" ipv4.addresses "" ipv4.gateway ""
nmcli connection up "System ens160"

method だけ auto に変えて addresses をそのままにすると静的アドレスが DHCP アドレスと一緒に付くので、戻すときは値を空にすることまで忘れないようにします。

hostname の設定 #

ホスト名は hostnamectl コマンドで扱います。現在のホスト名とシステム情報を見るには引数なしで実行します。

hostnamectl

ホスト名を変えるには set-hostname を使います。

hostnamectl set-hostname server1.example.com

このコマンドはホスト名を /etc/hostname ファイルに記録するので、再起動後も維持されます。適用結果は hostname コマンドや hostnamectl でもう一度確認できます。

hostname

ホスト名を変えた後、現在のシェルのプロンプトには古い名前が残って見えることがありますが、新しいシェルを開くか再ログインすると更新されます。試験ではファイルに正しく記録されたかが採点対象なので、プロンプト表示より hostnamectl の出力で検証します。

/etc/hosts で名前を解決する #

DNS サーバーなしで特定のホスト名を IP に解決させるには、/etc/hosts ファイルに直接エントリを書きます。形式は IP アドレス、その次にホスト名 です。

192.0.2.10   server1.example.com server1
192.0.2.20   server2.example.com server2

1 行に IP を 1 つと、その IP が指す名前を空白で並べます。最初の名前を正規名 (FQDN) にし、後ろに短い別名を付ける慣例に従うとすっきりします。

/etc/hosts はシステムが名前を解決するとき普通 DNS より先に参照するので、試験で「server2 を 192.0.2.20 に解決させよ」のような問題はこのファイルに 1 行追加することで解決します。追加したエントリは getent hosts server2 で検証できます。

getent hosts server2.example.com

このコマンドはシステムの名前解決経路 (/etc/hosts と DNS の両方) を通して結果を見せるので、設定が実際に効くかを確認するのに適しています。

ip コマンドで結果を確認する #

nmcli で設定を終えたら、実際にカーネルへ反映された状態を ip コマンドで検証します。ip コマンドは 確認用 であり、ここで直接アドレスを足す作業は永続的でない点を覚えておきます。

インターフェースに付いたアドレスを見ます。

ip addr show ens160

出力に inet 192.0.2.10/24 が見えれば IP が正しく適用されています。

ルーティングテーブル、特にデフォルトゲートウェイを見ます。

ip route

default via 192.0.2.1 dev ens160 のように default 経路が意図したゲートウェイを指しているか確認します。

DNS 設定と全体的な connection の状態は、もう一度 nmcli で確認するほうが正確です。

nmcli connection show "System ens160" | grep ipv4

ip コマンドで見えるアドレスとゲートウェイ、nmcli で見える DNS と method がすべて意図と合えば作業は終わりです。実際の通信は ping -c 3 192.0.2.1 で素早く確認します。

よく詰まる箇所は次のとおりです。

  • ipv4.method を manual に変えない。 addresses だけ入れて DHCP アドレスが一緒に付く
  • modify 後に up をしない。 設定は保存されたがインターフェースに反映されない
  • プリフィックスの欠落。 192.0.2.10 のように /24 を抜かすと適用に失敗する
  • connection 名のタイプミス。 引用符の中の名前が connection show の NAME と正確に同じでなければならない

試験ポイント #

今回の記事で RHCSA の採点に直結する部分を整理します。

  • 静的 IP は nmcli connection で永続設定。 ipv4.addressesipv4.gatewayipv4.dnsipv4.method manual を modify や add で指定する
  • ipv4.method manual を必ず指定。 静的 IP なのに method が auto だと意図と違ってしまう
  • modify の後には connection up 保存と適用は別物
  • ip addrip route は確認用。 直接追加したアドレスは再起動後に消える
  • ホスト名は hostnamectl set-hostname /etc/hostname に記録されて永続維持される
  • 名前解決は /etc/hosts に 1 行追加。 getent hosts で検証する

まとめ #

今回の記事で押さえたこと:

  • NetworkManager が RHEL 9 のネットワークを管理。 device (装置) と connection (設定プロファイル) を区別する
  • nmcli コマンド。 device status で装置を、connection show で接続を見て、connection modifyadd で設定し updown で適用する
  • 静的 IP の永続設定。 addresses・gateway・dns に method manual を足して保存すれば再起動後も維持される
  • hostname。 hostnamectl set-hostname で永続的に変更する
  • /etc/hosts IP とホスト名を 1 行で書いて DNS なしで名前を解決する
  • 検証。 ip addrip route で適用を確認し ping で通信を点検する

次へ: ユーザー/グループ #

ネットワークでシステムを外部とつないだら、今度はそのシステムを誰がどんな権限で使うのかを扱います。

#11 ユーザー/グループ: UID/GID、sudo、ACL、パスワードポリシー では、ユーザーとグループを作り UID・GID を指定する方法、sudo で権限を委譲する方法、ACL でファイルごとの細かいアクセス権を与える方法、そしてパスワード有効期限ポリシーを設定する方法まで、直接打ち込みながら整理します。

X