【ネットスタット】

netstat とは?

💡 ネットワークの「健康診断書」、どこと通信中かが一目でわかる
📌 このページのポイント
netstat で見えるネットワーク接続の状態 自分のサーバー netstat -tlnp で調査 :80 LISTEN nginx :443 LISTEN nginx (HTTPS) :3306 LISTEN mysql :22 LISTEN sshd :4444 不明?! TCP接続の主な状態 LISTEN 接続を待っている (ポート開放中) ESTABLISHED 通信中 (正常な接続) TIME_WAIT 切断後の待機 (正常・自然消滅) CLOSE_WAIT 大量にある場合 → バグの可能性!
netstat で確認できるネットワーク接続の状態
ひよこ ひよこ

netstatって何が見られるの?

ペンギン先生 ペンギン先生

パソコンやサーバーが今どこと通信しているか、どのポートが開いているかを一覧表示するコマンドだよ。病院の健康診断みたいに、ネットワークの状態をチェックできるんだ

ひよこ ひよこ

どういうときに使うの?

ペンギン先生 ペンギン先生

サーバーが起動しているのにアクセスできない」ときにポートが本当にLISTENしているか確認したり、「謎の通信が発生している」ときに接続先を調べたりするのに使うよ。netstat -tlnp でTCPで待ち受けしているプロセスポート番号を一覧表示するのが定番だね

ひよこ ひよこ

接続の状態ってどういう種類があるの?

ペンギン先生 ペンギン先生

TCP接続にはいくつかの状態があるよ。LISTEN はポートで接続待ち、ESTABLISHED は通信中、TIME_WAIT は切断後の待機状態、CLOSE_WAIT は相手が切断して自分がまだ閉じていない状態。CLOSE_WAIT が大量にある場合はプログラムのバグ(ソケットを閉じ忘れている)の可能性が高いんだ

ひよこ ひよこ

ssコマンドとの違いは何なの?

ペンギン先生 ペンギン先生

ss(socket statistics)はnetstatの後継コマンドで、Linuxでは公式にssの使用が推奨されているよ。ssのほうが高速で、カーネルから直接情報を取得するから大量の接続がある環境でもサクサク動く。ただしWindowsにはssがないから、Windowsでは今でもnetstatが現役だね

ひよこ ひよこ

netstat でセキュリティ的に怪しい通信を見つけることってできるの?

ペンギン先生 ペンギン先生

できるよ。netstat -an で全接続を見て、見覚えのない外部IPアドレスへの ESTABLISHED 接続があれば要注意だね。特にサーバーで予期しないポートが LISTEN していたら、不正なプログラムが動いている可能性がある。セキュリティ調査では netstat -tlnp(または ss -tlnp)で「何が・どのポートで・待ち受けているか」を確認するのが基本中の基本だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「netstat」って出てきたら「ネットワーク接続やポートの状況を調べるコマンド」と思えればだいたいOK!
📖 おまけ:英語の意味
「network statistics」 = ネットワーク統計
💬 network(ネットワーク)のstatistics(統計情報)を表示するコマンドという意味だよ
← 用語集にもどる