この記事はネットワーク設定を変更します。 SSH接続中に設定を反映すると接続が切れる可能性があります。本番環境では、コンソール接続・バックアップ・復旧手順を確保してから実施してください。
はじめに
RHEL10でDHCPから固定IPアドレスへ切り替えるときは、NetworkManagerが管理するconnectionプロファイルをnmcliで変更します。
この記事ではIPv4アドレス、default gateway、DNSを保存し、connectionを再起動して反映するまでを扱います。
検証環境と実機確認結果
| 項目 | RHEL 10.1検証結果 |
|---|---|
| connection名 / interface名 | enp0s3 |
| 変更前 | DHCP(ipv4.method: auto) |
| 固定IP | 172.16.82.99/18 |
| gateway | 172.16.64.1 |
| DNS | 61.122.127.122、61.122.116.174 |
| 確認結果 | 新規SSH接続、再起動後の設定維持、gatewayへの10回ping成功を確認 |
固定IPを決める前の注意
DHCPで使っているIPを固定化する場合でも、そのIPがDHCP予約済み、またはDHCP配布範囲外であることを確認してください。
RHEL10ではNetworkManagerとnmcliで設定する
RHEL9からRHEL10への変更を理解するには、「NetworkManagerの設定ファイル形式」と「旧network-scriptsパッケージ」を分けて考えることが大切です。
RHEL9.0では、新しく作成する接続プロファイルの標準保存形式がkeyfile形式(.nmconnection)になりました。標準の保存先は /etc/NetworkManager/system-connections/ です。単に推奨されたというだけでなく、新規設定のデフォルトが変更されています。
RHEL9では、ifcfg形式も引き続き利用できます。「非推奨」は「利用できない」という意味ではなく、NetworkManagerはifcfg形式の接続プロファイルを読み込み、設定変更にも対応しています。ただし、新しく接続プロファイルを作成したときの標準保存形式はkeyfile形式(.nmconnection)です。
RHEL10では、NetworkManagerのifcfg形式のサポートが削除されています。そのため、標準のRHEL10環境では /etc/sysconfig/network-scripts/ifcfg-* を作成・編集しても、NetworkManagerの接続プロファイルとして読み込まれず、ネットワーク設定には反映されません。keyfile形式(.nmconnection)の接続プロファイルを利用してください。
keyfile形式は、[connection]、[ipv4]、[ipv6]などのセクションに設定を記述するINI形式に似たファイルです。この記事ではファイルを直接編集せず、nmcliで接続プロファイルを変更します。
なお、network-scriptsパッケージはRHEL9ですでに削除されています。RHEL9でifcfg形式が利用できたのはNetworkManagerが処理していたためであり、旧networkサービスが残っていたという意味ではありません。
| バージョン | 新規設定の標準形式 | ifcfg形式の扱い |
|---|---|---|
| RHEL9 | keyfile(.nmconnection) | 非推奨。既存プロファイルの読み込み・更新に対応 |
| RHEL10 | keyfile(.nmconnection) | サポート削除 |
出典:RHEL9の非推奨機能、RHEL10のネットワーク関連変更。
1. 変更前のIPアドレスとconnection名を確認する
まず現在のIPアドレス、経路、対象connection名を確認し、作業前の値を控えます。
現在のIPアドレスと経路を確認する
ip -brief address
ip route
interfaceのIPアドレスと、default viaに表示されるgatewayを控えます。
connection名を確認する
nmcli connection show
NAME列で設定対象のconnection名を確認します。
保存設定と稼働中の値を確認する
nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show enp0s3
nmcli -f IP4.ADDRESS,IP4.GATEWAY,IP4.DNS connection show enp0s3
enp0s3は例です。connection名が異なる場合は、nmcli connection showのNAME列に表示された値を使ってください。
ip -brief address: interface名と現在のIPアドレスip route:default viaのgatewayと利用interfaceipv4.*: connectionプロファイルへ保存されている設定IP4.*: 現在稼働しているconnectionの値

2. SSH接続中なら復旧経路を確保する
IPアドレス、gateway、DNS、または対象connection名を誤ると、SSHで再接続できなくなる可能性があります。反映操作の前に、少なくとも次を確認してください。
現在のSSH接続元を確認する
who
echo "$SSH_CLIENT"
echo "$SSH_CLIENT"の先頭の値がSSH接続元IPです。現在の接続元を控えてください。
コンソールと復旧手段を確認する
| 確認項目 | 確認内容 |
|---|---|
| コンソール接続 | 仮想マシンまたはクラウドのコンソールを実際に操作できる |
| 復旧手段 | スナップショット、バックアップ、またはロールバック手順がある |
| connection名 | nmcli connection showのNAMEを確認済み |
| IP重複 | 固定IPがDHCP予約済みまたは配布範囲外 |
| 現在のSSH接続元 | echo "$SSH_CLIENT"で記録済み |
重要 次の反映操作は、SSHではなくコンソールから実行することを推奨します。現在のSSH接続が残っても、新規SSH接続できるとは限りません。
3. nmcliで固定IP、gateway、DNSを保存して反映する
以下は検証環境で実行した例です。自分の環境に合わせてconnection名とネットワーク値を置き換えてください。
固定IP、gateway、DNSを保存する
nmcli connection modify enp0s3 \
ipv4.method manual \
ipv4.addresses 172.16.82.99/18 \
ipv4.gateway 172.16.64.1 \
ipv4.dns "61.122.127.122 61.122.116.174"
保存した設定値を確認する
保存後、設定値が正しいことを確認します。
nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show enp0s3

保存したIPv4設定を反映する
対象connectionの通信が一度切れるため、以下はコンソールから実行してください。
nmcli connection down enp0s3
nmcli connection up enp0s3
画像では、downによる非アクティブ化と、upによるアクティブ化の成功を確認しています。

4. IPv6を使わない場合は無効化して反映する(任意)
IPv6を利用しない場合にだけ実施する補足手順です。IPv6を利用する通信への影響と復旧経路を確認し、コンソールから操作してください。
変更前のアドレスを確認する
ip address show dev enp0s3
今回の補足画像では、変更前にenp0s3のinet6 fe80::...が表示されています。
IPv6を無効化してconnectionを再起動する
nmcli connection modify enp0s3 ipv6.method disabled
nmcli connection down enp0s3
nmcli connection up enp0s3
保存だけでは稼働中の設定に反映されないため、IPv6の設定変更後にもconnectionを再起動します。通信が一度切れる点に注意してください。
反映結果を確認する
nmcli -f ipv6.method connection show enp0s3
ip address show dev enp0s3
cat /proc/sys/net/ipv6/conf/enp0s3/disable_ipv6
ip a
画像では、次の結果を確認しています。
ipv6.methodはdisabledenp0s3の表示からinet6行がなくなっているdisable_ipv6の値は1
この補足画像のIPv4にはdynamicと表示されています。IPv6無効化の操作と結果を示す別の確認画像であり、IPv4固定IPの反映結果は3章と5章の画像で確認してください。

5. 固定IP設定後に確認する
反映後は、active connection、IP、経路、保存設定、稼働中の値を確認します。
connectionの接続状態を確認する
nmcli connection show --active
nmcli device status
対象connectionが有効で、対象deviceが接続済みになっていることを確認します。
IPアドレスと経路を確認する
ip -brief address
ip route
設定したIPアドレスとgatewayが表示されているか確認します。
保存設定と稼働中の値を照合する
nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show enp0s3
nmcli -f IP4.ADDRESS,IP4.GATEWAY,IP4.DNS connection show enp0s3
ipv4.methodがmanualで、保存したIP、gateway、DNSと稼働中の値が一致しているか確認します。
gatewayへの疎通を確認する
ping -c 10 -W 2 172.16.64.1
以下の画像は3回ping時の結果です。追加検証では上記の10回pingも実行しました。
検証環境では、172.16.82.99/18、proto staticのdefault route、gatewayへの10回ping成功を確認しました。

6. 新規SSH接続と再起動後も確認する
現在のSSH接続だけで判断せず、新規接続と再起動後の設定を確認します。
別ウィンドウから新規SSH接続する
現在のSSH接続が維持されていても、設定後に新規接続できるとは限りません。現在のTeraTermを閉じずに、別ウィンドウから固定IPへ新規SSH接続してください。
コンソール復旧経路を確保して再起動する
再起動後も固定IP設定を使う場合は、コンソール復旧経路を確保したうえで再起動し、同じ確認コマンドを実行します。
systemctl reboot
再起動後の設定と通信を確認する
再接続後に5章の確認コマンドを実行し、設定値と通信状態を確認してください。
RHEL 10.1検証環境では、再起動後もipv4.method: manual、固定IP、gateway、DNS、proto staticのdefault routeが維持され、新規SSH接続とgateway疎通を確認しました。
OS、NetworkManager、仮想ネットワーク、DHCP設定が異なる環境で同じ結果になるとは断定できません。
よくある質問
DHCPで使っていたIPを、そのまま固定IPにできますか?
DHCP予約済み、またはDHCP配布範囲外であることを確認できる場合は選択肢になります。確認せずに固定化するとIP重複の可能性があります。
nmcli connection downをSSHで実行してもよいですか?
対象connectionの通信が切れるため、SSH接続も切断される可能性があります。コンソール接続または別の復旧経路を確保してから実行してください。
ipv4.*とIP4.*は何が違いますか?
ipv4.*はconnectionプロファイルの保存設定、IP4.*は稼働中connectionの値を確認する観点です。
DHCP設定では保存設定が--でも、IP4.*に実際に取得した値が表示される場合があります。
関連情報
固定IP設定後にfirewalldを有効化する場合は、SSH接続が切れないように事前確認が必要です。
firewalldの起動前確認と安全な初期設定を参照してください。
特定IPアドレスだけをfirewalldで拒否する方法は、firewalldで特定IPアドレスを拒否する方法で画像付きで解説しています。
まとめ
- RHEL10ではNetworkManagerのconnectionプロファイルを
nmcliで変更する - 反映前にIP、gateway、DNS、connection名、復旧経路を確認する
down/upでは通信が切れるため、SSHだけに依存しない- 反映後は新規SSH接続、経路、DNS、gateway疎通を確認する
- 今回の実機結果はRHEL 10.1検証環境のものであり、他環境では事前検証する

コメント