ss コマンドの出力結果を徹底解説!ネットワーク状態の確認方法とトラブルシューティング

最終更新日 2025年2月1日

スポンサーリンク

ss コマンドとは?

ss(Socket Statistics)コマンドは、Linuxでネットワークの接続状況を確認するためのツールです。
サーバーの運用管理やトラブルシューティングの際に、現在の通信状態やリスニング中のポートを迅速に把握するのに役立ちます。

ネットワークの正常な動作を維持するためには、どのポートが開いているのか、どのIPアドレスと通信しているのかを適切に監視することが重要です。
例えば、サーバーが特定のポートで適切に待機しているか、不審な接続が存在しないかを ss コマンドを使って簡単に確認できます。

SSコマンドの概要については下記で紹介しているので興味があったら見てみてください!

ss コマンドの役割
ss コマンドは通信状態やリスニング中のポートを
リアルタイムで確認できます。
通信状態の監視
ss コマンドはサーバーの通信状態をリアルタイムで監視し、現在の通信状況を迅速に把握することができます。そのため、不審な接続を即座に発見することが可能です。
ポートのリスニング
ss コマンドを使えばリスニング中のポートを簡単に確認でき、サーバーが適切なポートで待機しているかを監視できます。
ss コマンドの役割
スポンサーリンク

ss コマンドの基本的な使い方

ss コマンドは、オプションを組み合わせることで、さまざまなネットワーク情報を取得することができます。以下に代表的なオプションをいくつか紹介します。

ss -t(TCP接続の表示)
TCP接続に関する情報を表示します。HTTPやSSHなど、TCPプロトコルを利用する接続の状態を確認する際に使用します。

ss -u(UDP接続の表示)
UDP接続に関する情報を表示します。DNSやNTPなど、UDPプロトコルを利用する接続を確認する際に使用します。

ss -l(リスニング中のポートの表示)
サーバーが現在リスニングしているポート(接続を待機しているポート)を表示します。

ss -a(すべてのソケット情報を表示)
リスニング中のソケットと、確立済みの接続を含むすべてのソケット情報を表示します。ネットワーク全体の状況を一度に把握する際に使用します。

ss -n(ホスト名を解決せずに表示)
ホスト名(例:localhost)をIPアドレスで直接表示します。名前解決の処理を省略するため、表示が高速化されます。

SSコマンドのオプションの使い方や、出力結果の見方については下記で紹介しているので興味があったら見てみてください!

ss コマンドの基本的な使い方
ss コマンドはネットワーク情報を取得できるコマンドです。
基本操作方法
ss コマンドは、特定のオプションを指定することで、ネットワーク接続に関する詳細な情報を表示します。基本コマンドは「ss [オプション]」です。
代表的なオプション
代表的なオプションには、TCP接続を表示する「-t」、UDP接続を表示する「-u」、リスニング中のポートを表示する「-l」などがあります。
出力結果の見方
各オプションの出力結果には、接続状態や受信/送信キュー、ローカル/ピアアドレスなどが含まれます。
ss コマンドの基本的な使い方
スポンサーリンク

ss コマンドの出力結果の見方

ss コマンドを実行すると、現在のネットワーク接続に関する情報が一覧で表示されます。
出力結果にはさまざまな項目が含まれており、それぞれの意味を正しく理解することで、ネットワークの状態を詳しく把握できます。

ここでは、ss コマンドの出力結果の各項目の意味と、接続状態(State)の種類について詳しく解説します。

State      Recv-Q Send-Q Local Address:Port    Peer Address:Port
ESTAB      0      0      192.168.1.10:22       192.168.1.50:50123
LISTEN     0      128    0.0.0.0:80            0.0.0.0:*

出力結果で表示される各項目の意味や、実際の出力結果をもとにした見方、解説を以降のセクションで記載します。

  1. State(接続の状態)
  2. Recv-Q(受信キュー)
  3. Send-Q(送信キュー)
  4. Local Address:Port(ローカルアドレスとポート)
  5. Peer Address:Port(接続先のアドレスとポート)
出力される各項目の説明
ss コマンドの出力にはさまざまな項目が含まれており、それぞれの意味を理解することが重要です。
接続の状態
「State」は、ネットワーク接続の現在の状態を表し、「LISTEN」や「ESTABLISHED」など、どのような通信が行われているかを判断するのに役立ちます。
受信キュー
「Recv-Q」は、サーバーやクライアントの受信待ちデータ量を示し、この値が大きい場合、通信の遅延やネットワークの混雑が発生している可能性を示します。
送信キュー
「Send-Q」は、サーバーやクライアントが送信待ちのデータ量を示し、大きな値の場合、データの送信がスムーズに行われていない可能性を示します。
出力される各項目の説明
スポンサーリンク

State(接続の状態)

この項目は、ネットワーク接続の現在の状態 を表します。この項目では下記4種類の状態が表示されます。

状態説明
LISTENサーバーがクライアントからの接続を待機している状態(WebサーバーやSSHサーバーなど)
ESTABLISHEDクライアントとサーバーの間で接続が確立され、通信が行われている状態
TIME-WAIT接続が終了し、完全に閉じるまでの待機状態
CLOSE-WAIT相手から接続終了の通知を受け取ったが、まだ処理が完了していない状態

実際の出力結果と見方

下記出力では、下記の内容を読み取ることができます。

①このサーバーはSSH(ポート22)で外部からの接続を待ち受けている
192.168.1.50 のPCがSSHで 192.168.1.10 に接続している(ログイン中)

State       Recv-Q Send-Q Local Address:Port    Peer Address:Port
LISTEN      0      128    0.0.0.0:22            0.0.0.0:*
ESTABLISHED 0      0      192.168.1.10:22       192.168.1.50:50123

各行の出力結果の見方の詳細

① LISTEN の行

  • 状態 (LISTEN)
    • これは「待ち受け中(リッスン)」の状態です。サーバーが 外部からの接続を受け付ける準備ができている ことを意味します。
  • ポート (22)
    • 22番ポートは SSH(Secure Shell) の通信に使われるポートです。つまり、このサーバーは SSH接続を受け付ける状態 になっています。
  • アドレス (0.0.0.0)
    • 0.0.0.0全てのネットワークインターフェース で待ち受けることを意味します。簡単に言うと、どのIPアドレスからでもSSH接続ができる状態です。

② ESTABLISHED の行

  • 状態 (ESTABLISHED)
    • 「確立済み(ESTABLISHED)」は 現在、接続が確立されている状態 を表します。つまり、すでに誰かがSSH接続中です。
  • サーバー側 (192.168.1.10:22)
    • サーバーのIPアドレスは 192.168.1.10 で、SSH(ポート22)で接続を受けています。
  • 接続元 (192.168.1.50:50123)
    • 192.168.1.50 というコンピュータが 50123 番のポートを使ってこのサーバーに接続しています。これは、リモートからSSHでログインしているPCのIPアドレスです。
スポンサーリンク

Recv-Q(受信キュー)

Recv-Q は、サーバーやクライアントが受信待ちのデータ量(バイト単位) を示します。
この値が 0 であれば、現在受信待ちのデータはありません。

しかし、Recv-Q の値が大きい場合、「サーバーやクライアントが受信すべきデータを処理しきれず、キューに溜まっている」 ことを意味します。この場合下記の問題の可能性が考えられます。

  • 通信が遅れている
  • ネットワークの混雑が発生している
  • サーバーの処理能力が追いついていない

実際の出力例

State       Recv-Q Send-Q Local Address:Port    Peer Address:Port
ESTABLISHED 5000   0      192.168.1.10:22       192.168.1.50:50123

この場合、Recv-Q5000 なので、5000バイトのデータが受信待ちのまま残っている ことが分かります。サーバー側の負荷が高いか、通信の遅延が発生している可能性があります。

出力結果の見方の詳細

  • SSH接続 (ESTABLISHED) は確立されている
    • 192.168.1.50 のPCが 192.168.1.10 のSSHサーバーにログイン中
  • Recv-Q(受信キュー)が5000バイト
    • サーバー側で処理しきれていないデータが溜まっている ことを意味する
    • 通常、Recv-Q0かごく小さい値 であるべき
    • 5000 という値は 何か問題が発生している可能性が高い
  • Send-Q(送信キュー)は0なので問題なし
    • サーバーからクライアントへのデータ送信は詰まっていない

<なぜ Recv-Q が増えているのか?>
Recv-Q が5000というのは、クライアントからのデータをサーバーが受け取っているけれど、まだ処理できていないことを意味します。
原因としては以下が考えられます。

① クライアントが大量のデータを送信している
クライアント (192.168.1.50) から 大量のSSHデータ(コマンドやファイル転送) が送られている
例: scp や rsync で大きなファイルを転送中

② サーバー側の負荷が高く、処理が追いついていない
・CPUやメモリの使用率が高く、データの処理が遅れている
⇒top や htop コマンドで サーバーの負荷を確認しましょう。

③ ネットワークの遅延やパケットロス
・回線速度が遅い、または パケットロスが発生している
⇒ping や netstat -i でネットワークの状態をチェック

④ クライアント側の問題
・クライアントが 応答を停止(フリーズ・切断しかけている)
⇒クライアントの負荷を top コマンドなどで確認しましょう。

Recv-Q(受信キュー)
Recv-Qはサーバーやクライアントが受信待ちのデータ量を示します。
受信キューの役割
Recv-Qはネットワーク通信の受信待ちデータ量を示し、サーバーやクライアントの通信効率を把握する指標となります。
値が大きい場合
Recv-Qの値が大きい場合、データ処理の遅延やネットワーク混雑の予兆です。受信待ちが多い場合は速度低下や通信遅延、混雑が考えられます。
Recv-Q(受信キュー)の要点
スポンサーリンク

Send-Q(送信キュー)

Send-Q は、サーバーやクライアントが送信待ちのデータ量(バイト単位) を示します。
通常、この値は 0 ですが、大きな値になっている場合、データの送信がスムーズに行われていない 可能性があります。

Send-Q が増える原因としては、以下のようなものがあります。

  • 相手側がデータを受け取れていない(ネットワークの遅延)
  • サーバーやクライアントの帯域幅が不足している
  • ファイアウォールやルーターの設定で送信がブロックされている

実際の出力結果

State       Recv-Q Send-Q Local Address:Port    Peer Address:Port
ESTABLISHED 0      3000   192.168.1.10:22       192.168.1.50:50123

この場合、Send-Q3000 なので、サーバーが3000バイトのデータを送信しようとしているが、まだ送信が完了していない 状態を示します。
ネットワークが詰まっているか、通信相手がデータを受け取れていない可能性があります。

出力結果の見方の詳細

  • SSH接続 (ESTABLISHED) は確立されている
    • 192.168.1.50 のPCが 192.168.1.10 にSSHでログイン中
  • Send-Q(送信キュー)が3000
    • サーバー側が送信しようとしているデータが3000バイト溜まっている
    • つまり、クライアント側(192.168.1.50)がデータを受け取れていない、もしくは受け取るのが遅い
    • 通常、Send-Q0か小さい値 であるべき
    • 3000 という値は、通信が詰まっている可能性を示唆
  • Recv-Q(受信キュー)は0なので、サーバーの受信処理は問題なし
    • クライアントからのデータ受信は正常

<なぜ Send-Q が増えているのか?>
① クライアント側(192.168.1.50)が遅い or 応答していない
・クライアントが高負荷になっている
・クライアントのネットワークが遅い(Wi-Fiの不調、回線の遅延など)
・クライアントが一時的にフリーズしている

② ネットワークの問題
・サーバー→クライアントへの通信が遅延している
・パケットロス(途中でデータが失われている)
⇒ping や netstat -i でネットワークの状態を確認しましょう。

③ クライアントが大容量データを受信している
・cat や less で大きなログを見ている
・scp で大きなファイルを受信している
・rsync でファイル転送中

④ クライアントが切断しかけている
・192.168.1.50 のPCがスリープ・シャットダウン・ネットワーク切断中

Send-Q(送信キュー)
Send-Qとは、サーバーやクライアントが送信待ちのデータ量を示しており、値が大きい場合はデータ送信に遅延が生じている可能性があります。
送信待ちのデータ
Send-Qは、サーバーやクライアントが送信を待っているデータ量を示します。通常、この値はゼロが理想です。
高いSend-Qの意味
Send-Qの値が大きい場合、ネットワークの遅延、帯域幅不足、相手側のデータ受信障害などの問題が考えられます。
Send-Q(送信キュー)の要点
スポンサーリンク

Local Address:Port(ローカルアドレスとポート)

Local Address:Port は、自身のマシンのIPアドレスとポート番号 を表します。
この情報を見ることで、どのIPアドレスがどのポートを使って通信しているかが分かります。

例えば、以下のような出力を見てみましょう。

State       Recv-Q Send-Q Local Address:Port    Peer Address:Port
ESTABLISHED 0      0      192.168.1.10:22       192.168.1.50:50123

この場合、Local Address:Port192.168.1.10:22 なので、サーバー(自身)のIPアドレス 192.168.1.10 のポート22(SSH)で接続(待ち受け) しているということが分かります。

つまり、このサーバーがSSH(22番ポート)を使ってクライアントと通信を行っている(待ち受け) ことが分かります。

Local Address:Port(ローカルアドレスとポート)
Local Address:Portは自身のマシンのIPアドレスとポート番号を表します。
ローカルアドレス
ローカルアドレスは、通信を行うサーバーまたはクライアントのIPアドレスを示します。通信の発信元を表します。
ローカルポート
ローカルポートは、自身が通信で使用しているポート番号を示します。
通信の確認
Local Address:Portの情報を元に、どのIPアドレスがどのポートを使って通信しているかを確認できます。
Local Address:Port(ローカルアドレスとポート)の要点
スポンサーリンク

Peer Address:Port(接続先のアドレスとポート)

Peer Address:Port は、通信相手(クライアントや別のサーバー)のIPアドレスとポート番号 を示します。
この部分を見ることで、サーバーがどのクライアントと通信しているのかが分かります。

例えば、以下の出力を見てみましょう。

State       Recv-Q Send-Q Local Address:Port    Peer Address:Port
ESTABLISHED 0      0      192.168.1.10:22       192.168.1.50:50123

この場合、Peer Address:Port192.168.1.50:50123 なので、 クライアント 192.168.1.50 が動的ポート(50123番)を使ってサーバー(192.168.1.10:22)にSSH接続中ということが分かります。
※クライアントがサーバーに接続する際、クライアント側はランダムなポート(動的ポート)を使用 します。そのため、50123 のように、1024以上のポート番号が表示されることが一般的です。

SSコマンドの重要性
ss コマンドを使うことで、ネットワーク状態を迅速かつ正確に把握し、効果的なトラブルシューティングが可能になります。
効率的な監視
ss コマンドを使用することで、リアルタイムでのネットワーク状態の監視が可能になります。これにより、不審な接続や不規則な送受信をタイムリーに検出し対処できます。
問題解決の迅速化
ss コマンドの出力結果を理解することで、ネットワークトラブルの原因を素早く特定し、問題解決のプロセスを大幅に短縮できます。
稼働の維持
ネットワークの正常な動作を保つためには、定期的な監視が不可欠です。ss コマンドを定期的に使用し、ネットワークを正常な状態を維持すること大切です。
SSコマンドの重要性
スポンサーリンク

接続状態(State)の種類と意味

ss コマンドを実行すると、ネットワーク接続の状態を表す State(ステータス) が表示されます。
このステータスを理解することで、サーバーがどのような状態で通信を行っているのかを把握できます。ここでは、接続状態を詳しく解説します。

  1. LISTEN(接続待機中)
  2. ESTABLISHED(接続確立済み)
  3. TIME-WAIT(接続終了待ち)
  4. CLOSE-WAIT(相手からの接続終了待ち)
  5. SYN-SENT(接続要求中)
接続状態(State)の種類と意味
ss コマンドの出力からわかる接続状態の種類とその意味を理解することで、ネットワークの通信状況を正確に把握することができます。
LISTEN(接続待機中)
サーバーがクライアントからの接続を待っている状態を示します。この状態のポートは、外部からの接続を受け入れる準備ができています。
ESTABLISHED(接続確立済み)
クライアントとサーバーの間で接続が確立し、データ通信が行われている状態を示します。両者が正常に通信できていることを確認できます。
TIME-WAIT(接続終了待ち)
接続が終了し、完全に閉じるまでの待機状態を示します。大量に発生するとサーバーのリソース消費の可能性があるため注意が必要です。
接続状態(State)の種類と意味
スポンサーリンク

LISTEN(接続待機中)

LISTENステータスはサーバーがクライアントからの接続を待っている状態を示します。
例えば、Webサーバー(Apache/Nginx)やSSHサーバー(sshd)は、クライアントのリクエストを待つために LISTEN 状態になります。
LISTEN 状態になっているポートは、外部からの接続を受け付ける準備ができています。

出力例

LISTEN     0      128    0.0.0.0:80            0.0.0.0:*

この場合、下記の内容が読み取れます。

  • ポート80(HTTP)がクライアントからの接続を待機している
  • 0.0.0.0:80 は、どのIPアドレスからの接続も受け入れる設定(全てのインターフェースで待機)
LISTEN(接続待機中)
サーバーがクライアントからの接続を待っている状態を示します。
LISTENの意味
LISTENは、サーバーがクライアントからの接続を待機している状態を示します。リスニング状態のポートは、外部からの接続を受け入れる準備が整っています。
状態の確認方法
リスニング状態のポートを確認するには、「ss -tln」コマンドを使用します。このコマンドを実行することで、サーバーがどのポートで接続を待機しているかを簡単に確認できます。
LISTEN(接続待機中)の要点
スポンサーリンク

ESTABLISHED(接続確立済み)

ESTABLISHEDステータスは、クライアントとサーバーの間で 接続が確立し、データ通信が行われている状態を示します。クライアントがWebサイトを閲覧していたり、SSHでサーバーにログインしていると、この状態になります。

出力例

ESTAB      0      0      192.168.1.10:22       192.168.1.50:50123

この場合、下記の内容が読み取れます。

  • サーバー(192.168.1.10)のSSH(ポート22)に、クライアント(192.168.1.50)が接続している
  • クライアントのポート 50123 は、動的ポート(接続ごとに割り当てられるポート)
ESTABLISHED(接続確立済み)
クライアントとサーバーの間で接続が確立している場合、データ通信が行われています。この状態を理解することは重要です。
接続確立の意味
ESTABLISHEDは、クライアントとサーバー間で接続が確立し、データ通信が行われている状態を示します。ブラウジングやSSHログイン等で出力されます。
ESTABLISHED(接続確立済み)の意味
スポンサーリンク

TIME-WAIT(接続終了待ち)

TIME-WAITステータスは、接続が終了し、完全に閉じるまでの待機状態を示します。接続が突然切れた場合や、大量の接続を処理した後によく発生します。
通常は数十秒で消えますが、大量に発生している場合はサーバーの設定を見直す必要があります。

出力例

TIME-WAIT  0      0      192.168.1.10:443      203.0.113.100:50234

この場合、下記の内容が読み取れます。

  • サーバー(192.168.1.10)のHTTPS(ポート443)の接続が終了し、待機状態に入っている
  • クライアント(203.0.113.100)がWebサイトを閲覧していたが、接続が切れた後の状態
新人エンジニア
新人エンジニア

TIME-WAITが多すぎるとどうなるんですか?

先輩エンジニア
先輩エンジニア

TIME-WAITが多すぎると、サーバーのリソース(ポートやメモリ)を消費し、パフォーマンスが低下する可能性があります。
その場合は、ss -tan state time-wait を実行して、どのポートで発生しているかを確認しましょう。

TIME-WAIT(接続終了待ち)
接続終了待ちのTIME-WAITは、大量に発生するとサーバーリソースを消費し、パフォーマンス低下を招く可能性があります。
TIME-WAITの意味
TIME-WAITは接続終了後、セッションが最終的に閉じるまでの待機状態を示します。通常は数十秒で消えますが、頻繁に発生すると問題になることがあります。
リソース消費のリスク
TIME-WAITが大量発生すると、サーバーのポートやメモリなどのリソースを消費し、システム全体のパフォーマンスが低下するリスクがあります。
TIME-WAIT(接続終了待ち)の要点
スポンサーリンク

CLOSE-WAIT(相手からの接続終了待ち)

CLOSE-WAITステータスは、クライアントやサーバーのどちらかが接続を終了したが、もう一方の処理が完了していない状態を示します。
通常、クライアントが接続を閉じた際に発生しますが、アプリケーションの問題で長時間続くことがあります。

出力例

CLOSE-WAIT  0      0      192.168.1.10:3306    192.168.1.200:55021

この場合、サーバー(192.168.1.10)のMySQL(ポート3306)に、クライアント(192.168.1.200)が接続していたが、終了処理が完了していないという状況です。

新人エンジニア
新人エンジニア

CLOSE-WAITが増え続けてしまう場合どうやったら対策できますか?

先輩エンジニア
先輩エンジニア

CLOSE-WAITが増え続ける場合、アプリケーションが適切に接続を閉じていない可能性が高いです。
そのため、ss -tan state close-wait でどのポートで発生しているかを確認し、対象のプロセスを特定して修正する必要があります。

CLOSE-WAIT(相手からの接続終了待ち)
CLOSE-WAITはクライアントやサーバーのどちらかが接続を終了したが、
片方が接続中の状態であることを示します。
CLOSE-WAITの原因
CLOSE-WAITは、接続を終了したクライアントやサーバーがまだ処理を完了していないために発生します。アプリケーションが接続を正しく終了できていないことで、この状態が続くことがあります。
CLOSE-WAITの問題点
CLOSE-WAITが長引くと、サーバーのリソースを消費し、他の接続に影響を与える可能性があります。これはサーバーのパフォーマンス低下や新しい接続の待ち受けに影響します。
CLOSE-WAITの対策方法
CLOSE-WAITの対策として、アプリケーションコードの修正が必要です。また、定期的なサーバーの監視と、適切なリソース管理を行うことも重要です。サーバーの設定を見直し、対応策を講じてください。
CLOSE-WAIT(相手からの接続終了待ち)の要点
スポンサーリンク

SYN-SENT(接続要求中)

SYN-SENTステータスは、クライアントがサーバーに接続しようとしているが、まだ確立していない状態、SYN パケットを送信済みだが、サーバーからの応答(SYN-ACK)が返ってきていないという状態を指します。
ネットワークの問題や、サーバー側のファイアウォールによるブロックが原因の可能性があります。

出力例

SYN-SENT   0      0      192.168.1.50:50500    192.168.1.10:443

この場合、クライアント(192.168.1.50)がサーバー(192.168.1.10)のHTTPS(443番ポート)に接続しようとしているが、まだ応答がないという状況ということになります。

新人エンジニア
新人エンジニア

SYN-SENTが多い場合、何が原因で多くなっているんでしょうか。

先輩エンジニア
先輩エンジニア

SYN-SENTが多い場合、以下の3つが原因と考えられます。
①サーバーのポートが開いていない
②ファイアウォールやセキュリティ設定によるブロック
③ネットワーク遅延やパケットロス

SYN-SENT(接続要求中)
クライアントがサーバーに接続しようとしているが
まだ接続が完了していない状態を示します。
接続要求の状態
クライアントがサーバーに接続要求を送信しましたが、サーバーからの応答がまだ返ってきていない状態を指します。
発生原因と対策
サーバーのポートが開いていない、ファイアウォールやセキュリティ設定によるブロック、ネットワーク遅延やパケットロスが原因となります。適切なポート開放や設定確認が必要です。
SYN-SENT(接続要求中)の要点
ゴリタンが愛用しているLinuxの教科書たち
https://amzn.to/4hBQa2y
https://a.r10.to/hkpc1F

この記事も参考になるかも!
この記事を書いた人!

ゴリタン

インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。

CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。

あなたにオススメの広告
スポンサーリンク
Linux教科書