ネットワーク関連コマンドについて

CentOS 6 まで非常にお世話になっていたネットワーク関連コマンドとして、以下がありました。

  • ifconfig
  • netstat
  • arp
  • route

上記のコマンド類は、net-tools というパッケージに含まれています。

この net-tools パッケージは、CentOS 6 をインストールするとデフォルトでインストールされますが、CentOS 7 では、最小構成(Minimal)でインストールするとインストールされません。

インストールすれば使えるようになりますが、net-tools は、将来的に廃止される予定のため、使わないほうが良いです。(非推奨となりました)

従来(CentOS 6 まで : 廃止予定)今後(CentOS 7 から : 推奨)
ifconfigip addr、ip -s link
routeip route
arpip neigh
netstatss

その代わりに、これからは、iproute2 パッケージに含まれている ipss のようなコマンドを使用することが推奨されています。

とは言え、やっぱり ifconfig とか netstat とか使い慣れてるし、便利だし、使えるうちには積極的に使いたい方は、net-tools をインストールしてご利用ください。

CentOS 7 : net-tools インストール
1
# yum -y install net-tools

net-tools VS iproute2

では、実際に、どんな感じで使用すれば良いか比較しながら確認してみます。

ifconfig VS ip addr : 各 NIC の IF 情報確認

各 NIC の インタフェース情報を確認するためには、以下のコマンドを使います。

  • 非推奨 : ifconfig
  • 推 奨 : ip addr show
ifconfig VS ip addr
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.2  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 00:50:56:95:91:ee  txqueuelen 1000  (Ethernet)
        RX packets 26628  bytes 2812687 (2.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 26631  bytes 3055726 (2.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 0  (Local Loopback)
        RX packets 6  bytes 504 (504.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6  bytes 504 (504.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:95:91:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 brd 192.168.0.255 scope global ens160
       valid_lft forever preferred_lft forever

netstat -rn VS ip route : ルーティングテーブル表示

ルーティングテーブル情報を確認するためには、以下のコマンドを使います。

  • 非推奨 : netstat -rn
  • 推 奨 : ip route
netstat -rn VS ip route
1
2
3
4
5
6
7
8
9
# netstat -rn
Kernel IP routing table
Destination     Gateway        Genmask         Flags   MSS   Window  irtt  Iface
0.0.0.0         192.168.0.1    0.0.0.0         UG        0   0          0  ens160
192.168.0.0     0.0.0.0        255.255.255.0   U         0   0          0  ens160

# ip route
default via 192.168.0.1 dev ens160  proto static  metric 100
192.168.0.0/24 dev ens160  proto kernel  scope link  src 192.168.0.2  metric 100

arp VS ip neigh : イーサネットの MAC アドレス情報確認

イーサネットの MAC アドレス情報を確認するためには、以下のコマンドを使います。

  • 非推奨 : arp
  • 推 奨 : ip neigh
arp VS ip neigh
1
2
3
4
5
6
# arp
Address         HWtype    HWaddress           Flags Mask    Iface
192.168.0.1     ether     00:00:0c:07:ac:07   C             ens160

# ip neigh
192.168.0.1 dev ens160 lladdr 00:00:0c:07:ac:07 REACHABLE

netstat -alnA inet VS ss -ltu : Port 状態確認

Port の TCP / UDP / ESTABLISHED 状態を確認するためには、以下のコマンドを使います。

  • 非推奨 : netstat -aln -A inet
  • 推 奨 : ss -ltu
netstat -alnA inet VS ss -lut
01
02
03
04
05
06
07
08
09
10
11
12
13
14
# netstat -aln -A inet
Active Internet connections (servers and established)
Proto  Recv-Q  Send-Q  Local Address    Foreign Address        State
tcp         0       0  0.0.0.0:22       0.0.0.0:*              LISTEN
tcp         0      52  192.168.0.2:22   192.168.10.47:64911    ESTABLISHED
udp         0       0  0.0.0.0:123      0.0.0.0:*
udp         0       0  127.0.0.1:323    0.0.0.0:*

# ss -ltu
Netid  State      Recv-Q  Send-Q    Local Address:Port    Peer Address:Port
tcp    UNCONN     0       0         *:ntp                 *:*
tcp    UNCONN     0       0         127.0.0.1:rpki-rtr    *:*
tcp    LISTEN     0       128       *:ssh                 *:*
tcp    ESTAB      0       52        192.168.0.2:ssh       192.168.10.47:64911

ss -ltu 使用時の注意点

l は、List の l

t は、TCP の t

u は、UDP の u

注意しないと行けないのは、Netid には全て TCP と表示されていますが、TCPUDP か確認するためには、State を見て判断しないと行けません。

State の状態が、

LISTEN となっていれば、TCP

UNCONN となっていれば、UDP

ESTAB となっていれば、通信確立状態の ESTABLISHED です。

ちなみに、TCP / UDP / ESTABLISHED 状態を個別に確認したい場合には、以下のようにします。

ss -ltu 個別確認
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
━━━━━━━━━━━━━━
TCP
━━━━━━━━━━━━━━
# ss -lt
State      Recv-Q Send-Q    Local Address:Port    Peer Address:Port
LISTEN     0      128       *:ssh                 *:*

━━━━━━━━━━━━━━
UDP
━━━━━━━━━━━━━━
# ss -lu
State      Recv-Q Send-Q    Local Address:Port    Peer Address:Port
UNCONN     0      0         *:ntp                 *:*
UNCONN     0      0         127.0.0.1:rpki-rtr    *:*

━━━━━━━━━━━━━━
ESTAB
━━━━━━━━━━━━━━
# ss -tu
Netid  State      Recv-Q Send-Q    Local Address:Port    Peer Address:Port
tcp    ESTAB      0      52        192.168.0.2:ssh       192.168.10.47:64911

また、サービス名ではなく、特定のポート番号で grep する際には、-n (--numeric) オプションを付けると良いです。

ss : サービス名、または ポート番号で Grep
01
02
03
04
05
06
07
08
09
10
11
12
13
━━━━━━━━━━━━━━
サービス名で grep
━━━━━━━━━━━━━━
# ss -ltu | grep "tftp"
udp    UNCONN     0      0       *:tftp        *:*
udp    UNCONN     0      0       *:tftp        *:*

━━━━━━━━━━━━━━
ポート番号で grep
━━━━━━━━━━━━━━
# ss -ltun | grep "69"
udp    UNCONN     0      0         *:69        *:*
udp    UNCONN     0      0         *:69        *:*

終わりに

今まで普通に使っていた、ifconfig / route / arp / netstat がある日を境に突然使えなくなるかもしれないので、ipss の基本的な使い方を覚えておくといいと思います。

以上、CentOS 7 では ifconfig、route、arp、netstat が非推奨 でした。