Linuxコマンド辞典 nmcli・nmtuiコマンド(ネットワーク)

NetworkManagerを利用してネットワーク設定を行う「nmcli」コマンドと疑似的なGUI操作で設定できる「nmtui」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS

概要・使用方法

書式

$ nmtui

nmtuiは「Network Manager」の主な設定、操作をテキストベースのインターフェースで行えるコマンドです。GUI環境がないシステムでも疑似的にGUI操作が可能です。

GUI Network Manager画面イメージ
GUI Network Manager画面 IPアドレス設定画面イメージ

書式

$ nmcli [オプション] オブジェクト [コマンド]

最近のディストリビューションでは、ネットワークを管理するサブシステムとして「NetworkManager」が導入されています。はホストのネットワーク設定を管理するシステムです。GNOMEデスクトップ環境では、アプレットやGUI設定ツールなども用意されています。GUI環境がない場合は「nmcli」か「nmtui」というcurses版クライアントを利用します。nmcliは引数のオブジェクトとコマンドで「接続名」で設定を管理します。各「接続名」設定を変更しても、その「接続名」設定を再起動しないと有効になりません。

オプション

-t
–terese
簡単な表示で出力する
-p
–pretty
飾った表示で出力する
-m tabular | multiline
–mode tabulaer | multiline
tabularは表形式で、multilineは複数行形式で表示する(デフォルトはtabular)
-f フィールド1、・・・| all | common
–fields フィールド1,・・・|all|common
表示するフィールドを指定する
-w 秒
–wait 秒
動作のタイムアウトを秒単位で指定する

オブジェクトとコマンド

オブジェクト説明
g、generalNetworkManagerの状態を扱う
statusNetworkMangerの状態を表示する
hostname [ホスト名]「ホスト名」を指定しないと現在のホスト名を表示する。指定するとそのホスト名に変更する
permissions接続/切断のようなアクションの実行権限を表示する
logging [level レベル]
[domains ドメイン]
指定した「ドメイン」のログレベルを指定した「レベル」にする。ドメインとレベルはNetworkManager
n、networkingネットワーク全般を扱う
onネットワークを有効にする
offネットワークを無効にする
connectivity
[check]
ネットワーク状態を表示する
r、radio無線接続を扱う(WiFiだけでなくWimaxも)
all[on|off]すべての無線接続をon/offする
wifi[on|off]すべてのWiFi接続をon/offする
wwan[on|off]モバイルブロードバンドをon/offする
wimax[on|off]WiMaxをon/offする
c、connectionNetworkManagerの接続状態を扱う
show接続情報を表示する
up引数に渡す情報で接続を有効にする
down引数に渡す情報で接続を無効にする
add引数に渡す情報の新しい接続を追加する
modify引数に渡す情報で接続を修正する
edit対話エディタで新規追加/修正する
delete引数に渡す情報の接続を削除する
reloadすべての接続設定ファイルを読み直す
load ファイル名ファイルから読み込んだ接続設定を読み込む
d、deviceNetworkManagerで管理するデバイスの状態扱う
statusデバイスの状態を表示する

show インターフェイス名

デバイスの情報を表示する
connect インターフェイス名デバイスを接続する
disconnect インターフェイス名デバイスを切断する
wifi listWiFiアクセスポイントを表示する
wifi connectWiFiアクセスポイントに接続に行く
wifi rescanWiFiアクセスポイントを再建策する

NetworkManagerの状態を表示する

$ nmcli general status

実行結果

[root@centos ~]# nmcli general status
STATE     CONNECTIVITY  WIFI-HW  WIFI  WWAN-HW  WWAN 
接続済み  完全          有効     有効  有効     有効 
[root@centos ~]# 

接続を表示する

$ nmcli general status

実行結果

[root@centos ~]# nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
eth-1   c33e38a7-8d18-4f19-be73-db46410f318e  ethernet  eth0   
virbr0  11d9fc00-3f8e-4451-809c-7ecc1ab6c345  bridge    virbr0 
[root@centos ~]# 

現在設定されているIPアドレスを表示する

$ nmcli connection show インターフェイス名 | grep ipv4

実行結果

[rin@localhost ~]$ nmcli connection show eth0|grep ipv4
ipv4.method:                            manual
ipv4.dns:                               192.168.0.1
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.0.60/24
ipv4.gateway:                           192.168.0.1
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.routing-rules:                     --
ipv4.ignore-auto-routes:                いいえ
ipv4.ignore-auto-dns:                   いいえ
ipv4.dhcp-client-id:                    --
ipv4.dhcp-iaid:                         --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                はい
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.dhcp-hostname-flags:               0x0 (none)
ipv4.never-default:                     いいえ
ipv4.may-fail:                          はい
ipv4.required-timeout:                  -1 (default)
ipv4.dad-timeout:                       -1 (default)
ipv4.dhcp-vendor-class-identifier:      --
ipv4.dhcp-reject-servers:               --
[rin@localhost ~]$ 

接続名を変更する

$ nmcli connection modify 接続名(変更前) connection.id 接続名(変更後)

実行結果

[root@localhost ~]# nmcli connection show  #接続一覧を表示する
NAME    UUID                                  TYPE      DEVICE 
eth0    c33e38a7-8d18-4f19-be73-db46410f318e  ethernet  eth0   
virbr0  11d9fc00-3f8e-4451-809c-7ecc1ab6c345  bridge    virbr0 
[root@localhost ~]# nmcli connection modify eth0 connection.id eth-1 #接続名を変更する
[root@localhost ~]# nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
eth-1   c33e38a7-8d18-4f19-be73-db46410f318e  ethernet  eth0   
virbr0  11d9fc00-3f8e-4451-809c-7ecc1ab6c345  bridge    virbr0 
[root@localhost ~]# 

出力項目をカスタイマイズする

項目に日本語は指定不可

$ nmcli -f カスタイマイズ項目,・・・ c

実行結果

[root@localhost ~]# nmcli -f NAME,DEVICE,TIMESTAMP-REAL,AUTOCONNECT c
NAME    DEVICE  TIMESTAMP-REAL               AUTOCONNECT 
eth-1   eth0    2022年12月18日 11時35分41秒  はい        
virbr0  virbr0  2022年12月18日 11時35分41秒  いいえ      
[root@localhost ~]# 

ホスト名を変更する

$ nmcli general hostname ホスト名

実行結果

[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# nmcli general hostname centos
[root@localhost ~]# hostname
centos
[root@localhost ~]# 

ログレベルを変更する

$ nmcli general loggin level DEBUG domains IP4

実行結果

[root@localhost ~]# nmcli general loggin level DEBUG domains IP4
[root@localhost ~]# journalctl -f
-- Logs begin at Sat 2022-12-17 19:57:59 JST. --
12月 18 11:38:14 centos NetworkManager[913]: <info>  [1671331094.2750] audit: op="hostname-save" arg="centos" pid=15746 uid=0 result="success"
12月 18 11:38:14 centos NetworkManager[913]: <info>  [1671331094.2751] hostname: static hostname changed from "localhost.localdomain" to "centos"
12月 18 11:38:14 centos NetworkManager[913]: <info>  [1671331094.2751] policy: set-hostname: current hostname was changed outside NetworkManager: 'centos'
12月 18 11:38:14 centos dbus-daemon[893]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.9' (uid=0 pid=913 comm="/usr/sbin/NetworkManager --no-daemon ")
12月 18 11:38:14 centos systemd[1]: Started Hostname Service.
12月 18 11:38:14 centos systemd[1]: Starting Network Manager Script Dispatcher Service...
12月 18 11:38:14 centos dbus-daemon[893]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
12月 18 11:38:14 centos systemd[1]: Started Network Manager Script Dispatcher Service.
12月 18 11:38:24 centos systemd[1]: NetworkManager-dispatcher.service: Succeeded.
12月 18 11:38:44 centos systemd[1]: systemd-hostnamed.service: Succeeded.

IPアドレスを設定する

IPv4アドレスを手動設定にする

nmcli connection modify インターフェイス名 ipv4.method manual ipv4.addresses IPアドレス/サブネットマスク ipv4.gateway IPアドレス(デフォルトゲートウェイ) ipv4.dns IPアドレス(DNS)

実行結果

[root@centos ~]# nmcli connection modify eth-1 ipv4.method manual ipv4.addresses 192.168.0.60/24 ipv4.gateway 192.168.0.1 ipv4.dns 192.168.0.1

ダウンした後に自動的にアップも実行するようにする記述方法

[root@centos ~]# nmcli connection down eth-1;nmcli connection up eth-1
接続 'eth-1' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@centos ~]# 

名前解サーバーを指定する

DNSサーバを指定する

nmcli connection modify インターフェイス名 ipv4.dns "DNS IPアドレス ・・・"

IPアドレスを設定する

nmcli connection modify インターフェイス名 ipv4.dns-search "ドメイン"

実行結果

[root@centos ~]# nmcli connection modify eth-1 ipv4.dns "192.168.0.1 192.168.0.2" #DNSサーバを指定
[root@centos ~]# nmcli connection modify eth-1 ipv4.dns-search "example.jp"       #検索ドメイン名を指定
[root@centos ~]# nmcli connection down eth-1;nmcli connection up eth-1            #接続のダウン・アップ
接続 'eth-1' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/5)
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@centos ~]# cat /etc/resolv.conf      #/etc/resolv.confを確認
# Generated by NetworkManager
search example.jp
nameserver 192.168.0.1
nameserver 192.168.0.2
[root@centos ~]# 

インタフェースがシステム起動時に有効になるように設定

/etc/sysconfig/network-scripts/ifcfg-eth0/ifcfg-<IF名>も変更される

nmcli connection modify インターフェイス名 connection.autoconnect yes

実行結果

[root@centos ~]# nmcli connection modify eth-1 connection.autoconnect yes
[root@centos ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth-1
UUID=c33e38a7-8d18-4f19-be73-db46410f318e
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.0.60
PREFIX=24
GATEWAY=192.168.0.1
DNS1=192.168.0.1
IPV6_PRIVACY=no
DNS2=192.168.0.2
DOMAIN=example.jp
[root@centos ~]# 

DHCPを利用するようにする

nmcli connection modify インターフェイス名 ipv4.method auto

IPv4アドレスを手動で設定する

nmcli connection modify インターフェイス名 ipv6.address fe80::75f5:1c39:17c1:aac6

周辺のSSIDを表示する

nmcli device wifi list

ネットワーク有効/無効にする

無効にする

nmcli network off

有効にする

nmcli network on

インタフェースを起動/停止する

起動にする

nmcli connection up インタフェース名

停止にする

nmcli connection down インタフェース名

無線LANインタフェースの状態を表示する

nmcli dev show 無線LANインターフェイス