知っておくとちょっと便利!ポートの状態をチェックする netstat コマンド

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

今号では、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 のように IP アドレスで grep すると、
必要な情報が素早く見つかるかもしれません。

アバター画像
About 貝野 友香 67 Articles
OSSよろず相談室でサポートをやっています。時々ライブ配信や勉強会に出ていることもあります。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる