Linux
Network
RHEL

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

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

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

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

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

  • 「nmtui」は、メニュー方式で簡易で
  • 「nmcli」は、コマンド形式で ネットワーク設定が可能。
  1. 「nmtui」
    「nmtui」は、以前のsystem-config-networkの代替となるコマンドだ。

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

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

# systemctl restart NetworkManager
  1. 「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"
  • 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”