nmcliの処方箋

## デバイスの確認
```
# nmcli device
DEVICE  TYPE      STATE         CONNECTION
eth0    ethernet  connected     System eth0
eth1    ethernet  disconnected  --
eth2    ethernet  disconnected  --
lo      loopback  unmanaged     --
```

deviceは省略してdでもいい。

```
# nmcli d
DEVICE  TYPE      STATE         CONNECTION
eth0    ethernet  connected     System eth0
eth1    ethernet  disconnected  --
eth2    ethernet  disconnected  --
lo      loopback  unmanaged     --
```

デバイス毎の詳しい状態はshowを使う。

```
# nmcli device show eth0
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         9C:A3:BA:06:C8:81
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     System eth0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         xxx.xxx.xxx.xxx/23
IP4.GATEWAY:                            xxx.xxx.xxx.xxx
IP4.ROUTE[1]:                           dst = xxx.xxx.xxx.xxx/23, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = xxx.xxx.xxx.xxx, mt = 100
IP4.DNS[1]:                             xxx.xxx.xxx.xxx
IP4.DNS[2]:                             xxx.xxx.xxx.xxx
IP6.GATEWAY:                            --
```

## デバイスの接続
```
# nmcli device connect eth0
Device 'eth0' successfully activated with '5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03'.
```

## デバイスの切断

コンソール上から実行したいところ. ミスったら端末切断されてしまうので.

```
# nmcli device disconnect eth0
```

## 接続プロファイルの確認

```
# nmcli connection show
NAME         UUID                                  TYPE      DEVICE
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0
System eth1  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  ethernet  --
System eth2  3a73717e-65ab-93e8-b518-24f5af32dc0d  ethernet  --
```

connectionはcに、showはsに省略できる。

```
# nmcli c s
NAME         UUID                                  TYPE      DEVICE
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0
System eth1  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  ethernet  --
System eth2  3a73717e-65ab-93e8-b518-24f5af32dc0d  ethernet  --
```

起動中の接続プロファイルのみを表示したかったら--activeを付ける。

```
# nmcli connection show --active
NAME         UUID                                  TYPE      DEVICE
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0
```

## 接続プロファイルの追加

```
# nmcli connection add type ethrnet ifname eth0 con-name eth0
```


## 接続プロファイルの修正

先頭に+を付けると値が追加される。

```
# nmcli connection modify eth0 ipv4.method mamual +ipv4.address xxx.xxx.xxx.xxx/24 ipv4.gateway xxx.xxx.xxx.xxx
```

逆に-を付けると値が削除される。

```
# nmcli connection modify eth0 ipv4.method mamual -ipv4.address xxx.xxx.xxx.xxx/24 ipv4.gateway xxx.xxx.xxx.xxx
```

""で設定を取り除く。

```
# nmcli connection modify eth0 ipv4.method auto ipv4.address "" ipv4.gateway ""
```

後述のnmcli c u eth0で接続プロファイルの更新を反映する。

## 接続のup(アクティベート)

既にアクティベートしているNICに対して再度upをすると、設定プロファイルの再読み込みが行われる. 

```
# nmcli connection up eth0
```

## 接続のdown

デバイスの接続解除(nmcli d disconnect)と似ているけど、少し挙動が違うので注意.。nmcli d disconnectでデバイス接続解除すると、サーバ再起動時にデバイスが自動起動しなくなってしまう。nmcli c downの場合はデバイスの自動起動に影響はない。恒久的にデバイスを使わないようにするなら、nmcli d disconnectを使う、計画作業などで一時的にNICを落としたいだけなら、nmcli c downでよさそう。

```
# nmcli connection down eth0
```

## ルーティング設定を追加

パケットが通らないGWを指定しても接続プロファイルの設定は成功するが、アクティベート時にエラーが発生し、デバイスの接続が解除されてしまうので注意。

```
# nmcli c m eth0 +ipv4.route "xxx.xxx.xxx.xxx/24 xxx.xxx.xxx.xxx"
# nmcli c u eth0
```


## 対話的に接続プロファイルを編集する

```
# nmcli connection edit
Valid connection types: adsl, bluetooth, bond, bridge, cdma, dummy, generic, gsm, infiniband, ip-tunnel, macsec, macvlan, 802-11-olpc-mesh (olpc-mesh), ovs-bridge, ovs-interface, ovs-port, pppoe, team, tun, vlan, vpn, vxlan, wimax, 802-3-ethernet (ethernet), 802-11-wireless (wifi), bond-slave, bridge-slave, team-slave
Enter connection type:
```

省略形だとこんな感じになる。

```
# nmcli c e
Valid connection types: adsl, bluetooth, bond, bridge, cdma, dummy, generic, gsm, infiniband, ip-tunnel, macsec, macvlan, 802-11-olpc-mesh (olpc-mesh), ovs-bridge, ovs-interface, ovs-port, pppoe, team, tun, vlan, vpn, vxlan, wimax, 802-3-ethernet (ethernet), 802-11-wireless (wifi), bond-slave, bridge-slave, team-slave
Enter connection type:
```

```
# nmcli connection edit
Valid connection types: adsl, bluetooth, bond, bridge, cdma, dummy, generic, gsm, infiniband, ip-tunnel, macsec, macvlan, 802-11-olpc-mesh (olpc-mesh), ovs-bridge, ovs-interface, ovs-port, pppoe, team, tun, vlan, vpn, vxlan, wimax, 802-3-ethernet (ethernet), 802-11-wireless (wifi), bond-slave, bridge-slave, team-slave
Enter connection type: ethernet

===| nmcli interactive connection editor |===

Adding a new '802-3-ethernet' connection

Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, ipv4, ipv6, tc, proxy
nmcli> help
------------------------------------------------------------------------------
---[ Main menu ]---
goto     [<setting> | <prop>]        :: go to a setting or property
remove   <setting>[.<prop>] | <prop> :: remove setting or reset property value
set      [<setting>.<prop> <value>]  :: set property value
describe [<setting>.<prop>]          :: describe property
print    [all | <setting>[.<prop>]]  :: print the connection
verify   [all | fix]                 :: verify the connection
save     [persistent|temporary]      :: save the connection
activate [<ifname>] [/<ap>|<nsp>]    :: activate the connection
back                                 :: go one level up (back)
help/?   [<command>]                 :: print this help
nmcli    <conf-option> <value>       :: nmcli configuration
quit                                 :: exit nmcli
------------------------------------------------------------------------------
```