NetworkManager で固定IP設定にハマったので原因と直し方をまとめてみた

未分類

ESXi 上の Rocky Linux 9 サーバーで、NetworkManager を用いて IPv4 の固定IPアドレスを設定した際に発生したトラブルと、その原因・対処法についてまとめます。
本記事は 自分用の備忘録 として、同様の環境で作業する方にも参考になるように詳細を整理したものです。


1. 環境

  • OS:Rocky Linux 9
  • 環境:ESXi 上の仮想マシン
  • 設定対象インターフェースens0p3(名称は記憶ベース)
  • 設定ツール:NetworkManager
  • 設定方法.nmconnection ファイルの直接編集(nmcli/nmtui は使用せず)

固定IPを設定しようとして .nmconnection ファイルを直接編集したところ、設定が反映されず、プロファイルが NIC に紐付かない問題が発生しました。


2. どんな問題が起きたか

主な症状は次の通りです。

  • .nmconnection に記述した IP、ゲートウェイ、DNS が反映されない
  • NIC(例:ens0p3)と設定した connection profile が紐付かない
  • IPv4 設定が空のまま(DHCPでもmanualでもない)
  • 再起動しても状態変わらず

原因を調査した結果、次の点が判明しました。


3. 原因:IPv6設定を単にコメントアウトしても無効化されない

.nmconnection の設定ファイル内では、

[ipv6]
method=auto

をコメントアウトしただけでは IPv6 が無効化されません

その結果、NetworkManager が デフォルトの ipv6.method=auto を補完 し、
「IPv6 が中途半端に有効化された profile」
が生成されてしまいました。

これが原因で connection profile の読み込みが正常に行われず、IPv4 の設定も反映されなくなっていました。

NetworkManager の仕様として、

  • コメントアウト = 設定なし
  • 設定なしの場合、デフォルト値を補完
    という動作になります。

4. 失敗した設定例(再現用)

※値はサンプルにしています。

[connection]
id=static-ens0p3
interface-name=ens0p3
type=ethernet

[ipv4]

address1=192.168.1.50/24,192.168.1.1 #[ipv6] #method=auto

一見 IPv6 が無効化されているように見えますが、実際は NetworkManager がデフォルト値を補完して以下と同じ状態になります:

ipv6.method=auto

5. 正しい設定例(成功パターン)

[connection]
id=static-ens0p3
interface-name=ens0p3
type=ethernet
autoconnect=true

[ipv4]

method=manual address1=192.168.1.50/24,192.168.1.1 dns=8.8.8.8;1.1.1.1;

[ipv6]

method=disabled

ポイント

  • ipv4.method=manual を明示すること
    • 指定しない場合、NetworkManager が DHCP に戻してしまう
  • ipv6.method=disabled を必ず設定する
    • コメントアウトでは無効化されない
  • interface-name= を明記して NIC と profile を確実に紐付ける

6. 設定反映の手順

.nmconnection を編集したあと、以下のいずれかが必要です。

(1) 設定の再読み込み

nmcli connection reload

(2) profile の再有効化

nmcli con down static-ens0p3
nmcli con up static-ens0p3

(3) NetworkManager 再起動(必要な場合)

systemctl restart NetworkManager

7. 確認に使える nmcli コマンド一覧

現在のデバイス状態

nmcli device show ens0p3

connection profile 一覧

nmcli connection show

profile の詳細内容

nmcli connection show static-ens0p3

IPv4/IPv6 の method を確認

nmcli -f ipv4.method,ipv6.method connection show static-ens0p3

実際のIPアドレス確認

ip a show ens0p3

8. トラブルシューティングチェックリスト

チェック項目詳細
ipv4.method=manual を指定しているかDHCPに戻される最も多い原因
ipv6.method=disabled を明記しているかコメントアウトでは無効化されない
interface-name= が NIC と一致しているか命名が違うと profile が紐付かない
nmcli connection reload を実行したか反映漏れ防止
ESXi の仮想NICが変更されていないかNIC再生成で名前が変わるケースあり

9. まとめ(再発防止メモ)

今回ハマったポイントは次の 2 点でした:

  1. IPv6 をコメントアウトしても無効化されない
    method=disabled を明示する必要がある
  2. NetworkManager は設定がない項目をデフォルト値で補完する
    → 思わぬ形で profile が壊れる原因になる

NetworkManager の設定ファイルは表面上シンプルですが、
「コメントアウト = 完全に無効化」にはならない点が落とし穴でした。

同じように .nmconnection を編集する作業を行う方の参考になれば幸いです。


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