手当たり次第に書くんだ

飽きっぽいのは本能

目次に戻る

概要

nmcliを使用してネットワーク設定を行います。nmcliはNetworkManagerを設定するためのCLIツールです。本稿ではnmcliを使用したステータス確認までを取り上げます。

前提条件

OS

CentOS Stream 8を使用します。

SELinux

有効です。無効にする場合はこちらを参照して下さい。

Firewalld

無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。

その他

  • nmcliではcon-nameとifnameを省略可能(またはどちらかを)ですが、それらが同じ名前ではどちらに対して設定しているのか分かりづらくなる為、本稿の例ではcon-nameとifnameを明示的に設定しています。また、インストール時に割り当てられたcon-nameも予め変更しています。

前提条件

NetworkManagerは従来のnetwork-scriptsに変わるものとされていますが、実態はnetwork-scriptsのフロントエンドであり、その他のiproute2等もまとめて管理できるようにしたものという感じです。今後は中身も変わっていくのかなと思います。

はじめに

NetwordManagerにはdeviceとconnectionの概念があり、device=ネットワークアダプタ(ネットワーク設定ではない)、connection=ネットワーク設定(これにdeviceを割り当てる)となります。connectionはプロファイルとも呼ばれます。

ステータス確認

まずは現状を確認しましょう。

deviceのステータス確認

nmcli device statusで必要最小限の情報を取得することができます。下記の例ではens33, ens34, ens35がdeviceとして認識されており「接続済み」の状態です。loはループバックです。「管理無し」の表示の通りNetworkManagerでは管理されていません(ループバック用のconnectionも存在しません)。

[root@centos ~]# nmcli device status
DEVICE  TYPE      STATE     CONNECTION
ens33   ethernet  接続済み  con-ens33
ens34   ethernet  接続済み  con-ens34
ens35   ethernet  接続済み  con-ens35
lo      loopback  管理無し  --

showオプションではdevice毎の詳細な情報を確認できます。deviceにconnectionが割り当てられている場合はconnectionに設定されたActiveなネットワーク設定も合わせて確認できます。下記の例ではens33のみ抜粋しています。

[root@centos ~]# nmcli device show
GENERAL.DEVICE:                         ens33
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:9F:69:5F
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (接続済み)
GENERAL.CONNECTION:                     con-ens33
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               オン
IP4.ADDRESS[1]:                         192.168.13.19/24
IP4.GATEWAY:                            192.168.13.2
IP4.ROUTE[1]:                           dst = 192.168.13.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.13.2, mt = 100
IP4.DNS[1]:                             192.168.13.2
IP6.ADDRESS[1]:                         fe80::20c:29ff:fe9f:695f/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

connectionのステータス確認

nmcli connection showで必要最小限の情報を取得することができます。

[root@centos ~]# nmcli connection show
NAME       UUID                                  TYPE      DEVICE
con-ens33  0b6ad2b8-4599-4f37-b077-47624d48bf55  ethernet  ens33
con-ens34  d69129f7-39d8-493e-9080-a68bd79e9ea9  ethernet  ens34
con-ens35  c011fecc-7da1-41af-83e3-15b93f9ceffa  ethernet  ens35

nmcli connection showの末尾にに対象のconnection名を付けると詳細な設定値が表示されます。出力される情報が多い為、ここではens33の出力結果のみを掲載します。

重要なポイントとしてconnection~proxyは次回起動時に有効となる設定であり、GENERAL~IP6は現在の有効な設定であることです。これらの設定項目名は実際にnmcliで編集する際に指定する項目と同じです。

[root@centos ~]# nmcli connection show ens33
次回起動時に有効となる設定
connection

connectionの設定値が表示されます。

connection.id:                          con-ens33
connection.uuid:                        0b6ad2b8-4599-4f37-b077-47624d48bf55
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens33
connection.autoconnect:                 はい
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1621220869
connection.read-only:                   いいえ
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     不明
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
connection.wait-device-timeout:         -1
802-3-ethernet

802-3-ethernetの設定値が表示されます。これはconnection.typeが802-3-ethernetで作成されたconnectionである為です。

802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          いいえ
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist:   --
802-3-ethernet.mtu:                     自動
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
ipv4

ipv4(IPv4アドレス)の設定値が表示されます。

ipv4.method:                            manual
ipv4.dns:                               192.168.13.2
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.13.19/24
ipv4.gateway:                           192.168.13.2
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.dad-timeout:                       -1 (default)
ipv4.dhcp-vendor-class-identifier:      --
ipv4.dhcp-reject-servers:               --
ipv6

ipv6(IPv6アドレス)の設定値が表示されます。

ipv6.method:                            auto
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       --
ipv6.dns-priority:                      0
ipv6.addresses:                         --
ipv6.gateway:                           --
ipv6.routes:                            --
ipv6.route-metric:                      -1
ipv6.route-table:                       0 (unspec)
ipv6.routing-rules:                     --
ipv6.ignore-auto-routes:                いいえ
ipv6.ignore-auto-dns:                   いいえ
ipv6.never-default:                     いいえ
ipv6.may-fail:                          はい
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.addr-gen-mode:                     eui64
ipv6.ra-timeout:                        0 (default)
ipv6.dhcp-duid:                         --
ipv6.dhcp-iaid:                         --
ipv6.dhcp-timeout:                      0 (default)
ipv6.dhcp-send-hostname:                はい
ipv6.dhcp-hostname:                     --
ipv6.dhcp-hostname-flags:               0x0 (none)
ipv6.token:                             --
proxy

proxyの設定値が表示されます。

proxy.method:                           none
proxy.browser-only:                     いいえ
proxy.pac-url:                          --
proxy.pac-script:                       --
現在の有効な設定
GENERAL

GENERAL(IPv4/IPv6以外の)の現在のステータスが表示されます。

GENERAL.NAME:                           con-ens33
GENERAL.UUID:                           0b6ad2b8-4599-4f37-b077-47624d48bf55
GENERAL.DEVICES:                        ens33
GENERAL.IP-IFACE:                       ens33
GENERAL.STATE:                          アクティベート済み
GENERAL.DEFAULT:                        はい
GENERAL.DEFAULT6:                       いいえ
GENERAL.SPEC-OBJECT:                    --
GENERAL.VPN:                            いいえ
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/1
GENERAL.ZONE:                           --
GENERAL.MASTER-PATH:                    --
IP4

IPv4(IPv4アドレス)の現在のステータスが表示されます。

IP4.ADDRESS[1]:                         192.168.13.19/24
IP4.GATEWAY:                            192.168.13.2
IP4.ROUTE[1]:                           dst = 192.168.13.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.13.2, mt = 100
IP4.DNS[1]:                             192.168.13.2
IP6

IPv6(IPv6アドレス)の現在のステータスが表示されます。

IP6.ADDRESS[1]:                         fe80::20c:29ff:fe9f:695f/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

/etc/sysconfig/network-scripts

従来通り、NetwordManagerでも設定の実体は/etc/sysconfig/network-scriptsにifcfg-[connection-name]として保存されます。前述のconnection~proxyの範囲の値に相当します。NetwordManagerが無かった時代と比較するとUUIDの設定があり、UUIDでNetwordManagerが識別して管理していることが分かります。この為、UUIDさえ変えなければファイルを直接書き換えることも可能です。尚、出力結果は設定の順序などにより変わりますので注意して下さい。

ファイル名はifcfg-*以外の制限は無いようです。インストール後はconnectionと同じ名前ですが、nmcliでcon-nameを変更してもこのファイル名が変わるわけではありませんので、ファイル内のUUIDで識別していると思います。

[root@centos ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
# Generated by parse-kickstart
TYPE=Ethernet
DEVICE=ens33
UUID=0b6ad2b8-4599-4f37-b077-47624d48bf55
ONBOOT=yes
IPADDR=192.168.13.19
NETMASK=255.255.255.0
GATEWAY=192.168.13.2
IPV6INIT=yes
IPV6_AUTOCONF=yes
DNS1=192.168.13.2
PROXY_METHOD=none
BROWSER_ONLY=no
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=con-ens33
BOOTPROTO=none

ifconfig

伝統的なifconfigはconnection名ではなくdevice名です。ifconfigは反射的に使ってしまいますね。

[root@centos ~]# ifconfig
ens33: flags=4163  mtu 1500
        inet 192.168.13.19  netmask 255.255.255.0  broadcast 192.168.13.255
        inet6 fe80::20c:29ff:fe9f:695f  prefixlen 64  scopeid 0x20
        ether 00:0c:29:9f:69:5f  txqueuelen 1000  (Ethernet)
        RX packets 14668  bytes 2120609 (2.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8677  bytes 1069307 (1.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens34: flags=4163  mtu 1500
        inet 192.168.23.88  netmask 255.255.255.0  broadcast 192.168.23.255
        inet6 fe80::20c:29ff:fe9f:6969  prefixlen 64  scopeid 0x20
        ether 00:0c:29:9f:69:69  txqueuelen 1000  (Ethernet)
        RX packets 2687  bytes 307030 (299.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 431  bytes 48145 (47.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens35: flags=4163  mtu 1500
        inet6 fe80::20c:29ff:fe9f:6973  prefixlen 64  scopeid 0x20
        ether 00:0c:29:9f:69:73  txqueuelen 1000  (Ethernet)
        RX packets 2754  bytes 327039 (319.3 KiB)
        RX errors 0  dropped 59  overruns 0  frame 0
        TX packets 167  bytes 12170 (11.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 636  bytes 54060 (52.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 636  bytes 54060 (52.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

目次に戻る

CentOS 8 NetworkManager nmcli

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る