nmcli完全ガイド:Linuxネットワーク設定の決定版【初心者向け】

Linux

Linuxサーバーにリモート接続しているとき、「Wi-Fiの設定を変えたいけど、GUIがない…」と困ったことはありませんか?

そんなときに活躍するのがnmcli(エヌエムシーエルアイ)というコマンドラインツールです。

今回は、このLinuxネットワーク管理の強力なツールについて、初心者の方でも分かりやすく解説していきますよ!


スポンサーリンク
  1. nmcliとは?基本を理解しよう
    1. NetworkManagerって何?
    2. nmcliが便利な理由
  2. インストールと確認
    1. インストール済みか確認
    2. インストール方法
    3. NetworkManagerの起動
  3. 基本的なコマンド構造
    1. コマンドの形式
    2. ヘルプの表示
  4. 現在の状態を確認する
    1. 全体的な状態
    2. デバイス一覧
    3. 接続プロファイル一覧
    4. 詳細情報の表示
  5. Wi-Fi接続の管理
    1. Wi-Fiをオン/オフ
    2. アクセスポイントのスキャン
    3. Wi-Fiに接続
    4. 接続の切断
    5. 保存済みWi-Fiの削除
  6. 有線LAN接続の管理
    1. 自動接続(DHCP)の設定
    2. 固定IPアドレスの設定
    3. 既存接続の変更
  7. 接続プロファイルの管理
    1. プロファイルの作成
    2. プロファイルの編集
    3. プロファイルのエクスポート/インポート
  8. IPv6の設定
    1. IPv6の有効化/無効化
    2. 固定IPv6アドレスの設定
  9. VPN接続の設定
    1. OpenVPN接続
    2. VPN接続/切断
  10. トラブルシューティング
    1. ネットワークが繋がらない
    2. IPアドレスが取得できない
    3. Wi-Fiが見つからない
    4. 接続プロファイルが壊れた
    5. ログの確認
  11. 便利なオプションと使い方
    1. 出力形式の指定
    2. 対話モードの使用
    3. ショートカットとエイリアス
  12. 実用的なスクリプト例
    1. Wi-Fi自動接続スクリプト
    2. ネットワーク切り替えスクリプト
    3. 接続状態の監視スクリプト
  13. ホットスポット(テザリング)の作成
    1. Wi-Fiホットスポットの作成
    2. イーサネット共有
  14. モバイルブロードバンド(4G/5G)の設定
    1. モバイル接続の作成
    2. モバイル通信の状態確認
  15. セキュリティのベストプラクティス
    1. パスワードの安全な入力
    2. 接続ファイルのパーミッション
    3. VPN使用時の注意
  16. よくある質問
  17. まとめ:nmcliでネットワークを自在に操ろう

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 [オプション] オブジェクト {コマンド | ヘルプ}

主なオブジェクト:

オブジェクト省略形説明
generalg全般的な状態
networkingnネットワーク全体の制御
radior無線の有効/無効
connectionc接続プロファイルの管理
devicedネットワークデバイスの管理

ヘルプの表示

# 全体のヘルプ
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: ipifconfigは低レベルなネットワーク設定ツールですが、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 statusnmcli connection showで状態を確認することから始めて、徐々に他のコマンドも試してみてください。


コメント

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