【Linux】IPアドレス固定＆アドレス変更方法

## はじめに
現場にてIPアドレスがなぜかころころ変わってしまい、困っていたので調べて実践したことを記事にまとめました。
centOS7におけるIPアドレス固定とアドレス指定のやり方を説明していきます。

## やっていくこと
・DHCPによるIPアドレスの動的設定を手動設定に変更する
・指定した任意のIPアドレスを割り当てる

## デバイス名を取得する
デバイス名を取得するには下記コマンドを使用します。
```bash
$ nmclic device
```

<br>

使用結果は下記になります。
今回は「デバイス名：eth0」を変更していきます。
(ちなみにデバイス名は、ネットワークインターフェースとも言います)
```bash
$ nmcli device
eth0     ethernet  接続済み                  eth0               
eth1     ethernet  接続中 (IP 設定を取得中)  Wired connection 1 
eth2     ethernet  接続中 (IP 設定を取得中)  Wired connection 2             
lo       loopback  管理無し                  --
```

## デバイス名の詳細を確認する
下記コマンドを使ってデバイスの詳細設定を確認します。
```bash
$ nmcli -f ipv4 con show デバイス名
```

<br>

「デバイス名：eth0」の詳細は下記になります。
`ipv4.method`がDHCPによるIPアドレス取得設定を示しており、現状はautoになっています。
`ipv4.addresses`は設定されているIPアドレスになり、現状は未設定となっています。
```bash
$ nmcli -f ipv4 con show eth0
ipv4.method:                            auto
ipv4.dns:                               8.8.8.8
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:
ipv4.gateway:
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-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                はい
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     いいえ
ipv4.may-fail:                          はい
ipv4.dad-timeout:                       -1 (default)
```

## IPアドレスの変更
下記コマンドを使って、IPアドレスの変更と自動取得から手動取得設定への変更を行います。
そして最後にネットワークを再起動します。
```bash
// 自動取得を手動設定に変更
$ nmcli con mod enp0s3 ipv4.method manual

// IPアドレス変更
$ nmcli con mod enp0s3 ipv4.addresses "任意のIPアドレス/サブネットマスクの長さ"

// ネットワーク再起動
$ nmcli con down デバイス名
$ nmcli con up デバイス名
```

<br>

使用例は下記になります。

```bash
$ nmcli con mod enp0s3 ipv4.method manual
$ nmcli con mod enp0s3 ipv4.addresses "153.121.70.210/24"
$ nmcli con down eth0
$ nmcli con up eth0
```

## 設定内容の確認
`nmcli -f ipv4 con show デバイス名` コマンドを使って設定内容が正しいか確認します。
・ipv4.methodがmanualになっている
・ipv4.addressesが設定したIPアドレスになっている
ということが確認できればOKです！

```bash
$ nmcli -f ipv4 con show eth0
ipv4.method:                            manual
ipv4.dns:                               8.8.8.8
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:                         153.121.64.210/23
ipv4.gateway:                           153.121.64.1
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-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                はい
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     いいえ
ipv4.may-fail:                          はい
ipv4.dad-timeout:                       -1 (default)
```

## 最後に
nmcliというコマンドを使ってIPアドレスの設定変更をしてきました。
参考になれば幸いです。

## 参考サイト
[https://qiita.com/miriwo/items/5791f552055fda573cf3](https://qiita.com/miriwo/items/5791f552055fda573cf3)
[https://densan-hoshigumi.com/server/linux/network/ipaddress-static](https://densan-hoshigumi.com/server/linux/network/ipaddress-static)