定時帰る術-Linuxネットワーク管理（nmcliコマンド）


個人的にはvi /etc/sysconfig/network-scripts/ifcfg-XXXより、nmcliの方がいいと思う。

/etc/sysconfig/network-scripts/ifcfg-XXXを修正した場合は、基本的にはNetworkManagerの再起動が必要だが、影響範囲が広すぎ
nmcliで設定変更を実施する場合：大体はnmcli c u XXXで有効できるので、いいかと思う



### name変更
NAMEとDEVICEの紐づけを確認
```
[root@test ~]# nmcli c s
NAME    UUID                                  TYPE      DEVICE
enp0s3  6e9a4d62-1e43-43c9-86d1-7705582c9a17  ethernet  enp0s3
enp0s8  a204e48e-9626-4eb2-ac01-dc13583e87fd  ethernet  enp0s8
````

ip aはDEVICEでNIC名を表示することが分かった
```
[root@test ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:9d:99:92 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 70639sec preferred_lft 70639sec
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:60:2e:b8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.102/24 brd 192.168.56.255 scope global dynamic noprefixroute enp0s8
       valid_lft 443sec preferred_lft 443sec
    inet6 fe80::a00:27ff:fe60:2eb8/64 scope link
       valid_lft forever preferred_lft forever
```
大好きな定義ファイル
```
[root@test ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=enp0s3
UUID=6e9a4d62-1e43-43c9-86d1-7705582c9a17
DEVICE=enp0s3
ONBOOT=yes
IPV6_DISABLED=yes
```
ここでenp0s3→eth1に修正してみる
nmcliで定義ファイルも修正してくれた
```
[root@test ~]# nmcli con mod enp0s3 connection.id eth1
[root@test ~]# nmcli c s
NAME    UUID                                  TYPE      DEVICE
eth1    6e9a4d62-1e43-43c9-86d1-7705582c9a17  ethernet  enp0s3
enp0s8  a204e48e-9626-4eb2-ac01-dc13583e87fd  ethernet  enp0s8
[root@test ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=eth1
UUID=6e9a4d62-1e43-43c9-86d1-7705582c9a17
DEVICE=enp0s3
ONBOOT=yes
IPV6_DISABLED=yes
```
NAMEがenp0s3となるNICもないから、怒られた
```
[root@test ~]# nmcli con up enp0s3
エラー: 不明な接続 'enp0s3'.
```
変更後のNAMEでUPしてみる
UPできた。
↓の通り、ifcfgファイルのip aの表示が変わらない
NAMEとDEVICEの紐づけだけ変わった
```
[root@test ~]# nmcli con up eth1
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@test ~]# ll /etc/sysconfig/network-scripts/
合計 8
-rw-r--r--. 1 root root 205 10月 19 15:14 ifcfg-enp0s3
-rw-r--r--. 1 root root 189  9月 26 16:57 ifcfg-enp0s8
[root@test ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:9d:99:92 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86378sec preferred_lft 86378sec
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:60:2e:b8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.102/24 brd 192.168.56.255 scope global dynamic noprefixroute enp0s8
       valid_lft 544sec preferred_lft 544sec
    inet6 fe80::a00:27ff:fe60:2eb8/64 scope link
       valid_lft forever preferred_lft forever
[root@test ~]#
[root@test ~]# nmcli c s
NAME    UUID                                  TYPE      DEVICE
eth1    6e9a4d62-1e43-43c9-86d1-7705582c9a17  ethernet  enp0s3
enp0s8  a204e48e-9626-4eb2-ac01-dc13583e87fd  ethernet  enp0s8
```

nmcli modコマンドが有効になるタイミング：即時
viで定義ファイル修正する場合：NICのup/downではなく、NetworkManagerから定義ファイルを再読み込め時（reloadではなく、restartだ）






### /etc/sysconfig/network-scripts/配下のifcfg-XXXファイルの作成と削除
作成：
```
[root@test ~]# nmcli con add type ethernet ifname bbb con-name bbb
接続 'bbb' (890b202e-2b81-4187-b9b0-cd10f4bf2ef3) が正常に追加されました。
[root@test ~]# ll /etc/sysconfig/network-scripts/
合計 16
-rw-r--r--  1 root root 276 10月 19 15:29 ifcfg-bbb
-rw-r--r--  1 root root 206 10月 19 15:24 ifcfg-enp0s3
-rw-r--r--. 1 root root 189  9月 26 16:57 ifcfg-enp0s8
[root@test ~]# nmcli c s
NAME          UUID                                  TYPE      DEVICE
eth111        6e9a4d62-1e43-43c9-86d1-7705582c9a17  ethernet  enp0s3
enp0s8        a204e48e-9626-4eb2-ac01-dc13583e87fd  ethernet  enp0s8
bbb           890b202e-2b81-4187-b9b0-cd10f4bf2ef3  ethernet  --
```
削除
```
[root@test ~]# nmcli con del bbb
接続 'bbb' (890b202e-2b81-4187-b9b0-cd10f4bf2ef3) が正常に削除されました。
[root@test ~]#
[root@test ~]#
[root@test ~]#
[root@test ~]#
[root@test ~]# ll /etc/sysconfig/network-scripts/
合計 12
-rw-r--r--  1 root root 206 10月 19 15:24 ifcfg-enp0s3
-rw-r--r--. 1 root root 189  9月 26 16:57 ifcfg-enp0s8
[root@test ~]# nmcli c s
NAME          UUID                                  TYPE      DEVICE
eth111        6e9a4d62-1e43-43c9-86d1-7705582c9a17  ethernet  enp0s3
enp0s8        a204e48e-9626-4eb2-ac01-dc13583e87fd  ethernet  enp0s8
```





### いろいろな設定：

例として、IP設定したが、/etc/sysconfig/network-scripts/ifcfg-XXXファイルに記載されている項目は全部できると思います。
（ nmcli con mod eth111まで入力しておいて、具体的な項目をtabで確認したほうがいいかも）
```
[root@test ~]# nmcli c s
NAME          UUID                                  TYPE      DEVICE
eth111        6e9a4d62-1e43-43c9-86d1-7705582c9a17  ethernet  enp0s3
enp0s8        a204e48e-9626-4eb2-ac01-dc13583e87fd  ethernet  enp0s8
ethernet-aaa  22972f3d-f184-488d-8f92-11d351bb1c54  ethernet  --
[root@test ~]#
[root@test ~]#
[root@test ~]#
[root@test ~]# nmcli con mod eth111 ipv4.method manual ipv4.addresses "1.1.1.1/24"
[root@test ~]#
[root@test ~]#
[root@test ~]#
[root@test ~]#
[root@test ~]#
[root@test ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:9d:99:92 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 85299sec preferred_lft 85299sec
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:60:2e:b8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.102/24 brd 192.168.56.255 scope global dynamic noprefixroute enp0s8
       valid_lft 399sec preferred_lft 399sec
    inet6 fe80::a00:27ff:fe60:2eb8/64 scope link
       valid_lft forever preferred_lft forever
[root@test ~]# nmcli c u eth111
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
```
NetworkManagerがrestartしなくても有効できる。
（逆にNetworkManagerを再起動にしても、有効になれない。他のサービスへの影響がでないように設計されているかも）
```
[root@test ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:9d:99:92 brd ff:ff:ff:ff:ff:ff
    inet 1.1.1.1/24 brd 1.1.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:60:2e:b8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.102/24 brd 192.168.56.255 scope global dynamic noprefixroute enp0s8
       valid_lft 385sec preferred_lft 385sec
    inet6 fe80::a00:27ff:fe60:2eb8/64 scope link
       valid_lft forever preferred_lft forever
```
       
       
「+」、「-」
「+」：既存の上で追加する。
「-」：既存から削除する
「+」、「-」を指定しない場合は、上書きする
（chmodの「+」、「-」と同じ考え方
```
[root@test ~]# ip route
2.2.2.0/24 dev enp0s3 proto kernel scope link src 2.2.2.2 metric 100
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.102 metric 101
[root@test ~]# nmcli con mod eth111 +ipv4.routes "1.1.1.0/24 1.1.1.254"
[root@test ~]#
[root@test ~]#
[root@test ~]#
[root@test ~]#
[root@test ~]# ip route
2.2.2.0/24 dev enp0s3 proto kernel scope link src 2.2.2.2 metric 100
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.102 metric 101
[root@test ~]# nmcli c u eth111
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@test ~]# ip route
1.1.1.0/24 via 1.1.1.254 dev enp0s3 proto static metric 100
1.1.1.254 dev enp0s3 proto static scope link metric 100
2.2.2.0/24 dev enp0s3 proto kernel scope link src 2.2.2.2 metric 100
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.102 metric 101
```