2.3. NetworkManager のコマンドラインツール nmcli の使用

コマンドラインツール nmcli は、ユーザーとスクリプトの両方が NetworkManager の制御に使用できます。コマンドの基本的な形式は以下のとおりです。
nmcli OPTIONS OBJECT { COMMAND | help }
ここでの OBJECT は、generalnetworkingradioconnection、または device のいずれかになります。最も使用頻度の高いオプションは、スクリプトで使用する -t, --terse、ユーザー用のオプション -p, --pretty および -h, --help オプションです。nmcli コマンドにはオートコンプリート機能があるので、利用可能なコマンドオプションが分からない場合は、Tab を押してください。使用可能なオプションおよびコマンドの全一覧は、nmcli(1) man ページを参照してください。
nmcli ツールには、コンテキスト感知ヘルプが組み込まれています。たとえば、以下の 2 つのコマンドを発行して、違いを比べてみます。
~]$ nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
  -t[erse]                                   terse output
  -p[retty]                                  pretty output
  -m[ode] tabular|multiline                  output mode
  -f[ields] <field1,field2,...>|all|common   specify fields to output
  -e[scape] yes|no                           escape columns separators in values
  -n[ocheck]                                 don't check nmcli and NetworkManager versions
  -a[sk]                                     ask for missing parameters
  -w[ait] <seconds>                          set timeout waiting for finishing operations
  -v[ersion]                                 show program version
  -h[elp]                                    print this help

OBJECT
  g[eneral]       NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]         NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager
~]$ nmcli general help
Usage: nmcli general { COMMAND | help }

  COMMAND := { status | hostname | permissions | logging }

  status

  hostname [<hostname>]

  permissions

  logging [level <log level>] [domains <log domains>]
後者の例では、オブジェクト general に関連したヘルプになります。
nmcli-examples(5) man ページには、有用な例が多くあります。以下に、いくつかを示します。
NetworkManager の全般的ステータスを表示するには、以下を実行します。
nmcli general status
NetworkManager のログ記録を制御するには、以下を実行します。
nmcli general logging
すべての接続を表示するには、以下を実行します。
nmcli connection show
現在アクティブな接続のみを表示するには、以下のように -a, --active オプションを追加します。
nmcli connection show --active
NetworkManager が認識するデバイスとその状態を表示するには、以下を実行します。
nmcli device status
コマンドは短縮したり、オプションを省略することができます。
nmcli connection modify id 'MyCafe' 802-11-wireless.mtu 1350
上記のコマンドは以下のようにできます。
nmcli con mod MyCafe 802-11-wireless.mtu 1350
この場合、接続 ID (名前) は nmcli にとって明白なので、id オプションを省略することができました。コマンドに慣れてくると、さらに省略することができます。たとえば、
nmcli connection add type ethernet
上記のコマンドは以下のようにすることができます。
nmcli c a type eth

注記

確かでない場合は、タブを使ったオートコンプリート機能を使用してください。

nmcli を使用したインターフェイスの開始および停止

nmcli ツールを使用すると、マスターを含めたネットワークインターフェイスの開始および停止ができます。例を示します。
nmcli con up id bond0
nmcli con up id port0
nmcli dev disconnect iface bond0
nmcli dev disconnect iface ens3

注記

接続が切断されるとインターフェイスは 手動 モードになるので、nmcli con down id id-string よりも nmcli dev disconnect iface iface-name が推奨されます。手動モードになると、ユーザーが NetworkManager に接続を開始するよう指示するか、キャリアの変更や休止状態、またはスリープなどの外部イベントが発生するまで自動接続は開始されません。

nmcli インタラクティブ接続エディター

nmcli ツールには、インタラクティブ接続エディターがあります。これを使用するには、以下のコマンドを実行します。
~]$ nmcli con edit
表示されたリストから有効な接続タイプを入力するよう求められます。接続タイプを入力すると、nmcli プロンプトが表示されます。接続タイプに精通している場合は、有効な type オプションを nmcli con edit コマンドに追加して、直接 nmcli プロンプト表示とすることができます。既存の接続プロファイルを編集する場合は、以下のような形式になります。
nmcli con edit [id | uuid | path] ID
新規プロファイルの追加および編集には、以下の形式を使用します。
nmcli con edit [type new-connection-type] [con-name new-connection-name]
有効なコマンド一覧を確認するには、nmcli プロンプトで help と入力します。設定およびプロパティーの説明を確認するには、describe コマンドを使用します。
describe setting.property
例を示します。
nmcli> describe team.config

2.3.1. nmcli オプションについて

ほとんどの nmcli コマンドは説明を要しませんが、以下にいくつかのコマンドオプションを説明します。
type — 接続タイプ
使用可能な値は次のとおりです。adslbondbond-slavebridgebridge-slavebluetoothcdmaethernetgsminfinibandolpc-meshteamteam-slavevlanwifiwimax
接続タイプにはそれぞれ、タイプ固有のコマンドオプションがあります。Tab を押すとオプション一覧を見ることができます。もしくは、nmcli(1) man ページで TYPE_SPECIFIC_OPTIONS の一覧を参照してください。type オプションは、nmcli connection add および nmcli connection edit の後に適用します。
con-name — 接続プロファイルに割り当てられる名前です。
接続名を指定しないと、以下のように生成されます。
 type-ifname[-number]
接続名は 接続プロファイル の名前で、デバイスを表すインターフェイス名 (wlan0ens3em1 など) と混同しないようにしてください。ユーザーはインターフェイスにちなんで接続名を付けることができますが、これらは別のものです。1 つのデバイスに複数の接続プロファイルを利用することができます。これはモバイルデバイスの場合や異なるデバイス間でネットワークケーブルを切り替えたりする場合に非常に便利です。設定を編集するのではなく異なるプロファイルを作成し、必要に応じてそれらをインターフェイスに適用します。id オプションも接続プロファイル名を参照します。
id — ユーザーが接続プロファイルに割り当てる ID 文字列です。
nmcli connection コマンド内で ID を使って接続を特定することができます。出力の NAME フィールドは常に接続 ID (名前) を表します。con-name が参照するものと同じ接続プロファイル名を参照します。
uuid — システムが接続プロファイルに割り当てる一意の ID 文字列です。
nmcli connection コマンド内で UUID を使って接続を特定することができます。

2.3.2. nmcli を使用したネットワーク接続

現在利用可能なネットワーク接続を一覧表示するには、以下のコマンドを実行します。
~]$ nmcli con show
NAME              UUID                                  TYPE            DEVICE
Auto Ethernet     9b7f2511-5432-40ae-b091-af2457dfd988  802-3-ethernet  --
ens3              fb157a65-ad32-47ed-858c-102a48e064a2  802-3-ethernet  ens3
MyWiFi            91451385-4eb8-4080-8b82-720aab8328dd  802-11-wireless wlan0
出力の NAME フィールドは常に接続 ID (名前) を表す事に留意してください。これはインターフェイス名と同じように見えますが、異なるものです。上記の 2 つ目の接続では、NAME フィールドである ens3 は、ユーザーがプロファイルに割り当て、インターフェイス ens3 に適用される接続 ID です。最後の接続では、ユーザーは接続 ID MyWiFi をインターフェイス wlan0 に割り当てています。
イーサネット接続を追加すると、設定プロファイルが作成され、それがデバイスに割り当てられます。新規プロファイルを作成する前に、以下のように利用可能なデバイスを確認します。
~]$ nmcli dev status
DEVICE  TYPE      STATE         CONNECTION
ens3    ethernet  disconnected  --
ens9    ethernet  disconnected  --
lo      loopback  unmanaged     --

動的イーサネット接続を追加する

動的 IP 設定のイーサネット設定プロファイルを追加して、DHCP がそのネットワーク設定を割り当てられるようにするには、以下の形式のコマンドを使用します。
nmcli connection add type ethernet con-name connection-name ifname interface-name
たとえば、my-office という名前の動的接続プロファイルを作成するには、以下のコマンドを実行します。
~]$ nmcli con add type ethernet con-name my-office ifname ens3
Connection 'my-office' (fb157a65-ad32-47ed-858c-102a48e064a2) successfully added.
NetworkManager が内部パラメーター connection.autoconnectyes に設定します。また NetworkManager は設定を /etc/sysconfig/network-scripts/ifcfg-my-office にも書き出します。ここでは、ONBOOT ディレクティブが yes に設定されます。
ifcfg ファイルへの手動での変更は、当該インターフェイスが次にオンラインになるまで NetworkManager には認識されないことに注意してください。設定ファイルの使用法に関しては、「sysconfig ファイルを使ったネットワーク設定」 を参照してください。
イーサネット接続をオンラインするには、以下のコマンドを実行します。
~]$ nmcli con up my-office
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
デバイスおよび接続のステータスを確認します。
~]$ nmcli device status
DEVICE  TYPE      STATE         CONNECTION
ens3    ethernet  connected     my-office
ens9    ethernet  disconnected  --
lo      loopback  unmanaged     --
ホストが DHCP サーバーに送信するホスト名を変更するには、以下のように dhcp-hostname プロパティーを編集します。
~]$ nmcli con modify my-office my-office ipv4.dhcp-hostname host-name ipv6.dhcp-hostname host-name
ホストが DHCP に送信する IPv4 クライアント ID を変更するには、以下のように dhcp-client-id プロパティーを編集します。
~]$ nmcli con modify my-office my-office ipv4.dhcp-client-id client-ID-string
IPv6 には dhcp-client-id プロパティーがなく、dhclientIPv6 に識別子を作成します。詳細は、dhclient(8) man ページを参照してください。
DHCP サーバーがホストに送信する DNS サーバーを無視するようにするには、以下のように ignore-auto-dns プロパティーを編集します。
~]$ nmcli con modify my-office my-office ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yes
属性およびその設定に関する詳細は、nm-settings(5) man ページを参照してください。

例2.1 インタラクティブエディターを使用して動的イーサネット接続を設定する

インタラクティブエディターを使用して動的イーサネット接続を設定するには、以下のコマンドを実行します。
~]$ nmcli con edit type ethernet con-name ens3

===| nmcli interactive connection editor |===

Adding a new '802-3-ethernet' connection

Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
nmcli> describe ipv4.method

=== [method] ===
[NM property description]
IPv4 configuration method.  If 'auto' is specified then the appropriate automatic method (DHCP, PPP, etc) is used for the interface and most other properties can be left unset.  If 'link-local' is specified, then a link-local address in the 169.254/16 range will be assigned to the interface.  If 'manual' is specified, static IP addressing is used and at least one IP address must be given in the 'addresses' property.  If 'shared' is specified (indicating that this connection will provide network access to other computers) then the interface is assigned an address in the 10.42.x.1/24 range and a DHCP and forwarding DNS server are started, and the interface is NAT-ed to the current default network connection.  'disabled' means IPv4 will not be used on this connection.  This property must be set.

nmcli> set ipv4.method auto
nmcli> save
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? [yes] yes
Connection 'ens3' (090b61f7-540f-4dd6-bf1f-a905831fc287) successfully saved.
nmcli> quit
~]$
デフォルトの動作では、接続プロファイルが永続的に保存されます。必要な場合は save temporary コマンドで、プロファイルを次回の再起動時までメモリーにだけ保持することもできます。

静的イーサネット接続を追加する

静的 IPv4 設定のイーサネット接続を追加するには、以下の形式のコマンドを使用します。
nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address
ip6 および gw6 のオプションを使用して IPv6 アドレスとゲートウェイ情報を追加することもできます。
たとえば、IPv4 アドレスおよびゲートウェイのみの静的イーサネット接続を作成するコマンドは、以下のようになります。
~]$ nmcli con add type ethernet con-name test-lab ifname ens9 ip4 10.10.10.10/24 \
gw4 10.10.10.254
オプションで、デバイスに同時に IPv6 アドレスとゲートウェイを指定する場合は、以下のようになります。
~]$ nmcli con add type ethernet con-name test-lab ifname ens9 ip4 10.10.10.10/24 \
gw4 10.10.10.254 ip6 abbe::cafe gw6 2001:db8::1
Connection 'test-lab' (05abfd5e-324e-4461-844e-8501ba704773) successfully added.
NetworkManager が内部パラメーター ipv4.methodmanual に、connection.autoconnectyes に設定します。また NetworkManager は設定を /etc/sysconfig/network-scripts/ifcfg-my-office にも書き出します。ここでは、対応する BOOTPROTO が none に、ONBOOT が yes に設定されます。
ifcfg ファイルへの手動での変更は、当該インターフェイスが次にオンラインになるまで NetworkManager には認識されないことに注意してください。設定ファイルの使用法に関しては、「sysconfig ファイルを使ったネットワーク設定」 を参照してください。
2 つの IPv4 DNS サーバーアドレスを設定するには、以下のコマンドを実行します。
~]$ nmcli con mod test-lab ipv4.dns "8.8.8.8 8.8.4.4"
このコマンドにより、以前に設定された DNS サーバーが置換されることに注意してください。2 つの IPv6 DNS サーバーアドレスを設定するには、以下のコマンドを実行します。
~]$ nmcli con mod test-lab ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
このコマンドにより、以前に設定された DNS サーバーが置換されることに注意してください。別の方法では、以下のように + 接頭辞を使って、新たな DNS サーバーを以前のセットに追加します。
~]$ nmcli con mod test-lab +ipv4.dns "8.8.8.8 8.8.4.4"
~]$ nmcli con mod test-lab +ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
新規イーサネット接続をオンラインにするには、以下のコマンドを実行します。
~]$ nmcli con up test-lab ifname ens9
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
デバイスおよび接続のステータスを確認します。
~]$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens3    ethernet  connected  my-office
ens9    ethernet  connected  test-lab
lo      loopback  unmanaged  --
新規に設定した接続の詳細情報を表示するには、以下のコマンドを実行します。
~]$ nmcli -p con show test-lab
===============================================================================
                     Connection profile details (test-lab)
===============================================================================
connection.id:                          test-lab
connection.uuid:                        05abfd5e-324e-4461-844e-8501ba704773
connection.interface-name:              ens9
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.timestamp:                   1410428968
connection.read-only:                   no
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:                 
connection.gateway-ping-timeout:        0[出力は省略されています]
-p, --pretty オプションを使用すると、出力にタイトルバナーが追加され、セクションが分けられます。

例2.2 インタラクティブエディターを使用して静的イーサネット接続を設定する

インタラクティブエディターを使用して静的イーサネット接続を設定するには、以下のコマンドを実行します。
~]$ nmcli con edit type ethernet con-name ens3

===| nmcli interactive connection editor |===

Adding a new '802-3-ethernet' connection

Type 'help' or '?' for available commands.
Type 'describe [>setting<.>prop<]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
nmcli> set ipv4.addresses 192.168.122.88/24
Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
nmcli>
nmcli> save temporary
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? [yes] no
nmcli> save
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? [yes] yes
Connection 'ens3' (704a5666-8cbd-4d89-b5f9-fa65a3dbc916) successfully saved.
nmcli> quit
~]$
デフォルトの動作では、接続プロファイルが永続的に保存されます。必要な場合は save temporary コマンドで、プロファイルを次回の再起動時までメモリーにだけ保持することもできます。

特定のデバイスにプロファイルをロックする

特定のデバイスにプロファイルをロックするために、ここまでのコマンド例ではインターフェイス名が含まれています。例を示します。
nmcli connection add type ethernet con-name connection-name ifname interface-name
互換性のあるイーサネットインターフェイスすべてでプロファイルを利用可能とするには、以下のコマンドを実行します。
nmcli connection add type ethernet con-name connection-name ifname "*"
特定のインターフェイスを指定しない場合でも、ifname 属性を使用する必要があることに注意してください。互換性のあるデバイスすべてでプロファイルを使用可能とするために、ワイルドカード記号 * を使用しています。
プロファイルを特定の MAC アドレスにロックするには、以下の形式のコマンドを実行します。
nmcli connection add type ethernet con-name "connection-name" ifname "*" mac 00:00:5E:00:53:00

Wi-Fi 接続を追加する

利用可能な Wi-Fi アクセスポイントを表示するには、以下のコマンドを実行します。
~]$ nmcli dev wifi list
  SSID            MODE  CHAN  RATE     SIGNAL  BARS  SECURITY
  FedoraTest     Infra  11    54 MB/s  98      ▂▄▆█  WPA1
  Red Hat Guest  Infra  6     54 MB/s  97      ▂▄▆█  WPA2
  Red Hat        Infra  6     54 MB/s  77      ▂▄▆_  WPA2 802.1X
* Red Hat        Infra  40    54 MB/s  66      ▂▄▆_  WPA2 802.1X
  VoIP           Infra  1     54 MB/s  32      ▂▄__  WEP
  MyCafe         Infra  11    54 MB/s  39      ▂▄__  WPA2
静的 IP 設定の Wi-Fi 接続プロファイルを作成し、自動 DNS アクセス割り当てを許可するには、以下のコマンドを実行します。
~]$ nmcli con add con-name MyCafe ifname wlan0 type wifi ssid MyCafe \
ip4 192.168.100.101/24 gw4 192.168.100.1
WPA2 パスワードをたとえば caffeine に設定するには、以下のコマンドを実行します。
~]$ nmcli con modify MyCafe wifi-sec.key-mgmt wpa-psk
~]$ nmcli con modify MyCafe wifi-sec.psk caffeine
パスワードのセキュリティに関する情報は、『Red Hat Enterprise Linux 7 セキュリティガイド』 を参照してください。
Wi-Fi のステータスを変更するには、以下の形式のコマンドを実行します。
~]$ nmcli radio wifi [on | off ]

特定プロパティーの変更

特定のプロパティー、たとえば mtu、をチェックするには、以下のコマンドを実行します。
~]$ nmcli connection show id 'MyCafe' | grep mtu
802-11-wireless.mtu:                     auto
設定のプロパティーを変更するには、以下のコマンドを実行します。
~]$ nmcli connection modify id 'MyCafe' 802-11-wireless.mtu 1350
変更を確認するには、以下のコマンドを実行します。
~]$ nmcli connection show id 'MyCafe' | grep mtu
802-11-wireless.mtu:                     1350
NetworkManager802-3-ethernet802-11-wireless といったパラメーターを設定として参照し、mtu を設定のプロパティーとして参照することに留意してください。プロパティーおよびそれらの設定に関する詳細情報は、nm-settings(5) man ページを参照してください。

2.3.3. nmcli を使った静的ルートの設定

nmcli ツールを使って静的ルートを設定するには、コマンドラインもしくはインタラクティブエディターモードを使用することできます。

例2.3 nmcli を使った静的ルートの設定

コマンドラインを使用して、静的ルートを既存のイーサネット接続用に設定するには、以下のコマンドを実行します。
~]# nmcli connection modify eth0 +ipv4.routes "192.168.122.0/24 10.10.10.1"
これで 192.168.122.0/24 サブネットへのトラフィックが 10.10.10.1 のゲートウェイに向けられます。

例2.4 nmcli エディターを使って静的ルートを設定する

インタラクティブエディターを使用して、静的ルートをイーサネット接続用に設定するには、以下のコマンドを実行します。
~]$ nmcli con edit type ethernet con-name ens3

===| nmcli interactive connection editor |===

Adding a new '802-3-ethernet' connection

Type 'help' or '?' for available commands.
Type 'describe [>setting<.>prop<]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
nmcli> set ipv4.routes 192.168.122.0/24 10.10.10.1
nmcli>
nmcli> save persistent
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? [yes] yes
Connection 'ens3' (704a5666-8cbd-4d89-b5f9-fa65a3dbc916) successfully saved.
nmcli> quit
~]$