RHEL7とRHEL6のネットワーク設定に違い

# RHEL7とRHEL6のネットワーク設定に違い

面倒なことにRHEL7からは、ネットワーク周りの設定方法がRHEL6と比較するとかなり変わってきている。

RHEL6までは[/etc/sysconfig/network-scripts]配下の[ifcfg-eth*]ファイルを直接編集することで設定を変更することが可能であり、RHEL7でも継続して同様な方法で変更可能なのですが、RedHatではNetworkManagerに付属する「nmtui」と「nmcli」コマンドを使用した変更方法が推奨されている。

「nmtui」と「nmcli」コマンドとなぜ２つ用意されているのか？

- 「nmtui」は、メニュー方式で簡易で
- 「nmcli」は、コマンド形式で
ネットワーク設定が可能。


1. 「nmtui」  
「nmtui」は、以前のsystem-config-networkの代替となるコマンドだ。

「nmtui」を実行するとメニュー形式でネットワーク周りの変更を実施することが可能だ。

設定を有効にするためには、NetworkManagerを再起動することで変更が有効となる。

```
# systemctl restart NetworkManager
```

2. 「nmcli」  
設定変更をコマンドベースで実施することが可能。
まず、以下のコマンドでデバイス(ethernet)の
一覧を以下のコマンドで取得。

```
# nmcli device
デバイス    タイプ    状態      接続
virbr0      bridge    接続済み  virbr0
ensxx       ethernet  接続済み  eth0
lo          loopback  管理無し  --
virbr0-nic  tun       管理無し  --
```

- 特定のデバイスの状態を確認するには。

```
# nmcli device show ensxx

```

```
GENERAL.デバイス:                       ensxx
GENERAL.タイプ:                         ethernet
GENERAL.ハードウェアアドレス:           xx:xx:xx:xx:xx:xx
GENERAL.MTU:                            1500
GENERAL.状態:                           100 (接続済み)
GENERAL.接続:                           eth0
GENERAL.CON パス:                       /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.キャリア:              オン
IP4.アドレス[1]:                        192.168.10.11/24
IP4.ゲートウェイ:                       192.168.10.1
IP4.DNS[1]:                             192.168.10.1
IP4.ドメイン[1]:                        localdomain

```

nmcli deviceよりも詳細なインターフェイス接続の詳細情報を得るにはshowオプション。

```
# nmcli connection show eth0
```
```
connection.id:                          eth0
connection.uuid:                      
connection.interface-name:              ensxx
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.read-only:                   no
connection.permissions:
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:
connection.gateway-ping-timeout:        0
connection.metered:                     不明
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mtu:                     自動
ipv4.method:                            auto
ipv4.dns:
ipv4.dns-search:
ipv4.dns-options:                       (デフォルト)
ipv4.dns-priority:                      0
ipv4.addresses:
ipv4.gateway:                           --
ipv4.routes:
ipv4.route-metric:                      -1
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv4.dad-timeout:                       -1 (default)
GENERAL.名前:                           eth0
GENERAL.デバイス:                       ensxx
GENERAL.状態:                           アクティベート済み
GENERAL.デフォルト:                     はい
IP4.アドレス[1]:                        192.168.10.11/24
IP4.ゲートウェイ:                       192.168.10.1
IP4.DNS[1]:                             192.168.10.1
IP4.ドメイン[1]:                        localdomain

```

手動でインターフェイスをActive/Deactiveに設定するには。

- インターフェイスをActive化

```
# nmcli connection up ensxx
```

- インターフェイスをDeactive化 

```
# nmcli connection down ensxx
```

ただし、接続が切断されるとインターフェイスは 「手動」 モードになるので、NetworkManager再起動時にI/Fがアクティブ化するように以下コマンド。

```
# nmcli dev disconnect iface ensxx
```

ネットワークパラメータを修正したい場合の一例を下記に示します。

- IPアドレスを192.168.10.11, GWを192.168.10.2に変更

```
#nmcli connection modify ensxx ipv4.addresses "192.168.10.11/24 192.168.10.2"
```

※NetworkManager 1.0.0以降では以下のように変更されています。

```
nmcli connection modify enpxxx ipv4.method manual ipv4.addresses 192.168.10.11/24 ipv4.gateway 192.168.10.2
```

- DNSサーバを192.168.10.1と2に変更

```
#nmcli connection modify ensxx ipv4.dns "192.168.10.1 192.168.10.2"
```

- StaticRouteの追加

```
#nmcli connection modify ensxx ipv4.routes "192.168.20.0/24 192.168.10.1"
```

- 設定有効化

```
#systemctl restart NetworkManager
```

RHEL6までは、ネットワーク周りのコマンドとして[ifconfig / netstat / arp / route]などの
コマンドが使用されていましたが、RHEL7からはこれらは非奨励となる。

今後はiproute2というパッケージに付属しているコマンド群を使用することが奨励。

   以前までのコマンドの対比表

| RHEL6 | RHEL7 |
|:----------:|:----------:|
| ifconfig          |    ip addr , ip -s link       |
| route       |  ip route         |
|    arp       |  ip eigh         |
|    netstat        |   ss         |


- ifconfigでIPを確認する方法は、以下のコマンドとなる。

※実行している内容は[ip addr show]ですがコマンドを省略することが出来る。

```
#ip a
```

```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.11/24 brd 192.168.10.255 scope global dynamic ensxx
       valid_lft 1201sec preferred_lft 1201sec

```

- デバイスごとの処理パケット数の統計値を表すコマンド。
※実行している内容は[ip -s link]です。

```
#ip -s l
```

```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    0          0        0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    0          0        0       0       0       0
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    5013     201     0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    6933     322      0       0       0       0
```

- netstat -nrに相当するルーティングテーブルを表示するコマンド。
※実行している内容は[ip route]です。

```
# ip r
```

```
default via 192.168.10.2 dev ensxx  proto static  metric 100
192.168.10.0/24 dev ensxx  proto kernel  scope link  src 192.168.10.11  metric 100

```

- arpコマンドの代替となるのが
以下のコマンド。
※実行している内容は[ip neigh]です。

```
# ip n
```

```
192.168.10.2 dev ensxx lladdr 00:00:00:00:00:00 STALE
192.168.109.1 dev ensxx lladdr 00:00:00:00:00:00 DELAY

```

- サービスが稼働しているか一覧表示するコマンドが下記です。
コマンドのバグで左端には全てTCPと表示されておりますが、StateのところがUNCONNとなっているのがUDP、LISTENとなっているところがTCPです。

```
# ss -ltu
```
```
Netid  State      Recv-Q Send-Q Local Address:Port    Peer Address:Port
udp    UNCONN     0      0       *:55810                 *:*
udp    UNCONN     0      0       *:33284                 *:*
udp    UNCONN     0      0       *:passwd_server         *:*
udp    UNCONN     0      0       *:mdns                  *:*
udp    UNCONN     0      0      192.168.122.1:domain     *:*
udp    UNCONN     0      0       *:bootpc                *:*
udp    UNCONN     0      0       *:sunrpc                *:*
udp    UNCONN     0      0      :::passwd_server        :::*
udp    UNCONN     0      0      :::sunrpc               :::*
udp    UNCONN     0      0      :::39085                :::*
tcp    LISTEN     0      128     *:sunrpc                *:*
tcp    LISTEN     0      5      192.168.122.1:domain     *:*
tcp    LISTEN     0      128     *:ssh                   *:*
tcp    LISTEN     0      128    127.0.0.1:ipp            *:*
tcp    LISTEN     0      100    127.0.0.1:smtp           *:*
tcp    LISTEN     0      128    :::sunrpc               :::*
tcp    LISTEN     0      128    :::ssh                  :::*
tcp    LISTEN     0      128       ::1:ipp              :::*
tcp    LISTEN     0      100       ::1:smtp             :::*
```

- 既に通信が確立したもの ( established ) 
だけを表示したい場合は以下コマンド。

```
# ss -tu
```

```
Netid  State      Recv-Q Send-Q Local Address:Port         Peer Address:Port
tcp    ESTAB      0      96     192.168.10.11:ssh      192.168.10.12:49782

```

- 「nmcli」コマンドでのaliasでIPアドレスの追加や削除方法について

- IPエイリアスを追加
項目を追加する場合、項目名に + を付ける。

```
# nmcli c mod ensxx +ipv4.addresses "192.168.10.20/24 192.168.10.1"
```

- IPを削除
設定を外す場合は、 項目名に - を付ける。

```
# nmcli c mod ensxx -ipv4.addresses "192.168.10.20/24 192.168.10.1"
```

- スタティックルートを追加

```
# nmcli c mod ensxx +ipv4.route "172.22.40.0/24 192.168.10.1"
```

- host名変更

```
# nmcli general hostname <host名>
```

- IPv6無効化

```
# echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
# echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
# sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

```

- speed,Duplex変更(一時的)

```
# ethtool -s ensxx speed 1000 duplex full autoneg off
```

- speed,Duplex変更(永続的)

```
# nmcli c mod ensxx 802-3-ethernet.auto-negotiate no
# nmcli c mod ensxx 802-3-ethernet.speed 1000
# nmcli c mod ensxx 802-3-ethernet.duplex full

```

- Bonding Mode確認

```
# /proc/net/bonding/bond0 | grep “Bonding Mode”
```