netstatは、ネットワークの接続状況、ルーティングテーブル、インターフェースの統計情報などを表示するコマンドです。システムのネットワークの状態を把握する際に役立ちます。
Linuxのnetstatコマンドを利用すると、特定ポートの使用状況などネットワークの状況を確認することができます。
netstatはnet-toolsというパッケージに含まれており、昨今のLinuxでは非推奨で、インストールされていない場合もあります。 netstatがインストールされていない場合はこちらのリンクを参照してインストールください。
すべてのソケットを表示
以下コマンドですべてのソケット情報を取得します。
netstat -aTCP情報を表示する場合は以下コマンドを実行します。
netstat -ant接続待ちしているポートを確認
LISTENを確認
以下コマンドでTCP接続待ち(LISTEN)しているポートを取得します。
netstat -nltポートを絞る
ポートを絞る場合は、以下のようにgrepで指定します。
netstat -nlt | grep -e ":443" -e "State"Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN通信が確立しているポートを確認
ESTABLISHEDを確認
以下コマンドでTCP通信が確立しているソケットを取得します。
netstat -ant | grep -e "ESTABLISHED" -e "State"Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:xx ESTABLISHEDtcp 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:xx ESTABLISHEDtcp 0 284 xx.xxx.x.x:xxxx xxx.xxx.xx.xx:xxxx ESTABLISHED各出力項目の説明
各出力項目の意味は以下の通りとなります。
| 項目 | 説明 |
|---|---|
| Proto | プロトコルの種類(TCP/UDPなど) |
| Recv-Q | 受信バッファに残っている受信データのバイト数 |
| Send-Q | 送信バッファに残っている送信データのバイト数 |
| Local Address | ローカルホストのIPアドレス・ポート番号 |
| Foreign Address | 接続先ホストのIPアドレス・ポート番号 |
| State | 現在の接続ステータス(LISTEN、ESTABLISH、TIME_WAIT、CLOSEなど) |
オプションの意味
各オプションの意味は以下の通りとなります。
| オプション | 意味 |
|---|---|
| -n | サービス名に変換せずに表示(ex :httpと表示せず:80と表示) |
| -t | TCP情報を表示 |
| -u | UDP情報を表示 |
| -a | 全てのソケットを表示 |
| -l | Listenポートのみを表示 |
| -p | ソケットを使用しているプロセスを表示 |
| -r | ルーティングテーブルを表示 |
| -i | ネットワークインターフェースの情報を表示 |
netstatとssの違い
netstatとssの主な違いは、パフォーマンス、機能、推奨度の3点にあります。
1. パフォーマンス
netstatはprocファイルシステム (/proc/net/以下) を参照して情報を取得するため、表示に時間がかかることがあります。ssはnetlinkソケット を使用してカーネルから直接情報を取得するため、より高速に動作します。
2. 機能
| 項目 | netstat | ss |
|---|---|---|
| TCP/UDP接続の表示 | ✅ | ✅ |
| ルーティングテーブル表示 | ✅ | ❌ |
| プロセスIDの表示 | ✅ | ✅ |
| 高度なフィルタリング | ❌ | ✅ |
ssは、接続情報をより詳細にフィルタリングでき、特定のポートや状態(LISTENなど)を指定して検索できます。netstatにはルーティング情報 (netstat -r) を表示する機能がありますが、ssにはありません。(代わりにip routeを使用して確認できます。)
3. 推奨度
netstatは非推奨となっており、ssコマンドが推奨されています。- 多くの最新ディストリビューションでは、
net-toolsパッケージ (netstatを含む) がデフォルトでインストールされていません。
4. 使用方法の比較
netstat の例
netstat -tulnp # 開いているTCP/UDPポートと対応プロセスを表示netstat -ant | grep -e "ESTABLISHED" -e "State"ss の例
ss -tulnp # `netstat -tulnp` と同じ情報を高速に取得ss -t state established # 確立されたTCP接続のみ表示まとめ
netstatコマンドは、Linuxシステムのネットワーク状況を確認するのに役立つツールです。現在ではssコマンドが主流になりつつありますが、netstatの知識も依然として重要です。適切なオプションを活用し、ネットワークの監視やトラブルシューティングに役立ててください。
また、高速で詳細な情報を取得したいなら ss を使うべきであり、netstat はレガシーだが、古い環境ではまだ使われることを理解しておきましょう。
ssコマンドの使い方はこちらのリンクを参照してください。
以上で本記事の解説を終わります。
よいITライフを!