
スポンサーリンク
netstat
は、ネットワークの接続状況、ルーティングテーブル、インターフェースの統計情報などを表示するコマンドです。システムのネットワークの状態を把握する際に役立ちます。
Linuxのnetstatコマンドを利用すると、特定ポートの使用状況などネットワークの状況を確認することができます。
netstatはnet-toolsというパッケージに含まれており、昨今のLinuxでは非推奨で、インストールされていない場合もあります。 netstatがインストールされていない場合はこちらのリンクを参照してインストールください。
すべてのソケットを表示
以下コマンドですべてのソケット情報を取得します。
netstat -a
TCP情報を表示する場合は以下コマンドを実行します。
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ライフを!