何の話かというと
RHEL7/CentOS7では最小構成でインストールすると、ifconfig、route、netstat、arpなどのネットワーク関連のコマンドが使えません。これは、次のコマンドで「net-tools」パッケージを導入すると解決します。
# yum -y install net-tools
しかしながら!
RHEL7/CentOS7では、net-toolsを「deprecated(廃止予定)」としており、今後は、iproute2パッケージに含まれる「ip」「ss」などのコマンドを使用することが推奨されています。
・お客さんのRHEL7サーバーのメンテを頼まれたらnet-toolsが入ってなかった!
・「えー。まだifconfigつかってんのー。」と若い同僚に冷たい目で見られた!
・などなど
といった事態に備えて、RHEL7/CentOS7を導入した際には、iproute2を使いこなす練習をしておきましょう。
※「deprecated(廃止予定)」という表現に過剰反応が起きないように補足しておきます。
RHELは特定メジャーバージョンにおいて、特別な理由がないかぎり、既存のパッケージを途中で削除することはありません。RHEL7.0に入っているnet-toolsが、「RHEL7.1で突然なくなる!」というような事は、恐らくはないでしょう。(RHEL8で同梱されなくなる可能性はありますが。)
ただし、
・今後の機能追加などは、iproute2の方で実施されていく。(例えば、netnsの管理には、ipコマンドが必要です。)
・最小構成でnet-toolsを入れないまま運用されるサーバーも少なからず出てくる可能性がある。という事を考えて、今からiproute2への移行を進めていくのがよいでしょう。
ざっくりとした対比
まずはこのぐらいを覚えておきましょう。
net-tools | iproute2 |
---|---|
ifconfig | ip a(addr), ip l(link) |
route | ip r(route) |
netstat | ss |
netstat -i | ip -s l(link) |
arp | ip n(neighbor) |
コマンド別の対比
私の実験環境では、eth0からRHEL7のサーバー(仮想マシン)にログインしているので、実験用にeth1を追加しておきます。新規に追加したeth1にアドレスをセットするときには、nmcliコマンドを使います。
# nmcli c add type eth ifname eth1 con-name eth1 # nmcli c mod eth1 ipv4.method manual ipv4.addresses "192.168.122.69/24 192.168.122.1" # nmcli c down eth1 # nmcli c up eth1
最初のコマンドの「con-name」には任意の接続名を指定できますが、ここでは、デバイス名と同じ「eth1」を指定しています。nmcliについては下記も参照。
・NetworkManagerの設定変更、nmtuiとnmcliについてまとめたよ!
それでは、以下に、従来の典型コマンドと、それに対応する新しいコマンドを並べていきます。
・特定デバイスの状態確認
# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.122.70 netmask 255.255.255.0 broadcast 192.168.122.255 inet6 fe80::5054:ff:fe41:c632 prefixlen 64 scopeid 0x20<link> ether 52:54:00:41:c6:32 txqueuelen 1000 (Ethernet) RX packets 1539 bytes 2117655 (2.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 194 bytes 28160 (27.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # ip a show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:41:c6:32 brd ff:ff:ff:ff:ff:ff inet 192.168.122.70/24 brd 192.168.122.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe41:c632/64 scope link valid_lft forever preferred_lft forever
・デバイスのup/down
# ifconfig eth1 up # ifconfig eth1 down # ip l set eth1 up # ip l set eth1 down
これは、先ほどのnmcliの方がよいかも知れません。
# nmcli c down eth1 # nmcli c up eth1
ここで指定する「eth1」はデバイス名ではなくて、先に指定した「接続名」ですので、ご注意下さい。デバイスに対するIPアドレスなどの割り当てもnmcliでやるのがよいでしょう。
・ルーティングテーブルの確認
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.122.1 0.0.0.0 UG 1024 0 0 eth0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 # ip r default via 192.168.122.1 dev eth0 proto static metric 1024 192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.70 192.168.122.0/24 dev eth1 proto kernel scope link src 192.168.122.69
・デフォルトゲートウェイの追加、削除
# route add default gw 192.168.122.1 # route del default gw 192.168.122.1 # ip route add default via 192.168.122.1 # ip route del default via 192.168.122.1
・デバイスごとのパケット処理数
# netstat -i Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 6375 0 0 0 1723 0 0 0 BMRU eth1 1500 2095 0 0 0 126 0 0 0 BMRU lo 65536 1040 0 0 0 1040 0 0 0 LRU # ip -s l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped overrun mcast 82260 1040 0 0 0 0 TX: bytes packets errors dropped carrier collsns 82260 1040 0 0 0 0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 52:54:00:41:c6:32 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 3861081 6396 0 0 0 0 TX: bytes packets errors dropped carrier collsns 237222 1733 0 0 0 0 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 52:54:00:a2:e8:73 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 1478655 2098 0 0 0 0 TX: bytes packets errors dropped carrier collsns 20043 126 0 0 0 0
・TCPソケットの状態確認
# netstat -nat Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 192.168.122.70:22 192.168.122.1:34328 ESTABLISHED tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN # ss -nat State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:22 *:* ESTAB 0 0 192.168.122.70:22 192.168.122.1:34328 LISTEN 0 100 ::1:25 :::* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::*
・UDPソケットの状態確認
# netstat -nau Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:123 0.0.0.0:* udp 0 0 0.0.0.0:53481 0.0.0.0:* udp 0 0 0.0.0.0:5353 0.0.0.0:* udp 0 0 127.0.0.1:323 0.0.0.0:* udp6 0 0 :::123 :::* udp6 0 0 ::1:323 :::* # ss -nau State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:123 *:* UNCONN 0 0 *:53481 *:* UNCONN 0 0 *:5353 *:* UNCONN 0 0 127.0.0.1:323 *:* UNCONN 0 0 :::123 :::* UNCONN 0 0 ::1:323 :::*
・ARPテーブルの確認
# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.122.71 ether 52:54:00:a5:2c:75 C eth0 192.168.122.1 ether 02:13:97:c1:47:ec C eth0 # ip n 192.168.122.71 dev eth0 lladdr 52:54:00:a5:2c:75 REACHABLE 192.168.122.1 dev eth0 lladdr 02:13:97:c1:47:ec REACHABLE
・ARPテーブルの無効化
# arp -d 192.168.122.71 -i eth0 # ip n flush 192.168.122.71 dev eth0 # ip n del 192.168.122.71 dev eth0 (←エントリーを削除)
とりあえず今日はここまで!