netstatコマンド入門
ネットワーク接続状況を監視する
netstatはアクティブなネットワーク接続、リッスンポート、ルーティングテーブルなどを表示するコマンドです。不審な接続の検出やポート競合の確認に役立ちます。
こんな人向けの記事です
- どのポートが使用中か確認したい人
- 不審なネットワーク接続を検出したい人
- ネットワーク接続のトラブルシューティングをしたい人
Step 1netstatとは
netstat(Network Statistics)は、ネットワーク接続、ルーティングテーブル、インターフェース統計などを表示するコマンドラインツールです。現在アクティブな接続の一覧表示や、どのプログラムがどのポートをリッスンしているかを確認できます。
ポイント: 最新のLinuxディストリビューションではnetstatはssコマンドに置き換えられつつありますが、多くのシステムではまだ利用可能です。Windowsでは現在も広く使われています。
Step 2基本的な使い方
全てのアクティブな接続を表示:
ターミナル
netstat
リッスンポートを表示:
ターミナル
# Windows
netstat -an | findstr LISTENING
# Linux/macOS
netstat -tuln
結果の例(Linux):
ターミナル
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 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
Step 3出力の読み方
| 項目 | 意味 |
|---|---|
| Proto | プロトコル(TCP/UDP) |
| Local Address | 自コンピュータのIP:ポート。0.0.0.0は全インターフェース |
| Foreign Address | 接続先のIP:ポート |
| State | 接続状態(LISTEN/ESTABLISHED/TIME_WAIT等) |
| Recv-Q / Send-Q | 受信/送信キューのバイト数。通常は0 |
Step 4主なオプション一覧
| 機能 | Windows | Linux/macOS | 説明 |
|---|---|---|---|
| 全接続表示 | -a | -a | リッスン状態を含む全接続を表示 |
| 数値形式 | -n | -n | 名前解決なしで数値表示 |
| TCPのみ | -p tcp | -t | TCP接続のみ表示 |
| UDPのみ | -p udp | -u | UDP接続のみ表示 |
| リッスンのみ | -an | findstr LISTENING | -l | リッスン状態のみ表示 |
| プロセスID | -o | -p | 接続に関連するプロセスを表示 |
| 統計情報 | -s | -s | プロトコル別統計を表示 |
| ルーティング | -r | -r | ルーティングテーブルを表示 |
ポイント: Linux/macOSでよく使われる組み合わせは netstat -tulpn で、TCP/UDPのリッスンポートをプロセス情報付きで数値形式表示します。
Step 5実践的な使用例
特定のポートが使用中か確認:
ターミナル
# Windows
netstat -an | findstr :80
# Linux/macOS
netstat -tuln | grep :80
ポートを使用しているプロセスを特定(管理者権限が必要):
ターミナル
# Windows
netstat -aon | findstr :80
# Linux/macOS
sudo netstat -tulpn | grep :80
ネットワーク統計情報の確認:
ターミナル
netstat -s
ルーティングテーブルの確認:
ターミナル
netstat -r
Step 6トラブルシューティング
| 問題 | 確認コマンド | 対処法 |
|---|---|---|
| ポート競合でアプリが起動しない | netstat -tuln | grep :8080 | 使用中のプロセスを停止またはポートを変更 |
| 不審な接続の検出 | netstat -anop | 見慣れないIPやプログラムをファイアウォールでブロック |
| 大量のTIME_WAIT | netstat -an | grep TIME_WAIT | 高負荷サーバーでは正常。クライアントでは問題の兆候 |
| 大量のCLOSE_WAIT | netstat -an | grep CLOSE_WAIT | アプリケーションが接続を適切にクローズしていない(バグの可能性) |
注意: netstatの出力にはIPアドレスやポート番号などセンシティブな情報が含まれます。スクリーンショットの共有時は注意してください。Linuxではより高速なssコマンド(ss -tuln)も検討しましょう。