RHEL7とRHEL6のネットワーク設定に違い
面倒なことにRHEL7からは、ネットワーク周りの設定方法がRHEL6と比較するとかなり変わってきている。
RHEL6までは[/etc/sysconfig/network-scripts]配下の[ifcfg-eth*]ファイルを直接編集することで設定を変更することが可能であり、RHEL7でも継続して同様な方法で変更可能なのですが、RedHatではNetworkManagerに付属する「nmtui」と「nmcli」コマンドを使用した変更方法が推奨されている。
「nmtui」と「nmcli」コマンドとなぜ2つ用意されているのか?
- 「nmtui」は、メニュー方式で簡易で
- 「nmcli」は、コマンド形式で
ネットワーク設定が可能。
- 「nmtui」
「nmtui」は、以前のsystem-config-networkの代替となるコマンドだ。
「nmtui」を実行するとメニュー形式でネットワーク周りの変更を実施することが可能だ。
設定を有効にするためには、NetworkManagerを再起動することで変更が有効となる。
# systemctl restart NetworkManager
- 「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”