概要
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=4163mtu 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