RHEL10で固定IPアドレスを設定する方法|nmcliでIPv4・gateway・DNSを変更

RHEL10で固定IPアドレスを設定する方法|nmcliでIPv4・gateway・DNSを変更 Linuxサーバ

この記事はネットワーク設定を変更します。 SSH接続中に設定を反映すると接続が切れる可能性があります。本番環境では、コンソール接続・バックアップ・復旧手順を確保してから実施してください。

スポンサーリンク

はじめに

RHEL10でDHCPから固定IPアドレスへ切り替えるときは、NetworkManagerが管理するconnectionプロファイルをnmcliで変更します。

この記事ではIPv4アドレス、default gateway、DNSを保存し、connectionを再起動して反映するまでを扱います。

検証環境と実機確認結果

項目RHEL 10.1検証結果
connection名 / interface名enp0s3
変更前DHCP(ipv4.method: auto
固定IP172.16.82.99/18
gateway172.16.64.1
DNS61.122.127.12261.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形式の扱い
RHEL9keyfile(.nmconnection)非推奨。既存プロファイルの読み込み・更新に対応
RHEL10keyfile(.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 showNAME列に表示された値を使ってください。

  • ip -brief address: interface名と現在のIPアドレス
  • ip route: default viaのgatewayと利用interface
  • ipv4.*: connectionプロファイルへ保存されている設定
  • IP4.*: 現在稼働しているconnectionの値

2. SSH接続中なら復旧経路を確保する

IPアドレス、gateway、DNS、または対象connection名を誤ると、SSHで再接続できなくなる可能性があります。反映操作の前に、少なくとも次を確認してください。

現在のSSH接続元を確認する

who
echo "$SSH_CLIENT"

echo "$SSH_CLIENT"の先頭の値がSSH接続元IPです。現在の接続元を控えてください。

コンソールと復旧手段を確認する

確認項目確認内容
コンソール接続仮想マシンまたはクラウドのコンソールを実際に操作できる
復旧手段スナップショット、バックアップ、またはロールバック手順がある
connection名nmcli connection showNAMEを確認済み
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

今回の補足画像では、変更前にenp0s3inet6 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.methoddisabled
  • enp0s3の表示から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.methodmanualで、保存したIP、gateway、DNSと稼働中の値が一致しているか確認します。

gatewayへの疎通を確認する

ping -c 10 -W 2 172.16.64.1

以下の画像は3回ping時の結果です。追加検証では上記の10回pingも実行しました。

検証環境では、172.16.82.99/18proto 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検証環境のものであり、他環境では事前検証する

コメント

タイトルとURLをコピーしました