今号では、netstat コマンドの使い方やオプションについてご紹介します!
netstat コマンドとは
netstat コマンドは、ポートの状態を確認することができるコマンドです。
主にネットワークの接続状況を確認するために使用し、何らかの理由でネットワーク通信が正常に
行われない場合などに netstat の情報から原因を調査することもあります。
基本の書式
オプションなしで netstat コマンドを実行した場合、接続が成立している (ESTABLISHED 状態)
TCP 接続のみが表示されます (UDP 接続は表示されません)。
※非常にたくさんの情報が出力されるため、一部のみ抜粋しています。
# netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 36 example1.com:ssh 10.30.31.33:60420 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ] DGRAM 33867 /var/run/chrony/chronyd.sock unix 2 [ ] DGRAM 19057 /run/systemd/shutdownd unix 3 [ ] DGRAM 7580 /run/systemd/notify unix 2 [ ] DGRAM 7582 /run/systemd/cgroups-agent unix 5 [ ] DGRAM 7596 /run/systemd/journal/socket unix 28 [ ] DGRAM 7598 /dev/log unix 3 [ ] STREAM CONNECTED 44939 unix 3 [ ] STREAM CONNECTED 45575 unix 3 [ ] STREAM CONNECTED 1217921 …
Active Internet connections 以下の情報はネットワーク経由での接続状態を、
Active UNIX domain sockets 以下の情報はローカルネットワーク上の接続状態を表します。
netstat コマンドのオプション
次に、ps コマンドで使用可能なオプションをご紹介します。
オプションには多くの種類がありますが、よく使用されると考えられるものを抜粋してご紹介します。
- -a … すべての接続を表示する
-a オプションを指定すると、接続待ち (LISTEN 状態) である接続も含めた情報が表示されます。# netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:pop3 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:imap 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN … tcp 0 36 example1.com:ssh 10.30.31.30:53437 ESTABLISHED tcp6 0 0 [::]:pop3 [::]:* LISTEN tcp6 0 0 [::]:imap [::]:* LISTEN … Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 4259839 /var/run/dovecot/log-errors unix 2 [ ACC ] STREAM LISTENING 46847 /run/user/989/keyring/ssh unix 2 [ ACC ] STREAM LISTENING 4259843 /var/run/dovecot/lmtp unix 2 [ ACC ] STREAM LISTENING 4259847 /var/run/dovecot/ipc unix 2 [ ACC ] STREAM LISTENING 4259849 /var/run/dovecot/login/ipc-proxy …
- -n … ホスト名、ポート名などを名前解決せずに数値で表示する
-n オプションを指定すると、ホスト名、ポート名などがすべて数値 (IP アドレスやポート番号) で
表示されます。
下記の 2つの実行結果より -n オプションを指定する/しない場合を比較すると、
ホスト名 (example1.com) が IP アドレス (10.1.1.5) に、ポート名 (ssh) がポート番号 (22) になっていることが分かります。-n オプションなし
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 88 example1.com:ssh 10.30.31.30:56067 ESTABLISHED
-n オプションあり
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 88 10.1.1.5:22 10.30.31.30:56067 ESTABLISHED
- -p … 各接続に関連付けされたプロセス ID とプログラム名を表示する
-p オプションを指定すると、各接続に関連するプロセス ID とプログラム名も含めた情報が表示されます。
下記の 2つの実行結果より -p オプションを指定する/しない場合を比較すると、
この接続の PID (27658) とプログラム名 (sshd) が追加で表示されていることが分かります。-p オプションなし
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 88 example1.com:ssh 10.30.31.30:56067 ESTABLISHED
-p オプションあり
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 example1.com:ssh 10.30.31.30:56067 ESTABLISHED 27658/sshd: root@pt
- -t/-u … TCP 接続/UDP 接続のみ表示する
-t オプションを指定すると TCP 接続のみが、-u オプションを指定すると UDP 接続のみが表示されます。 - -l … LISTEN (接続待ち) 状態の接続のみ表示する
-l オプションを指定すると State が LISTEN (接続待ち) 状態の接続のみが表示されます。
なお、netstat コマンドのオプションは、組み合わせて指定することができます。
例
- netstat -anp
- netstat -tl
また必要に応じて、netstat -anp | grep
必要な情報が素早く見つかるかもしれません。