株式会社エスロジカル
株式会社エスロジカル
セキュリティ、Web開発、Unix開発、Go言語

■ UNIX のコマンド:netstatコマンド

技術ドキュメント目次 -> UNIX のコマンド -> netstatコマンド

本技術ドキュメントは、ここしばらくメンテナンスをしておりません。
内容が古くなっている可能性などございますこと、ご理解を頂けますようお願いいたします。


サイフにやさしいSSL証明書
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。


◆ netstatコマンドとは

netstatコマンドは、
ネットワークの状況を確認することのできる非常に便利なコマンドです。

ここでは、RedHat7.3に付属する netstat コマンドをベースに説明いたします。
他の環境ではコマンドのオプション名が違っていたりするかもしれませんが、それにつきましては、
man コマンドなどをご参照ください。

◆ ネットワークの状況を確認する

マシンのネットーワーク的な状況を確認するために、
おそらくもっとも頻繁に使用するかと思われる netstat コマンドの使い方は、
netstat -an という -an オプションでの使用になるかと思います。
ここではこの -an オプションについて解説します。

-an では a と n のオプションが有効になっていますが、
これは、それぞれ次のような意味になっていて、
-an では使用中の全てのソケットについての情報をぱっと参照することが可能です。

a:全てのソケットについての情報を表示する。
n:表示の際に名前の解決を行わない(表示が速くなります)。

netstat -an を実行すると次のような出力が表示され、
インターネットドメインのソケットとUNIXドメインのソケットに対して、
LISTEN・ESTABLISHEDなどの各情報が表示されます。

# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.2:53          0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.2:22          192.168.1.101:4235      ESTABLISHED
udp        0      0 0.0.0.0:32768           0.0.0.0:*
udp        0      0 127.0.0.1:32769         127.0.0.1:32769         ESTABLISHED
udp        0      0 192.168.1.2:53          0.0.0.0:*
udp        0      0 127.0.0.1:53            0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  8      [ ]         DGRAM                    865    /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     2178   /dev/gpmctl
unix  2      [ ACC ]     STREAM     LISTENING     1593   /tmp/.s.PGSQL.5432
unix  2      [ ]         DGRAM                    2191
unix  2      [ ]         DGRAM                    2150
unix  2      [ ]         DGRAM                    1508
unix  2      [ ]         DGRAM                    1266
unix  2      [ ]         DGRAM                    950
unix  2      [ ]         DGRAM                    881
#


また、
おそらく、最近の Linux のみで有効なオプションであるかと思うのですが、
p というオプションも付加すると、
そのソケットを使用しているプロセスについての情報(プロセス名とプロセスID)に
ついても表示されるようになるため、どのプロセスがどのようなネットワーク処理を
行っているのか確認することができ、非常に便利です。

netstat -anp の実行例は次のようになります。

# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      627/xinetd
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      627/xinetd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      834/httpd
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      627/xinetd
tcp        0      0 192.168.1.2:53          0.0.0.0:*               LISTEN      586/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      586/named
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      606/sshd
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      660/postmaster
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      924/sendmail: accep
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      586/named
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      834/httpd
tcp        0     20 192.168.1.2:22          192.168.1.101:4235      ESTABLISHED 1670/sshd
udp        0      0 0.0.0.0:32768           0.0.0.0:*                           586/named
udp        0      0 127.0.0.1:32769         127.0.0.1:32769         ESTABLISHED 660/postmaster
udp        0      0 192.168.1.2:53          0.0.0.0:*                           586/named
udp        0      0 127.0.0.1:53            0.0.0.0:*                           586/named
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  8      [ ]         DGRAM                    865    513/syslogd         /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     2178   941/gpm             /dev/gpmctl
unix  2      [ ACC ]     STREAM     LISTENING     1593   660/postmaster      /tmp/.s.PGSQL.5432
unix  2      [ ]         DGRAM                    2191   953/crond
unix  2      [ ]         DGRAM                    2150   924/sendmail: accep
unix  2      [ ]         DGRAM                    1508   627/xinetd
unix  2      [ ]         DGRAM                    1266   586/named
unix  2      [ ]         DGRAM                    950    573/apmd
unix  2      [ ]         DGRAM                    881    518/klogd
#


◆ ルーティングの状況を確認する

netstat に r オプションを付加して実行すると、
マシンのルーティングの状態を確認することができます。

-rn オプションで netstat を実行したときの出力は次のようになります。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U        40 0          0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U        40 0          0 lo
0.0.0.0         192.168.1.1     0.0.0.0         UG       40 0          0 eth0
#


(これは route コマンドを実行したときと同じ出力内容です)

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
#


◆ インターフェイスの状況を確認する

netstat に i オプションを付加して実行すると、
マシンの各NICについての情報を確認することができます。

最近はあまり無いかもしれませんが、10BASAE-T のNICを使用していたときに、
コリジョン(パケットの衝突)の発生頻度を確認するのに使用したりもしていました。

# netstat -in
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500   0     928      0      0      0     775      0      0      0 BMRU
lo    16436   0     268      0      0      0     268      0      0      0 LRU
#




■ UNIX のコマンド についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。