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-networkdやnetplanのみの環境では対象外
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 show は nmcli 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(自動取得)に戻すときは method を auto にする。
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 status で unmanaged の場合、そのデバイスは 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 変更すること。