理想未来ってなんやねん

娘可愛い。お父さん頑張る。

nmcliでloopbackは変更できない?

今日はnmcliについて調べて書こうと思ったのだが、調べているうちに躓いた。
nmcliってloopbackの制御はできないのだろうか?

# nmcli dev
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  eth0       
lo      loopback  unmanaged  --         

loopbackはunmanagedと表示される。
NetworkManagerのCLI管理ツールであるnmcliが管理無し(STATE unmanaged)と言っているということは、NetworkManagerでは管理できないということなのか?

loopbackのデバイス情報を見てみる。

# nmcli dev show lo
GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          10 (unmanaged)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            

GENERAL.TYPEがloopbackになっている。

nmcli con addコマンドのhelpを見てみる。

# nmcli con add help
Usage: nmcli connection add { ARGUMENTS | help }

ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS IP_OPTIONS

  COMMON_OPTIONS:
                  type <type>
                  ifname <interface name> | "*"
                  [con-name <connection name>]
                  [autoconnect yes|no]

                  [save yes|no]

  TYPE_SPECIFIC_OPTIONS:
    ethernet:     [mac <MAC address>]
                  [cloned-mac <cloned MAC address>]
                  [mtu <MTU>]

    wifi:         ssid <SSID>
                  [mac <MAC address>]
                  [cloned-mac <cloned MAC address>]
                  [mtu <MTU>]
                  [mode infrastructure|ap|adhoc]

    wimax:        [mac <MAC address>]
                  [nsp <NSP>]

    pppoe:        username <PPPoE username>
                  [password <PPPoE password>]
                  [service <PPPoE service name>]
                  [mtu <MTU>]
                  [mac <MAC address>]

    gsm:          apn <APN>
                  [user <username>]
                  [password <password>]

    cdma:         [user <username>]
                  [password <password>]

    infiniband:   [mac <MAC address>]
                  [mtu <MTU>]
                  [transport-mode datagram | connected]
                  [parent <ifname>]
                  [p-key <IPoIB P_Key>]

    bluetooth:    [addr <bluetooth address>]
                  [bt-type panu|dun-gsm|dun-cdma]

    vlan:         dev <parent device (connection  UUID, ifname, or MAC)>
                  id <VLAN ID>
                  [flags <VLAN flags>]
                  [ingress <ingress priority mapping>]
                  [egress <egress priority mapping>]
                  [mtu <MTU>]

    bond:         [mode balance-rr (0) | active-backup (1) | balance-xor (2) | broadcast (3) |
                        802.3ad    (4) | balance-tlb   (5) | balance-alb (6)]
                  [primary <ifname>]
                  [miimon <num>]
                  [downdelay <num>]
                  [updelay <num>]
                  [arp-interval <num>]
                  [arp-ip-target <num>]
                  [lacp-rate slow (0) | fast (1)]

    bond-slave:   master <master (ifname, or connection UUID or name)>

    team:         [config <file>|<raw JSON data>]

    team-slave:   master <master (ifname, or connection UUID or name)>
                  [config <file>|<raw JSON data>]

    bridge:       [stp yes|no]
                  [priority <num>]
                  [forward-delay <2-30>]
                  [hello-time <1-10>]
                  [max-age <6-40>]
                  [ageing-time <0-1000000>]
                  [mac <MAC address>]

    bridge-slave: master <master (ifname, or connection UUID or name)>
                  [priority <0-63>]
                  [path-cost <1-65535>]
                  [hairpin yes|no]

    vpn:          vpn-type vpnc|openvpn|pptp|openconnect|openswan|libreswan|ssh|l2tp|iodine|...
                  [user <username>]

    olpc-mesh:    ssid <SSID>
                  [channel <1-13>]
                  [dhcp-anycast <MAC address>]

    adsl:         username <username>
                  protocol pppoa|pppoe|ipoatm
                  [password <password>]
                  [encapsulation vcmux|llc]

  IP_OPTIONS:
                  [ip4 <IPv4 address>] [gw4 <IPv4 gateway>]
                  [ip6 <IPv6 address>] [gw6 <IPv6 gateway>]

typeにloopbackが存在しない。

適当に追加してみる。

# nmcli connection add type ethernet ifname 'lo:0' con-name loopback autoconnect yes save yes
# nmcli connection mod lo\:0 ipv4.method manual ipv4.addresses '172.16.1.1/32'
# nmcli connection up lo\:0
Error: Connection activation failed: No suitable device found for this connection.

うまくいかない。
保存されたファイルを確認してみる。

# ls -l /etc/sysconfig/network-scripts/ifcfg-lo*
-rw-r--r--. 1 root root 254  2月 17 13:55 /etc/sysconfig/network-scripts/ifcfg-lo
-rw-r--r--  1 root root 275  2月 25 02:48 /etc/sysconfig/network-scripts/ifcfg-lo-0
# cat /etc/sysconfig/network-scripts/ifcfg-lo-0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=lo:0
UUID=bfb08758-695e-4412-9754-8ac94a99ec5a
DEVICE=lo:0
ONBOOT=yes
IPADDR=172.16.1.1
PREFIX=32
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

ファイル名が異なり、ファイルの中身も若干異なる。

とりあえずファイルをリネームしてみる。

# /etc/sysconfig/network-scripts/
# mv ifcfg-lo-0 ifcfg-lo\:0

ifupで立ち上げてみる。

# ifup lo\:0
Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo:0'
Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo:0'
Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo:0'
Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo:0'

エラーは出るけど、一応立ち上がる。
状態を確認する。

# ip addr show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 172.16.1.1/32 brd 172.16.1.1 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

立ち上がった。

DRなLVS構成を組むときに負荷分散先となるサーバーにloopbackでIPアドレスを追加するということを行うのだが、CentOS 7で最適な方法が今一わかっていない。
後日また調べてみる。