NetworkManagerでネットワーク設定をする

#NetworkManagerとは
RHEL7のデフォルトのネットワークサービスです。
コマンドだけでネットワークの設定があれこれ簡単にできます。便利！
（RHEL6までのifcfgタイプのネットワーク設定も使えます。

これだけ知っていれば！という
ネットワークマネージャの基本操作をメモしていきます。

##インターフェースの表示
今見えてるインターフェースを表示します。

- nmcli connection **show**

```インターフェース表示
# nmcli connection show
名前         UUID                                  タイプ          デバイス
eno16777736  81b891c1-ce55-4cb6-802c-d7d98b637d0f  802-3-ethernet  eno16777736
```

##インターフェースの追加
最低限以下の項目を指定すれば追加されます。
正常に追加されるとその旨の文言が表示されます。

- nmcli connection **add** **ifname** [インターフェース名] **type** [インタフェースのタイプ]

```ruby:追加
# nmcli connection add ifname eno33554992 type ethernet
接続 'ethernet-eno33554992' (a476ad21-8d8a-4519-8b2c-1650bf0df463) が 正常に追加されました。
```

少しだけ上記の項目を説明すると…
`add`
新しくインターフェースを追加するときはaddを使います。

`ifname`
追加するインターフェース名の指定。
物理にしても仮想マシンにしても自動で生成されているもの
タブ補完で候補が表示されます。

`type`
インターフェースのタイプを指定します。
ethernetのほかにもbonding、teamingなどが指定できます。

表示コマンドで確認します。

```ruby:確認
# nmcli connection show
名前                  UUID                                  タイプ          デバイス
ethernet-eno33554992  a476ad21-8d8a-4519-8b2c-1650bf0df463  802-3-ethernet  eno33554992
eno16777736           81b891c1-ce55-4cb6-802c-d7d98b637d0f  802-3-ethernet  eno16777736

```

##インターフェースの起動・停止
nmcliコマンドであればインターフェースごとに起動・停止ができます。
ネットワークサービスごと再起動などしなくてもよいので気が楽ですね。

####起動
- nmcli connection **up** [インターフェース名]

```ruby:起動
# nmcli connection up ethernet-eno33554992
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
```

####停止
- nmcli connection **down** [インターフェース名]

```ruby:停止
# nmcli connection down ethernet-eno33554992
Connection 'ethernet-eno33554992' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
```

##インターフェースの詳細設定
インターフェースのその他の設定についても少しだけ。

####自動起動の有効化

- nmcli connection **modify** [インターフェース名] **connection.autoconnect yes**

```ruby:自動起動の有効化
# nmcli connection modify ethernet-eno33554992 connection.autoconnect yes 

```

`modify`
既存のインターフェースの設定を変更するときに使います。

`connection.autoconnect`
自動起動設定の指定をします。
デフォルトは無効化されています。
**yes**で有効化
**no**で無効化

####固定IPアドレスの設定

- nmcli connection **modify** [インターフェース名] **ipv4.method** manual **ipv4.addresses** [IPアドレス/プレフィックス] **ipv4.gateway** [ゲートウェイ]

```ruby:固定IPアドレスの設定
# nmcli connection modify ethernet-eno33554992 ipv4.method manual ipv4.addresses 192.168.2.130/24 ipv4.gateway 192.168.2.254
```

`ipv4.method`
固定IPアドレスを割り当てるときはmethodをmanualにします。
デフォルトはautoです。

`ipv4.addresses`
固定IPアドレスを指定します。
サブネットマスクも同時に設定します。

`ipv4.gateway`
ゲートウェイを指定します。

ちなみに、
IPv6も同様の形で指定できます。
無効化することもできます。

#補足
今回は設定ごとにコマンドを小分けにして記載しましたが、色んな設定を盛り盛りにして1行のコマンドでいろんな設定をすることもできます。
また、上記コマンドたちは省略もできますし、タブ補完がかなり効きます。
設定項目の指定に自信がないときはタブキーを連打しましょう。

例えば、表示コマンドなら下記でも十分です。
- nmcli c s

```ruby:省略版
# nmcli c s
名前                  UUID                                  タイプ          デバイス
ethernet-eno33554992  a476ad21-8d8a-4519-8b2c-1650bf0df463  802-3-ethernet  eno33554992
```

#参考サイト
nmcliを触り始めの時にかなりお世話になりました。
わかりやすい！

[NetworkManager CLI (nmcli) でネットワークを設定する方法](http://www.maruko2.com/mw/NetworkManager_CLI_(nmcli)_でネットワークを設定する方法)

#おわりに
nmcliコマンドを使えば
もっと詳しいインターフェースの情報表示や
デバイス名の指定・変更、
bondingとかのちょっと入り組んだネットワーク設定も
もにょもにょと簡単にできます。
また今度気が向いたらまとめられるといいです。