【Linux】【コマンド】nmcli のメモ

nmcli のバージョンによっては本ページの手順は実行できないこともあり得るので注意すること。
本ページの nmcli バージョン*1は 1.10.6 である。

 

概要

ネットワークの設定は nmcli で行うことが標準化してきているので、nmcli について確認する。
nmcli は対話形式のコマンドラインツールであり、全てが実現できる模様。
なお、コンソールベースでの nmcli-tui というものもあるらしい。(参考)

f:id:dnkrnka:20180929225807p:plain

1.3. NetworkManager について - Red Hat Customer Portal

 

インストール

Ubuntu 18.04 ではデフォルトで NetworkManager がインストールされている。
もしも NetworkManager が無い場合は次のようにインストールする。

% sudo apt-get install NetworkManager

 

NetworkManager デーモン

もしも自動起動ONとなっていなければ、sudo systemctl enable NetworkManager を実行すること。

% systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-09-29 20:17:19 JST; 2h 32min ago
     Docs: man:NetworkManager(8)
 Main PID: 876 (NetworkManager)
    Tasks: 4 (limit: 4915)
   CGroup: /system.slice/NetworkManager.service
           ├─ 876 /usr/sbin/NetworkManager --no-daemon
           └─1082 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /run/dhclient-eno1.pid -lf /var/lib/NetworkManager/dhcl

 

コマンド実施例

NIC 全体の状態を表示する

% nmcli device
DEVICE           TYPE      STATE     CONNECTION 
eno1             ethernet  接続済み  有線接続 1 
docker0          bridge    接続済み  docker0    
wlx3476c58ecc37  wifi      切断済み  --         
veth86fc629      ethernet  管理無し  --         
lo               loopback  管理無し  --        

 

NIC 個別の状態を表示する

「eno1」の状態を表示する。

% nmcli device show eno1
GENERAL.DEVICE:                         eno1
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         12:34:56:78:9A:BC
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (接続済み)
GENERAL.CONNECTION:                     有線接続 1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               オン
IP4.ADDRESS[1]:                         192.168.10.72/24
IP4.GATEWAY:                            192.168.10.231
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 192.168.10.231, mt = 100
IP4.ROUTE[2]:                           dst = 192.168.10.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[3]:                           dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]:                             8.8.8.8
IP4.DNS[2]:                             208.62.222.222
IP6.ADDRESS[1]:                         fe80::baca:baca:baca:baca/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = ff00::/8, nh = ::, mt = 256, table=255
IP6.ROUTE[2]:                           dst = fe80::/64, nh = ::, mt = 256
IP6.ROUTE[3]:                           dst = fe80::/64, nh = ::, mt = 100

 
 

DHCP の操作

コネクションの一覧を表示する。
% nmcli connection show
NAME        UUID                                  TYPE      DEVICE  
docker0     5964aa7f-d578-4b5d-82b0-63ebcbc63853  bridge    docker0 
有線接続 1  8102e8d8-9683-3123-b9d2-429fdddb5773  ethernet  eno1    

 

コネクション情報から DHCP4 の情報を抽出する

一行目の ipv4.method の値が auto となっているので、DHCP が有効になっている。

% nmcli --fields ipv4 connection show '有線接続 1' 
ipv4.method:                            auto
ipv4.dns:                               --
(--snip--)
ipv4.never-default:                     いいえ
ipv4.may-fail:                          はい
ipv4.dad-timeout:                       -1 (default)
% nmcli --fields ipv4 connection show '有線接続 1' 
DHCP4.OPTION[1]:                        domain_name_servers = 8.8.8.8 208.67.222.222
DHCP4.OPTION[2]:                        requested_domain_search = 1
DHCP4.OPTION[3]:                        requested_netbios_name_servers = 1
DHCP4.OPTION[4]:                        requested_time_offset = 1
(--snip--)

 

DHCP を無効にする
  • IPアドレス 192.168.10.2
  • プレフィクス長 24
  • デフォルトGW 192.168.10.231 *2

という固定設定にする。設定を変更したら、NIC の再起動が必要になる。

% sudo nmcli connection modify '有線接続 1' ipv4.method manual ipv4.addresses "192.168.10.2/24" ipv4.gateway "192.168.10.231"

NIC を無効にした後に、再度有効にする。

%  sudo nmcli connection down '有線接続 1'
接続 '有線接続 1' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/1)
% sudo nmcli connection up '有線接続 1'
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)

 
設定が反映されていることを確認する。
IPアドレスは 192.168.10.2/24 となり, デフォルトGW も正しい。

% nmcli --fields ipv4 connection show '有線接続 1' 
ipv4.method:                            manual
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.10.2/24
ipv4.gateway:                           192.168.10.231
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.ignore-auto-routes:                いいえ
ipv4.ignore-auto-dns:                   いいえ
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                はい
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     いいえ
ipv4.may-fail:                          はい
ipv4.dad-timeout:                       -1 (default)

 

DHCP を有効にする
 nmcli con mod  '有線接続 1' ipv4.method auto
% sudo nmcli connection down '有線接続 1'
接続 '有線接続 1' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
% sudo nmcli connection up '有線接続 1'
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)

 
 
 

*1:nmcli --version で確認した

*2:ip route の default とある行が該当する