
スポンサーリンク
Linux環境でネットワークの状態を調査する際に欠かせないのが、ss
コマンドです。本記事では、ss
コマンドの基本的な使い方から、実践的な活用方法までをわかりやすく解説します。また、従来のツールとの違いや、より効率的に活用するためのテクニックについても紹介します。
ssはnetstatの代替コマンド
ss
コマンドはsocket statisticsの略で、ネットワークのソケットの情報を表示するために使用されるLinuxコマンドです。従来のnetstatコマンドの代替として推奨されていて、より簡単に情報を取得することができます。ネットワーク接続、リスニングソケット、パケット統計などの情報を取得することができます。
ネットワーク接続の状態を調査する際には、まさに必須のツールと言えるでしょう。
ssとnetstatの違い
比較項目 | netstat | ss |
---|---|---|
パフォーマンス | 低速 | 高速 |
保守状況 | 非推奨 | 推奨 |
表示対象 | 制限あり | 詳細まで対応 |
ss
コマンドはLinuxカーネルが持つ情報を直接読み出すため、非常に高速かつ正確な出力が可能です。
netstat
は古くからあるツールですが、内部的には/procファイルシステムを通して情報を取得しており、ss
ほど効率的ではありません。現在では多くのディストリビューションでss
がデフォルトのツールとして推奨されており、将来的なメンテナンス性を考慮してもss
への移行が望まれます。
netstatコマンドを利用した確認をしたい場合はこちらのリンクを参照してください。
基本的な使い方
ssコマンドにオプションを指定することで利用することができます。
ss [オプション]
何もオプションを指定せずに実行すると、現在のすべてのTCP接続が表示されます。
ss
この出力には、ローカルアドレス、リモートアドレス、接続状態(ESTAB、LISTENなど)、関連するプロセス情報が含まれます。例えば、ウェブサーバやデータベースサーバの接続数を確認したい場合に便利です。
各出力項目の説明
各出力項目の意味は以下の通りとなります。
項目 | 説明 |
---|---|
Netid | 使用しているソケットタイプ(例: tcp , udp , unix など) |
State | 接続状態(LISTEN , ESTAB , CLOSE-WAIT など) |
Recv-Q | 受信キューのバイト数(未処理データ) |
Send-Q | 送信キューのバイト数(送信待ちデータ) |
Local Address:Port | ローカルアドレスとポート番号(サーバ側) |
Peer Address:Port | 接続相手のアドレスとポート番号(クライアント側) |
Process | 関連するプロセス情報(-p オプション指定時。PIDやコマンド名など) |
よく使うオプション一覧
よく利用するssコマンドの各オプションを以下に示します。これらのオプションを組み合わせることで、さまざまな角度からネットワーク状態を分析することが可能です。
オプション | 説明 |
---|---|
-t | TCPソケットのみを表示,TCP情報を表示 |
-u | UDPソケットのみを表示,UDP情報を表示 |
-l | LISTEN状態のソケットのみ表示,Listenポートのみを表示 |
-a | すべてのソケットを表示(LISTEN含む) |
-n | ホスト名やサービス名を解決せずに数値で表示 (ex :httpと表示せず:80と表示) |
-p | 該当ソケットに紐づくプロセス情報を表示(要sudo) |
-s | ソケットの統計情報を表示 |
-x | UNIXドメインソケットを表示 |
すべてのソケットを表示
以下コマンドですべてのソケット情報を取得します。
ss -a
LISTEN状態のTCPポートを確認
以下コマンドで接続待ちしているソケットを取得します。
ss -nlt
サーバとして動作しているプロセスがどのポートで待ち受けているかを確認できます。
LISTEN状態のUDPポートを確認
ss -uln
DNSサーバやNTPサーバのように、UDPで待ち受けているサービスの確認に有効です。
通信が確立しているポートを確認
以下コマンドを実行して通信が確立しているTCPソケットを取得します。
ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessESTAB 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:80ESTAB 0 88 xx.xxx.x.x:xxxx xxx.xxx.xx.xx:xxxxxESTAB 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:80
以下コマンドを実行して通信が確立しているUDPソケットを取得します。
ss -nu
プロセス情報付きでポート番号を表示
特定の接続がどのプロセスに属しているかを確認したいときに便利です。特にポート競合のトラブルシューティングに役立ちます。 以下コマンドでTCP、UDP両方の接続を、ホスト名解決なし、プロセス情報付きで一覧表示します。
sudo ss -tunap
UNIXドメインソケットの一覧表示
nginxやPostgreSQLなど、ローカル通信にUNIXソケットを利用するソフトウェアの接続状況を確認できます。
ss -x
ソケットの統計情報を表示
以下コマンドでソケットの種類ごとに本数をサマリ表示します。
ss -s
Total: 125TCP: 15 (estab 3, closed 0, orphaned 0, timewait 0)
Transport Total IP IPv6RAW 0 0 0UDP 8 6 2TCP 15 12 3INET 23 18 5FRAG 0 0 0
フィルタ機能を使いこなす
ss
コマンドでは、詳細なフィルタ指定が可能です。以下のような高度な条件指定に対応しています。
特定のポートで待ち受けているサービスを探す
ss -ltn sport = :80
HTTPサービスなど、特定のポートでLISTENしているTCPソケットを探します。
State Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessLISTEN 0 511 0.0.0.0:80 0.0.0.0:*LISTEN 0 511 [::]:80 [::]:*
特定のIPアドレスへの接続を確認
あるホストへの接続状態をチェックしたい場合に使用します。ファイアウォールのトラブルシュートにも有効です。
ss -tn dst 192.168.0.1
複数条件の組み合わせ
特定ネットワーク内からHTTPSポートへ接続している通信だけを抽出できます。
ss -tan 'src 192.168.0.0/24 and dst = :443'
まとめ
ss
コマンドは、軽量で高速、かつ柔軟なフィルタ機能を持つ優れたネットワーク調査ツールです。TCP/UDPの通信状態の確認から、特定ポートやプロセスに関する調査、さらにUNIXソケットの確認まで幅広く対応しています。特にリアルタイム性が求められるトラブルシューティングや監視用途において、その価値は非常に高いものです。
基本の使い方をマスターすることで、ネットワークトラブルの原因調査やサーバのポート確認がスムーズになります。netstat
からの移行がまだの方は、ぜひこの機会にss
に慣れておきましょう。さらにスクリプトや監視ツールと組み合わせることで、自動化されたネットワーク監視体制の一部としても活用できます。
Linuxユーザにお勧めの本
![]() |
新品価格
|

![]() |
ゼロからわかる
新品価格
|

![]() |
エンジニア1年生のための
新品価格
|

以上で本記事の解説を終わります。
よいITライフを!