nmcli 入門 - NetworkManager をコマンドで操作する

nmcli 入門 - NetworkManager をコマンドで操作する

この記事で解決できること

  • nmcliネットワークの状態を確認 できるようになる
  • Wi-Fi 接続・固定 IP 設定 をコマンドだけで完結できる
  • connection(プロファイル)と device(実機)の 違い が分かり、設定が消えなくなる

結論(実務の型)

  • 状態を見る → nmcli device status / nmcli connection show
  • 設定を変える → nmcli connection modify <名前> <キー> <値>
  • 反映する → nmcli connection up <名前>
  • 変更は プロファイルに永続化 される(再起動しても残る)

前提(対象環境)

  • NetworkManager が稼働する Linux(Ubuntu Desktop / RHEL / CentOS / Fedora / AlmaLinux 等)
  • nmcli は NetworkManager 付属。systemctl status NetworkManager で稼働を確認
  • サーバ用途で systemd-networkdnetplan のみの環境では対象外

nmcli とは何か?

結論: nmcli は NetworkManager をコマンドラインから操作する公式 CLI。GUI なしで接続設定を作成・変更・永続化できる。

nmcli(NetworkManager Command Line Interface)は、多くのディストリビューションで標準のネットワーク管理デーモン NetworkManager を操作するための公式コマンドだ。GUI のネットワーク設定パネルでできることは、ほぼすべて nmcli で実行できる。

nmcli の操作対象は「オブジェクト」で分類される。よく使うのは次の 5 つ。

オブジェクト 短縮 役割
connection c 接続プロファイル(設定の保存単位)
device d 物理 / 仮想ネットワークデバイス
general g NetworkManager 全体の状態
radio r Wi-Fi / WWAN の電波 ON/OFF
networking n ネットワーク機能全体の ON/OFF

オブジェクト名は 先頭が一意なら省略可能nmcli connection shownmcli c s と書ける。本記事では分かりやすさのため省略しない形で記載する。

connection と device は何が違う?

結論: device は実在するネットワーク機器、connection は機器に適用する設定プロファイル。設定の永続化は connection 側に記録される。

ここが nmcli 理解の最大のポイント。

  • device(デバイス): eth0 / enp3s0 / wlan0 のような実際のインターフェース。今この瞬間の状態(接続中か、IP は何か)を表す
  • connection(接続プロファイル): 「このデバイスをこう設定する」という 設定の保存ファイル/etc/NetworkManager/system-connections/ 配下に保存され、再起動しても残る

1 つのデバイスに対し複数のプロファイル(自宅用・社内用など)を用意し、up で切り替える、という使い方ができる。

ip addr add で直接 IP を振っても 再起動で消える。永続化したいなら必ず connection プロファイルを編集すること。これが「設定したのに消えた」事故の典型原因。

ネットワークの状態を確認するには?

結論: 全体は nmcli general status、デバイスは nmcli device status、プロファイルは nmcli connection show で確認する。

まずは現状把握から。引数なしの nmcli は全デバイスの詳細を一覧表示する。

# NetworkManager 全体の状態
nmcli general status

# デバイス一覧(状態・接続中プロファイル)
nmcli device status

# 接続プロファイル一覧
nmcli connection show
DEVICE  TYPE      STATE      CONNECTION
enp3s0  ethernet  connected  Wired connection 1
wlan0   wifi      connected  MyHome-WiFi
lo      loopback  unmanaged  --

特定の接続やデバイスの詳細を見るには名前を付ける。

# プロファイルの全設定を表示
nmcli connection show "Wired connection 1"

# デバイスの詳細(IP・DNS・ルートなど)
nmcli device show enp3s0

-f で表示フィールドを絞れる。nmcli -f DEVICE,STATE device status のように指定すると、スクリプトでの解析が楽になる。

Wi-Fi に接続するには?

結論: nmcli device wifi list で SSID を確認し、nmcli device wifi connect <SSID> password <パスワード> で接続する。

Wi-Fi はスキャンして接続する 2 ステップ。

# 周辺の Wi-Fi をスキャンして一覧表示
nmcli device wifi list

# SSID とパスワードを指定して接続
nmcli device wifi connect "MyHome-WiFi" password "your-password"

接続に成功すると、同名の connection プロファイルが自動生成され、次回以降は自動接続される。

# 電波そのものを ON/OFF(機内モード相当)
nmcli radio wifi off
nmcli radio wifi on

コマンド履歴にパスワードが残るのを避けたい場合は、password を省略すると対話的に入力を求められる。共有サーバでは履歴対策を意識すること。

固定 IP を設定するには?

結論: ipv4.method manual に切り替え、ipv4.addresses / ipv4.gateway / ipv4.dns を設定し、connection up で反映する。

サーバ運用で最も使う操作。DHCP(自動取得)から固定 IP へ切り替える流れを示す。

# プロファイル名を確認(以降 "Wired connection 1" と仮定)
nmcli connection show

# 固定 IP・ゲートウェイ・DNS をまとめて設定
nmcli connection modify "Wired connection 1" \
  ipv4.method manual \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8 1.1.1.1"

# 設定を反映(プロファイルを再適用)
nmcli connection up "Wired connection 1"
  • ipv4.addresses/24 のように プレフィックス長を必ず付ける
  • DNS を複数指定するときは "8.8.8.8 1.1.1.1" のようにスペース区切りで引用符に入れる
  • modify した時点ではまだ反映されない。up で初めて適用される

DHCP(自動取得)に戻すときは methodauto にする。

nmcli connection modify "Wired connection 1" ipv4.method auto
nmcli connection up "Wired connection 1"

新しいプロファイルをゼロから作る場合は connection add を使う。

nmcli connection add type ethernet con-name office-static ifname enp3s0 \
  ipv4.method manual ipv4.addresses 10.0.0.50/24 ipv4.gateway 10.0.0.1

接続の有効化・無効化はどうする?

結論: nmcli connection up <名前> で有効化、down で無効化。プロファイルの削除は connection delete

# プロファイルを有効化(接続)
nmcli connection up office-static

# プロファイルを無効化(切断、設定は残る)
nmcli connection down office-static

# プロファイルを完全に削除
nmcli connection delete office-static

down は接続を切るだけでプロファイルは残るのに対し、delete は設定ファイルごと消す。混同しないこと。

# デバイスごと切断したい場合
nmcli device disconnect enp3s0

# ネットワーク機能全体を OFF/ON
nmcli networking off
nmcli networking on

よくあるトラブルと対処

結論: 「device が unmanaged」「設定が反映されない」「接続できない」の 3 パターンに切り分けると原因に早く到達できる。

デバイスが unmanaged と表示される

nmcli device statusunmanaged の場合、そのデバイスは NetworkManager の管理外。/etc/netplan//etc/network/interfaces など別の仕組みが管理している可能性が高い。

# NetworkManager に管理させる
nmcli device set enp3s0 managed yes

modify したのに反映されない

nmcli connection modifyプロファイルを書き換えるだけ。実機への反映には up が必須。

nmcli connection up "Wired connection 1"

設定値のキーが分からない

設定可能なプロパティは膨大。現在値を一覧して目的のキーを探す。

# ipv4 関連のプロパティと現在値を表示
nmcli connection show "Wired connection 1" | grep ipv4

変更が不安な操作は、先に nmcli connection show <名前> で現在値を控えておくとロールバックしやすい。サーバではリモート切断に備え、コンソールアクセスを確保してから IP 変更すること。

まとめ / 次に読む

nmcli は NetworkManager 環境のネットワーク設定を、GUI なしで永続的に管理できる標準ツール。device(実機)と connection(プロファイル)の分離さえ押さえれば、状態確認・Wi-Fi 接続・固定 IP 設定まで一貫した型で扱える。