Linuxサーバーにリモート接続しているとき、「Wi-Fiの設定を変えたいけど、GUIがない…」と困ったことはありませんか?
そんなときに活躍するのがnmcli(エヌエムシーエルアイ)というコマンドラインツールです。
今回は、このLinuxネットワーク管理の強力なツールについて、初心者の方でも分かりやすく解説していきますよ!
nmcliとは?基本を理解しよう

nmcliは「NetworkManager Command Line Interface」の略で、NetworkManagerをコマンドラインから操作するツールです。
NetworkManagerって何?
NetworkManagerは、Linuxのネットワーク接続を管理するサービスです。
デスクトップ環境では、画面右上のネットワークアイコンをクリックしてWi-Fiに接続しますよね。その裏側で動いているのがNetworkManagerなんです。
nmcliが便利な理由
GUIがなくても操作できる:
サーバーやリモート接続時でも、ネットワーク設定を完全に制御できます。
スクリプト化できる:
コマンドなので、シェルスクリプトで自動化できますよ。
高速:
GUIを起動するより、コマンド一発の方が早いですね。
詳細な設定が可能:
GUIでは隠れている細かい設定も、すべて操作できます。
インストールと確認
nmcliは通常、NetworkManagerと一緒にインストールされています。
インストール済みか確認
# バージョン確認
nmcli --version
# 出力例
nmcli tool, version 1.42.4
インストール方法
まだ入っていない場合は、以下のコマンドでインストールできます。
Ubuntu/Debian:
sudo apt update
sudo apt install network-manager
Fedora/RHEL/CentOS:
sudo dnf install NetworkManager
Arch Linux:
sudo pacman -S networkmanager
NetworkManagerの起動
# 起動状態を確認
systemctl status NetworkManager
# 起動
sudo systemctl start NetworkManager
# 自動起動を有効化
sudo systemctl enable NetworkManager
基本的なコマンド構造
nmcliのコマンドは、わかりやすい構造になっています。
コマンドの形式
nmcli [オプション] オブジェクト {コマンド | ヘルプ}
主なオブジェクト:
| オブジェクト | 省略形 | 説明 |
|---|---|---|
| general | g | 全般的な状態 |
| networking | n | ネットワーク全体の制御 |
| radio | r | 無線の有効/無効 |
| connection | c | 接続プロファイルの管理 |
| device | d | ネットワークデバイスの管理 |
ヘルプの表示
# 全体のヘルプ
nmcli help
# 特定のオブジェクトのヘルプ
nmcli connection help
nmcli device help
現在の状態を確認する
まずは、ネットワークの状況を把握しましょう。
全体的な状態
# NetworkManagerの状態
nmcli general status
# 出力例
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
デバイス一覧
# すべてのネットワークデバイスを表示
nmcli device status
# 出力例
DEVICE TYPE STATE CONNECTION
wlan0 wifi connected MyWiFi
eth0 ethernet connected Wired connection 1
lo loopback unmanaged --
接続プロファイル一覧
# 保存されている接続プロファイル
nmcli connection show
# 出力例
NAME UUID TYPE DEVICE
MyWiFi 550e8400-e29b-41d4-a716-446655440000 wifi wlan0
Wired connection 1 6ba5f07c-3d2a-4c8f-9a35-123456789abc ethernet eth0
詳細情報の表示
# 特定の接続の詳細
nmcli connection show "MyWiFi"
# 特定のデバイスの詳細
nmcli device show wlan0
Wi-Fi接続の管理
無線LANの設定方法を見ていきましょう。
Wi-Fiをオン/オフ
# Wi-Fiを有効化
nmcli radio wifi on
# Wi-Fiを無効化
nmcli radio wifi off
# 状態確認
nmcli radio wifi
アクセスポイントのスキャン
# 利用可能なWi-Fiネットワークを表示
nmcli device wifi list
# 出力例
IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY
* 00:11:22:33:44:55 MyHomeWiFi Infra 6 270 Mbit/s 85 ▂▄▆█ WPA2
AA:BB:CC:DD:EE:FF OfficeNetwork Infra 11 540 Mbit/s 70 ▂▄▆_ WPA2
11:22:33:44:55:66 PublicWiFi Infra 1 130 Mbit/s 45 ▂▄__ --
各列の意味:
- IN-USE:現在接続中(*マーク)
- SSID:ネットワーク名
- SIGNAL:電波強度(数値が大きいほど強い)
- BARS:電波強度のグラフ表示
- SECURITY:暗号化方式
Wi-Fiに接続
パスワードあり:
nmcli device wifi connect "MyHomeWiFi" password "my_password"
パスワードなし(オープンネットワーク):
nmcli device wifi connect "PublicWiFi"
非表示SSID(ステルスモード)に接続:
nmcli device wifi connect "HiddenNetwork" password "secret123" hidden yes
接続の切断
# 特定の接続を切断
nmcli connection down "MyHomeWiFi"
# デバイスを切断
nmcli device disconnect wlan0
保存済みWi-Fiの削除
# 接続プロファイルを削除
nmcli connection delete "MyHomeWiFi"
有線LAN接続の管理
イーサネット接続の設定方法です。
自動接続(DHCP)の設定
# 新しい有線接続を作成
nmcli connection add \
type ethernet \
con-name "Wired-Auto" \
ifname eth0
# 接続を有効化
nmcli connection up "Wired-Auto"
固定IPアドレスの設定
# 固定IPで接続を作成
nmcli connection add \
type ethernet \
con-name "Wired-Static" \
ifname eth0 \
ip4 192.168.1.100/24 \
gw4 192.168.1.1
# DNSサーバーを設定
nmcli connection modify "Wired-Static" \
ipv4.dns "8.8.8.8 8.8.4.4"
# 手動設定を明示的に指定
nmcli connection modify "Wired-Static" \
ipv4.method manual
# 接続を有効化
nmcli connection up "Wired-Static"
既存接続の変更
# IPアドレスを変更
nmcli connection modify "Wired-Static" \
ipv4.addresses 192.168.1.150/24
# ゲートウェイを変更
nmcli connection modify "Wired-Static" \
ipv4.gateway 192.168.1.254
# DNSを追加
nmcli connection modify "Wired-Static" \
+ipv4.dns 1.1.1.1
# 設定を反映
nmcli connection up "Wired-Static"
接続プロファイルの管理
保存された接続設定を管理する方法です。
プロファイルの作成
基本的な作成:
nmcli connection add \
type wifi \
con-name "OfficeWiFi" \
ifname wlan0 \
ssid "OfficeNetwork" \
wifi-sec.key-mgmt wpa-psk \
wifi-sec.psk "office_password"
プロファイルの編集
対話的に編集:
nmcli connection edit "OfficeWiFi"
# nmcliプロンプトが表示される
nmcli> print
nmcli> set ipv4.method auto
nmcli> save
nmcli> quit
コマンドラインで編集:
# 自動接続を有効化
nmcli connection modify "OfficeWiFi" \
connection.autoconnect yes
# 自動接続の優先度を設定(数値が大きいほど優先)
nmcli connection modify "OfficeWiFi" \
connection.autoconnect-priority 10
プロファイルのエクスポート/インポート
設定ファイルの場所:
接続プロファイルは、以下に保存されています。
/etc/NetworkManager/system-connections/
バックアップ:
# すべての接続をバックアップ
sudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup/
# 特定の接続のみ
sudo cp /etc/NetworkManager/system-connections/MyWiFi.nmconnection ~/
復元:
sudo cp ~/nm-backup/* /etc/NetworkManager/system-connections/
sudo chmod 600 /etc/NetworkManager/system-connections/*
sudo systemctl restart NetworkManager
IPv6の設定
IPv6を使った接続の設定方法です。
IPv6の有効化/無効化
# IPv6を有効化
nmcli connection modify "Wired-Auto" ipv6.method auto
# IPv6を無効化
nmcli connection modify "Wired-Auto" ipv6.method ignore
# 反映
nmcli connection up "Wired-Auto"
固定IPv6アドレスの設定
nmcli connection modify "Wired-Auto" \
ipv6.method manual \
ipv6.addresses "2001:db8::100/64" \
ipv6.gateway "2001:db8::1" \
ipv6.dns "2001:4860:4860::8888"
VPN接続の設定
VPNの設定もnmcliでできます。
OpenVPN接続
# OpenVPN接続を作成
nmcli connection import \
type openvpn \
file /path/to/config.ovpn
# または手動で作成
nmcli connection add \
type vpn \
con-name "MyVPN" \
vpn-type openvpn \
vpn.data "remote=vpn.example.com, connection-type=password"
VPN接続/切断
# VPNに接続
nmcli connection up "MyVPN"
# VPNを切断
nmcli connection down "MyVPN"
トラブルシューティング
問題が起きたときの対処法です。
ネットワークが繋がらない
ステップ1:NetworkManagerの状態確認
systemctl status NetworkManager
# 起動していなければ
sudo systemctl start NetworkManager
ステップ2:デバイスの状態確認
nmcli device status
# デバイスが「unavailable」なら
nmcli device set wlan0 managed yes
ステップ3:接続の再起動
nmcli connection down "MyWiFi"
nmcli connection up "MyWiFi"
IPアドレスが取得できない
DHCPの問題をチェック:
# 接続の詳細を確認
nmcli connection show "MyWiFi" | grep ipv4
# DHCPクライアントを確認
nmcli -f DHCP4 connection show "MyWiFi"
手動でリリース/更新:
# 接続を再起動(IPを再取得)
nmcli connection down "MyWiFi" && nmcli connection up "MyWiFi"
Wi-Fiが見つからない
スキャンを強制実行:
# Wi-Fiを一度オフにしてオン
nmcli radio wifi off
sleep 2
nmcli radio wifi on
# 再スキャン
nmcli device wifi rescan
nmcli device wifi list
接続プロファイルが壊れた
プロファイルを再作成:
# 古いプロファイルを削除
nmcli connection delete "BrokenConnection"
# 新しく作成
nmcli device wifi connect "SSID" password "password"
ログの確認
# NetworkManagerのログを確認
journalctl -u NetworkManager -f
# 特定の時間のログ
journalctl -u NetworkManager --since "1 hour ago"
便利なオプションと使い方

作業効率を上げるテクニックです。
出力形式の指定
デフォルト(表形式):
nmcli device status
tabular(タブ区切り):
nmcli -t device status
フィールドを指定:
nmcli -f DEVICE,STATE,CONNECTION device status
カラー表示の制御:
# カラー表示を有効化
nmcli -c yes device status
# カラー表示を無効化
nmcli -c no device status
対話モードの使用
# 対話モードで起動
nmcli connection edit type wifi con-name "NewWiFi"
# プロンプトが表示される
nmcli> set wifi.ssid MyNetwork
nmcli> set wifi-sec.key-mgmt wpa-psk
nmcli> set wifi-sec.psk mypassword
nmcli> save
nmcli> activate
nmcli> quit
ショートカットとエイリアス
# bashの場合、~/.bashrc に追加
alias nms='nmcli device status'
alias nmc='nmcli connection show'
alias nmw='nmcli device wifi list'
alias nmu='nmcli connection up'
alias nmd='nmcli connection down'
実用的なスクリプト例
自動化に使えるスクリプトです。
Wi-Fi自動接続スクリプト
#!/bin/bash
# wifi-connect.sh
SSID="MyHomeWiFi"
PASSWORD="my_password"
# 既存の接続があれば削除
nmcli connection delete "$SSID" 2>/dev/null
# 新規接続
nmcli device wifi connect "$SSID" password "$PASSWORD"
if [ $? -eq 0 ]; then
echo "接続成功: $SSID"
else
echo "接続失敗: $SSID"
exit 1
fi
ネットワーク切り替えスクリプト
#!/bin/bash
# network-switch.sh
case "$1" in
home)
nmcli connection up "Home-WiFi"
;;
office)
nmcli connection up "Office-WiFi"
;;
mobile)
nmcli connection up "Mobile-Hotspot"
;;
*)
echo "使い方: $0 {home|office|mobile}"
exit 1
;;
esac
接続状態の監視スクリプト
#!/bin/bash
# network-monitor.sh
while true; do
STATE=$(nmcli -t -f STATE general)
if [ "$STATE" != "connected" ]; then
echo "[$(date)] ネットワーク切断を検出"
# 自動再接続を試みる
nmcli connection up "Primary-Connection"
fi
sleep 10
done
ホットスポット(テザリング)の作成
スマートフォンのように、PCをアクセスポイントにできます。
Wi-Fiホットスポットの作成
# ホットスポットを作成
nmcli device wifi hotspot \
ifname wlan0 \
con-name "MyHotspot" \
ssid "MyPC-Hotspot" \
password "hotspot123"
# 開始
nmcli connection up "MyHotspot"
# 停止
nmcli connection down "MyHotspot"
イーサネット共有
# イーサネットをWi-Fi経由で共有
nmcli connection add \
type wifi \
ifname wlan0 \
con-name "SharedConnection" \
autoconnect no \
ssid "Shared" \
mode ap \
wifi-sec.key-mgmt wpa-psk \
wifi-sec.psk "password123" \
ipv4.method shared
モバイルブロードバンド(4G/5G)の設定
モバイル通信の設定方法です。
モバイル接続の作成
# モバイル接続を追加
nmcli connection add \
type gsm \
con-name "MobileData" \
ifname wwan0 \
gsm.apn "internet.example.com"
# 接続
nmcli connection up "MobileData"
モバイル通信の状態確認
# モデムの状態
nmcli device show wwan0
# 電波強度など
nmcli -f GENERAL,WWAN device show wwan0
セキュリティのベストプラクティス
安全にnmcliを使うためのポイントです。
パスワードの安全な入力
コマンドラインにパスワードを書かない:
# 悪い例(履歴に残る)
nmcli device wifi connect "MyWiFi" password "secret123"
# 良い例(対話的に入力)
nmcli --ask device wifi connect "MyWiFi"
接続ファイルのパーミッション
# 接続ファイルは root のみアクセス可能
sudo ls -l /etc/NetworkManager/system-connections/
# -rw------- 1 root root 356 Jan 15 10:23 MyWiFi.nmconnection
パスワードが含まれるファイルは、適切に保護されていますね。
VPN使用時の注意
# DNS リークを防ぐ
nmcli connection modify "MyVPN" \
ipv4.dns-priority -1 \
ipv6.dns-priority -1
よくある質問
Q: nmcliとip/ifconfigの違いは?
A: ipやifconfigは低レベルなネットワーク設定ツールですが、nmcliはNetworkManagerという高レベルな管理サービスを操作します。nmcliの方が接続プロファイルを保存できて、自動接続などの高度な機能が使えますよ。
Q: nmcliの設定は再起動後も残る?
A: はい。nmcliで作成した接続プロファイルは永続的に保存されます。再起動しても設定は残りますね。
Q: GUIとnmcli、どちらで設定しても同じ?
A: 同じです。どちらもNetworkManagerを操作しているので、GUIで作った接続をnmcliで変更したり、その逆もできます。
Q: nmcliがない古いシステムは?
A: NetworkManagerがない場合は、/etc/network/interfaces(Debian系)やifcfgファイル(RHEL系)を直接編集する必要があります。またはsystemd-networkdを使う方法もありますよ。
Q: Wi-Fiのパスワードを忘れた場合は?
A: 保存されている接続のパスワードは確認できます。
sudo cat /etc/NetworkManager/system-connections/MyWiFi.nmconnection | grep psk=
まとめ:nmcliでネットワークを自在に操ろう
nmcliについて、重要なポイントをおさらいします。
今日学んだこと:
- nmcliはNetworkManagerのコマンドラインツール
- GUIなしでネットワーク設定を完全制御できる
- Wi-Fi、有線LAN、VPN、モバイル通信すべてに対応
- 接続プロファイルを保存して再利用できる
- スクリプト化による自動化が可能
nmcli deviceでデバイス操作、nmcli connectionで接続管理- トラブルシューティングもコマンドラインで完結
- セキュアな設定でパスワードを保護
nmcliは、一見難しそうに見えるかもしれませんが、基本的なコマンドを覚えてしまえば、とても便利なツールです。
特にサーバー管理やリモート作業では、GUIよりも効率的にネットワーク設定ができるようになりますよ。最初はnmcli device statusやnmcli connection showで状態を確認することから始めて、徐々に他のコマンドも試してみてください。


コメント