Linux ssコマンドのオプション完全ガイド|基本から実践まで徹底解説!【基本編】

最終更新日 2025年1月26日

スポンサーリンク

ssコマンドとは?基本概要と用途

ss コマンド(Socket Statistics)は、Linuxでネットワークソケットの状態を取得するためのツールです。
サーバーの管理やネットワークトラブルシューティングの際に、現在の接続状況やリスニングポートを素早く確認するのに役立ちます。

従来は netstat コマンドが使用されていましたが、ss はより高速かつ詳細な情報を取得できるため、現在では netstat の代替として推奨されています。

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

SSコマンドの概要
ssコマンドはネットワークソケットの状態を取得するためのツールで、netstatの代替として推奨されます。
高速&詳細
ssコマンドはnetstatに比べて高速かつ詳細にネットワークソケットの状態を表示でき、ネットワークトラブルシューティングに非常に役立ちます。
多用途対応
ssコマンドは接続状況やリスニングポートの確認に使用され、特定のポートを使用するプロセスの特定や統計情報の表示も可能です。
ssコマンドの概要
スポンサーリンク

ssコマンドの基本構文

ss [オプション] の使い方

ss コマンドは、基本的に以下の形式で使用します。

ss [オプション]

オプションを指定することで、取得する情報を絞り込むことができます。

例えば以下のような感じです。

  • ss -tTCP接続のみを表示
  • ss -uUDP接続のみを表示
  • ss -lLISTEN状態のソケットを表示
  • ss -pプロセス情報を含めて表示
ssコマンドの基本構文
ssコマンドの基本構文と主要なオプションを理解し
ネットワーク接続の状態を迅速に把握する!
基本構文
ssコマンドの基本形式は「ss [オプション]」です。特定のオプションを組み合わせることで、必要な情報を効率的に取得できます。
TCP接続を表示する -t
「ss -t」のオプションを使用することで、現在のTCP接続のみを表示できます。例として、sshやhttpサービスの接続状況を確認できます。
UDP接続を表示する -u
「ss -u」のオプションで、現在のUDP接続のみを表示可能です。特に、DNSやストリーミングサービスの接続状況を把握する際に有用です。
ssコマンドの基本構文

すべてのTCP接続を表示

ss -tan

実行結果

State Recv-Q Send-Q Local Address:Port Peer Address:Port 
ESTAB 0 0 192.168.1.10:22 192.168.1.50:50123 
ESTAB 0 0 192.168.1.10:443 203.0.113.100:50234</code>

リスニングしているポートを確認

ss -lnt

実行結果

State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 128 0.0.0.0:80 0.0.0.0:* 
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*</code>

特定のポートを使用しているプロセスを確認

ss -ltnp | grep :80 

実行結果

LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6)) 
ssコマンドの基本オプションまとめ
接続の種類指定オプション
ssコマンドの-tはTCP接続のみを表示し、-uはUDP接続のみを表示します。これにより、必要な接続情報を素早く絞り込んで確認できます。
接続状態を絞り込むオプション
-aオプションはすべてのソケットを表示し、-lはLISTEN状態のソケットのみを表示します。このように、接続状態に応じて情報を整理できます。
ssコマンドの基本オプションまとめ
スポンサーリンク

ssコマンドの主要オプション一覧【基本編】

ss コマンドには多くのオプションがあり、用途に応じて適切なものを使い分けることで、必要なネットワーク情報を素早く取得できます。
ここでは、特によく使われる基本的なオプションをカテゴリごとに紹介し、実行例を交えて詳しく解説します。

  1. -t(TCP接続を表示)
  2. -u(UDP接続を表示)
  3. -w(RAWソケットを表示)
  4. -x(UNIXドメインソケットを表示)
  5. -a(すべてのソケットを表示)
  6. -l(LISTEN状態のソケットのみ表示)
  7. -o state <状態>(特定の接続状態のソケットを表示)
  8. -n(ホスト名の解決を無効化して数値表示)
  9. -4(IPv4のみ表示)
  10. -6(IPv6のみ表示)
  11. -p(ソケットを使用しているプロセスを表示)
  12. -s(統計情報を表示)

-t(TCP接続を表示)

現在の TCP接続のみ を表示します。TCPは信頼性のある通信を行うプロトコルで、SSHやHTTPなど多くのサービスで使用されます。

実行コマンド

ss -t

実際の出力結果

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:*  

出力結果の解説

2行目の内容(SSHの接続)

この行には、サーバーが SSH(ポート22) を通じて、コンピュータと通信していることが示されています。

  • 「ESTAB(ESTABLISHED)」という状態は、「接続が確立されている」ことを意味します。つまり、現在 SSHでの通信が行われている最中 です。
  • 「Recv-Q(受信キュー)」と「Send-Q(送信キュー)」がどちらも 0 になっているのは、データの受け渡しに遅延がなく、スムーズに通信が行われていることを示しています。
  • 「Local Address:Port」の 192.168.1.10:22 という情報は、このサーバーが IPアドレス192.168.1.10のポート22(SSH) を使って通信をしていることを示します。
  • 「Peer Address:Port」の 192.168.1.50:50123 という情報は、相手のコンピュータ(クライアント)のIPアドレスが 192.168.1.50 であり、50123番のポートを使ってサーバーに接続している ことを示します。

つまり、この行の情報から、「192.168.1.50 というPCが、SSHを使って192.168.1.10 のサーバーに接続している」 ということがわかります。

3行目の内容(Webサーバーの待機状態)

この行には、サーバーが ポート80(HTTP) で通信を待ち受けていることが示されています。

  • 「LISTEN(待機中)」という状態は、「このポートで接続を待っている」ことを意味します。つまり、サーバーは Webブラウザなどからのリクエストを受け付ける準備ができている ということです。
  • 「Recv-Q(受信キュー)」が 0 なので、現在サーバーが受信待ちのデータを持っていないことが分かります。
  • 「Send-Q(送信キュー)」が 128 というのは、最大で128個の接続を待機できるように設定されていることを示しています。これは一般的なWebサーバーの設定であり、問題はありません。
  • 「Local Address:Port」の 0.0.0.0:80 という情報は、このサーバーがポート80(HTTP)を開いており、どのIPアドレスからの接続でも受け付ける ことを意味します。0.0.0.0 は「すべてのネットワークインターフェース」を指します。
  • 「Peer Address:Port」の 0.0.0.0:* という表記は、「まだ特定のクライアントとの接続は確立されていない」ことを示しています。

つまり、この行の情報から、「このサーバーはWebサーバーを実行中で、どこからでもHTTP(ポート80)の接続を受け付ける状態になっている」 ということが分かります。

接続の種類を指定するオプション -t(TCP接続を表示)
ss -tオプションを使用すると現在のTCP接続情報のみ表示します。
ss -tオプション
ssコマンドに-tオプションを指定することで、TCP接続のみを表示します。
実行結果
ESTABとLISTEN状態のTCP接続のみが表示されます。
接続の種類を指定するオプション -t(TCP接続を表示)
スポンサーリンク

-u(UDP接続を表示)

現在の UDP接続のみ を表示します。UDPはコネクションレスのプロトコルで、DNSやストリーミング通信などで使用されます。

実行コマンド

ss -u

実際の出力結果

State      Recv-Q Send-Q Local Address:Port  Peer Address:Port  
UNCONN     0      0      127.0.0.1:123       0.0.0.0:*  

上記の出力結果の解説

この行には、サーバーが NTP(Network Time Protocol、時刻同期サービス) を実行し、ポート123で待機していることが示されています。

  • 「UNCONN(未接続)」 という状態は、「このソケットは接続を確立していないが、データの送受信が可能な状態で待機している」ことを意味します。
    • UDPを使用するサービス(NTPなど)では、TCPのように接続を確立しないため、このような状態になります。
    • つまり、「サーバーはNTPリクエストを受け取る準備ができているが、まだ特定の相手とは通信していない」状態です。
  • 「Recv-Q(受信キュー)」と「Send-Q(送信キュー)」がどちらも 0 になっているのは、現在、NTPサービスが受信待ちや送信待ちのデータを持っていないことを示しています。
    • これは、まだデータのやり取りが発生していないか、送受信がスムーズに処理されている状態です。
  • 「Local Address:Port」の 127.0.0.1:123 という情報は、このサーバーが IPアドレス127.0.0.1(ローカルホスト)ポート123(NTP用ポート) を使って動作していることを示します。
    • これは、このNTPサービスが このサーバー内でのみ時刻同期を行う設定 になっており、外部ネットワークからのアクセスは受け付けていないことを意味します。
  • 「Peer Address:Port」の 0.0.0.0:* という表記は、「まだ特定のクライアントとの通信は確立されていない」ことを示しています。
    • これは、NTPサービスが「どのIPアドレスからのリクエストも受け入れる状態」で待機していることを表していますが、現在は特定の相手と通信していないという意味です。

つまり、この行の情報から、「このサーバーはNTPサービスを実行中だが、ローカルホスト(127.0.0.1)上でのみ動作し、外部からの接続は受け付けていない」 ということが分かります。

接続の種類を指定するオプション -u(UDP接続を表示)
ssコマンドの-uオプションを使用すると
DNSやストリーミング通信など、UDP接続の情報のみを表示できます。
uオプションとは
ss -uの実行結果では、現在のUDP接続だけが表示されます。
UDP接続の用途
UDPはDNSサーバーやストリーミングサービスなど、信頼性よりも速度を重視する通信に使用されます。
接続の種類を指定するオプション -u(UDP接続を表示)
スポンサーリンク

-w(RAWソケットを表示)

RAWソケットを表示します。パケットキャプチャツール(tcpdumpやWireshark)などで使用されることが多いです。

実行コマンド

ss -w

実際の出力結果

State      Recv-Q Send-Q Local Address:Port  Peer Address:Port  
UNCONN     0      0      0.0.0.0:1           0.0.0.0:*  
UNCONN     0      0      0.0.0.0:2           0.0.0.0:*  

上記出力結果の解説

1行目(RAWソケットの未接続状態)

  • 「UNCONN」(未接続)は、RAWソケットが待機状態であることを示しています。
  • 「Recv-Q: 0」 は、受信待ちのデータがないことを意味します。
  • 「Send-Q: 0」 は、送信待ちのデータがないことを示しています。
  • 「Local Address:Port」0.0.0.0:1 は、このRAWソケットがどのネットワークインターフェースでも使用できる状態であり、ポート1を利用していることを示します。
  • 「Peer Address:Port」0.0.0.0:* は、このRAWソケットが特定の相手と通信していないことを意味します。

この情報から、「ポート1のRAWソケットが待機中であり、まだ通信は発生していない」 ということが分かります。

2行目(別のRAWソケットの待機状態)

この行も、ポート2でRAWソケットが待機中であることを示しています。

w(RAWソケットを表示)
RAWソケットの状態を表示します。
RAWソケットとは
RAWソケットとは、低レベルのソケット通信を操作でき、ネットワークの全データを取得するために使用されます。
主な用途
RAWソケットは、主にtcpdumpやWiresharkなどのパケットキャプチャツールで利用されます。これにより、詳細なネットワークトラフィック解析が可能です。
RAWソケットとは
スポンサーリンク

-x(UNIXドメインソケットを表示)

ローカルのプロセス間通信(IPC)に使用される UNIXドメインソケット を表示します。
システム内部のソケット通信(DockerやMySQLなど)を確認する際に便利です。

実行コマンド

ss -x

実際の出力結果

State      Recv-Q Send-Q Local Address:Port  Peer Address:Port  
UNCONN     0      0      0.0.0.0:1           0.0.0.0:*  

上記の出力結果の解説

  • 「UNCONN」(未接続)は、RAWソケットが待機状態であることを示しています。
  • 「Recv-Q: 0」 は、受信待ちのデータがないことを意味します。
  • 「Send-Q: 0」 は、送信待ちのデータがないことを示しています。
  • 「Local Address: 0.0.0.0:1」 は、このRAWソケットがどのネットワークインターフェースでも使用できる状態であり、ポート1を利用していることを示します。
  • 「Peer Address: 0.0.0.0:*」 は、このRAWソケットが特定の相手と通信していないことを意味します。

この情報から、「ポート1のRAWソケットが待機中であり、まだ通信は発生していない」 ということが分かります。

実行コマンド: ss -x
ss -x コマンドを使用してUNIXドメインソケットの状態を確認し、システム内部の通信状態を効率的に把握しましょう。
UNIXドメインソケットとは
UNIXドメインソケットは、同一マシン内のプロセス間通信に使用されるソケットタイプです。IPC(Inter-Process Communication)に不可欠な通信手段です。
ss -x 実行例
ss -x コマンドを実行すると、現在のUNIXドメインソケットの状態が表示されます。例として、UNCONN(未接続)や特定の接続がないことがわかります。
ss -xコマンドの要点
スポンサーリンク

-a(すべてのソケットを表示)

デフォルトでは、確立済みの接続(ESTABLISHED)しか表示されませんが、-a を指定すると すべてのソケット を表示できます。

実行コマンド

ss -ta

実際の出力結果

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:*  
LISTEN      0       128     127.0.0.1:3306       0.0.0.0:*  

上記の出力結果の解説

1行目(SSH接続の確立)

  • 「ESTAB(ESTABLISHED)」 は、「接続が確立されている」状態を意味します。
  • 「Recv-Q: 0」「Send-Q: 0」 は、データの送受信に滞りがないことを示しています。
  • 「Local Address:Port」192.168.1.10:22 は、サーバーが 192.168.1.10ポート22(SSH) で接続を受けていることを示します。
  • 「Peer Address:Port」192.168.1.50:50123 は、クライアント 192.168.1.50 がランダムなポート 50123 を使ってSSH接続していることを意味します。

この行の情報から、サーバーにSSHでログインしているクライアントがあることが分かります。

2行目(Webサーバーの待機状態)

  • 「LISTEN」 は、「サーバーが接続を待機している」状態を意味します。
  • 「Recv-Q: 0」 は、受信待ちのデータがないことを示します。
  • 「Send-Q: 128」 は、最大128個の接続を待機できる設定になっていることを意味します。
  • 「Local Address:Port」0.0.0.0:80 は、サーバーが すべてのIPアドレス(0.0.0.0)のポート80(HTTP) で接続を受け付けていることを示します。
  • 「Peer Address:Port」0.0.0.0:* は、まだ特定のクライアントとは接続が確立されていないことを意味します。

この行の情報から、このサーバーがWebサーバー(ApacheやNginxなど)を実行中であり、HTTPリクエストを受け付ける準備ができていることが分かります。

3行目(MySQLの待機状態)

  • 「LISTEN」 の状態で、ポート 3306 が開いていることから、MySQLデータベース が起動していることが分かります。
  • 「Local Address:Port」127.0.0.1:3306 は、MySQLが ローカルホスト(127.0.0.1)のみ で接続を受け付ける設定になっていることを示します。
  • 「Peer Address:Port」0.0.0.0:* は、まだ特定のクライアントとは接続していないことを意味します。

この行の情報から、このサーバーのMySQLデータベースは、ローカルの接続のみを許可しており、外部からのアクセスは受け付けていないことが分かります。

-a(すべてのソケットを表示)
-aオプションを使用することで、デフォルトでは表示されない未確立のソケットも含め、すべてのソケットを表示できます。
デフォルトの表示
デフォルトでは、ssコマンドで表示されるのは確立済み(ESTAB状態)の接続のみです。例えば、現在通信中のSSHやHTTPの接続が該当します。
-aオプションの効果
-aオプションを使用すると、LISTEN状態のソケットや未接続のソケットなど、サーバーが使用している全てのソケットが表示されます。
実行コマンド
ss -taを実行すると、全てのTCPソケット(確立済み接続だけでなく、待機中の接続も含む)が表示されます。ss -uaでは、すべてのUDPソケットが表示されます。
ss -aオプションの要点
スポンサーリンク

-l(LISTEN状態のソケットのみ表示)

サーバーが特定のポートで 待ち受け(LISTEN)しているソケット のみを表示します。
WebサーバーやSSHサーバーの状態を確認する際に役立ちます。

実行コマンド

ss -lnt

実際の出力結果

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

上記出力結果の解説

2行目の内容(Webサーバーの待機状態)

この行には、サーバーが ポート80(HTTP) で通信を待ち受けていることが示されています。

  • 「LISTEN(待機中)」 という状態は、「このポートで接続を待っている」ことを意味します。
    • つまり、このサーバーは Webブラウザなどからのリクエストを受け付ける準備ができている ということです。
    • Webサーバー(ApacheやNginxなど)が実行されている可能性があります。
  • 「Recv-Q(受信キュー)」が 0 なので、現在サーバーが受信待ちのデータを持っていないことが分かります。
  • 「Send-Q(送信キュー)」が 128 というのは、最大で128個の接続を待機できるように設定されていることを示しています。
    • これは一般的なWebサーバーの設定であり、問題ありません。
  • 「Local Address:Port」の 0.0.0.0:80 という情報は、サーバーが ポート80(HTTP) を開いており、どのIPアドレスからの接続でも受け付けることを意味します。
    • 0.0.0.0 は「すべてのネットワークインターフェース」を指し、どのネットワークアダプタ(LAN、Wi-Fi、VPNなど)からのリクエストも処理できる状態です。
  • 「Peer Address:Port」の 0.0.0.0:* という表記は、「まだ特定のクライアントとの接続は確立されていない」ことを示しています。
    • つまり、サーバーは HTTP接続を待ち受けているが、まだ誰とも通信していない 状態です。

この行の情報から、「このサーバーはWebサーバーを実行中で、どこからでもHTTP(ポート80)の接続を受け付ける状態になっている」 ということが分かります。

3行目の内容(SSHサーバーの待機状態)

この行には、サーバーが ポート22(SSH) で接続を待ち受けていることが示されています。

  • 「LISTEN(待機中)」 の状態なので、サーバーは SSH接続を受け付ける準備ができている ということを意味します。
    • SSH(Secure Shell)は、遠隔操作やサーバー管理のために使用されるプロトコルです。
    • このサーバーは、外部からSSH接続を受け入れる設定になっています。
  • 「Recv-Q(受信キュー)」が 0 なので、現在サーバーは受信待ちのデータを持っていません。
  • 「Send-Q(送信キュー)」が 128 なので、最大128個の接続を待機できるように設定されています。
  • 「Local Address:Port」の 0.0.0.0:22 は、サーバーが ポート22(SSH) で、どのIPアドレスからの接続も受け付けることを意味します。
    • これにより、同じネットワーク内のPCやインターネット経由で、どこからでもSSH接続できるようになっています。
  • 「Peer Address:Port」の 0.0.0.0:* は、まだ特定のクライアントとは接続が確立されていないことを示しています。

この行の情報から、「このサーバーはSSHサーバーを実行中で、どこからでもSSH(ポート22)の接続を受け付ける状態になっている」 ということが分かります。

-l(LISTEN状態のソケットのみ表示)
LISTEN状態のソケットのみを表示し、WebサーバーやSSHサーバーが接続待機中であることを確認できます。
実行方法
サーバーが特定のポートで待機状態になっているソケットのみを表示するには、ssコマンドに-lオプションを指定します。
Webサーバー待機状態
LISTEN状態は、サーバーがWebブラウザからのリクエストを受け付ける準備が整っていることを表しています。
SSHサーバー待機状態
LISTEN状態のSSHサーバーは、外部からの接続要求に対して待機していることを示します。
本セクションのまとめ
スポンサーリンク

-o state <状態>(特定の接続状態のソケットを表示)

特定の状態(ESTABLISHED、TIME-WAIT、CLOSE-WAIT など)の接続のみを表示できます。

例えば、確立済み(ESTABLISHED)のTCP接続のみを表示するには

ss -tan state established

実際の出力結果

<code>State       Recv-Q Send-Q Local Address:Port   Peer Address:Port  
ESTAB       0      0      192.168.1.10:22      192.168.1.50:50123  
ESTAB       0      0      192.168.1.10:443     203.0.113.100:50234  
ESTAB       0      0      192.168.1.10:3306    192.168.1.200:55021

上記出力結果の解説

1行目(SSH接続が確立)

  • 「ESTAB(ESTABLISHED)」 は、「TCP接続が確立している」ことを意味します。
  • 「Recv-Q: 0」「Send-Q: 0」 は、データの送受信に滞りがないことを示しています。
  • 「Local Address:Port」192.168.1.10:22 は、サーバーが ポート22(SSH) で接続を受けていることを示します。
  • 「Peer Address:Port」192.168.1.50:50123 は、クライアント 192.168.1.50 がランダムなポート 50123 を使ってSSH接続していることを意味します。

この行の情報から、サーバーにSSHでログインしているクライアントがあることが分かります。

2行目(HTTPS接続が確立)

  • 「Local Address:Port」192.168.1.10:443 は、このサーバーが ポート443(HTTPS) でクライアントの接続を受けていることを意味します。
  • 「Peer Address:Port」203.0.113.100:50234 は、外部のクライアント 203.0.113.100 がポート 50234 から接続していることを示します。

この行の情報から、サーバー上でWebサイトが稼働しており、外部クライアントからHTTPS接続が確立されていることが分かります。

3行目(データベース接続が確立)

  • 「Local Address:Port」192.168.1.10:3306 は、このサーバーが ポート3306(MySQLのデフォルトポート) で接続を受けていることを示します。
  • 「Peer Address:Port」192.168.1.200:55021 は、クライアント 192.168.1.200 がポート 55021 からデータベース接続していることを示します。

この行の情報から、別のサーバー(192.168.1.200)が、このサーバーのMySQLデータベースに接続していることが分かります

-o state <状態> オプション
特定の接続状態のソケットを表示するオプション。例えば確立済みのTCP接続は `ss -tan state established` で確認できます。
接続状態の確認
-o state <状態> オプションを使用することで、確立済みの接続など特定の接続状態のソケットを簡単に確認することができます。これにより必要な情報だけを迅速に把握できます。
コマンド例
例えば、確立済みのTCP接続を表示するには `ss -tan state established` と入力します。これで、現在確立されている全てのTCP接続を表示することができます。
出力結果
出力結果には、接続状態、受信待ちと送信待ちのキュー、ローカルアドレスとポート、およびピアアドレスとポートが表示され、簡潔に状況を把握できます。
-o state <状態> オプションの要点
スポンサーリンク

-n(ホスト名の解決を無効化して数値表示)

デフォルトでは、ss はIPアドレスをホスト名に変換しようとします。
しかし、DNS解決に時間がかかるため、-n を指定して 数値で表示 すると処理が高速化されます。

実行コマンド

ss -tan

実際の出力結果

<code>State       Recv-Q Send-Q Local Address:Port   Peer Address:Port  
LISTEN      0      128    0.0.0.0:22           0.0.0.0:*  
LISTEN      0      128    0.0.0.0:80           0.0.0.0:*  
LISTEN      0      50     127.0.0.1:3306       0.0.0.0:*  
ESTAB       0      0      192.168.1.10:22      192.168.1.50:50123  
ESTAB       0      0      192.168.1.10:443     203.0.113.100:50234  
ESTAB       0      0      192.168.1.10:3306    192.168.1.200:55021 

上記出力結果の解説

1行目(SSHの待機状態)

  • 「LISTEN」 → サーバーがポート22(SSH)で接続を待機している状態。
  • 「Recv-Q: 0」「Send-Q: 128」 → 受信待ちのデータなし、最大128個の接続を待機可能。
  • 「Local Address:Port」0.0.0.0:22 → どのIPアドレスからのSSH接続も受け付ける設定。
  • 「Peer Address:Port」0.0.0.0:* → まだ特定のクライアントとは接続していない。

この行の情報から、SSHサーバーが起動し、どこからでも接続できる状態であることが分かります。

2行目(Webサーバーの待機状態)

  • 「LISTEN」 → サーバーがポート80(HTTP)で接続を待機している状態。
  • 「Local Address:Port」0.0.0.0:80 → どのIPアドレスからのHTTP接続も受け付ける設定。
  • 「Peer Address:Port」0.0.0.0:* → まだ特定のクライアントとは接続していない。

この行の情報から、Webサーバー(ApacheやNginx)が動作中で、外部からのリクエストを受け付ける準備ができていることが分かります。

3行目(MySQLの待機状態)

  • 「LISTEN」 → サーバーがポート3306(MySQL)で接続を待機している状態。
  • 「Local Address:Port」127.0.0.1:3306 → MySQLが ローカルホスト専用 で起動していることを示す。
  • 「Peer Address:Port」0.0.0.0:* → まだ特定のクライアントとは接続していない。

この行の情報から、MySQLデータベースはローカル接続のみを許可し、外部のIPからは接続できない設定になっていることが分かります。

4行目(SSH接続が確立済み)

  • 「ESTAB(ESTABLISHED)」 → TCP接続が確立済みで通信中。
  • 「Local Address:Port」192.168.1.10:22 → サーバーのポート22(SSH)が使用されている。
  • 「Peer Address:Port」192.168.1.50:50123 → クライアント 192.168.1.50 がポート 50123 からSSH接続している。

この行の情報から、サーバーにSSH接続しているクライアントがあることが分かります。

5行目(HTTPS接続が確立済み)

  • 「ESTAB」 → TCP接続が確立済みで通信中。
  • 「Local Address:Port」192.168.1.10:443 → サーバーのポート443(HTTPS)が使用されている。
  • 「Peer Address:Port」203.0.113.100:50234 → クライアント 203.0.113.100 がポート 50234 からHTTPS接続している。

この行の情報から、外部のクライアントがWebサイトにアクセス中であることが分かります。

6行目(データベース接続が確立済み)

  • 「ESTAB」 → TCP接続が確立済みで通信中。
  • 「Local Address:Port」192.168.1.10:3306 → サーバーのポート3306(MySQL)が使用されている。
  • 「Peer Address:Port」192.168.1.200:55021 → クライアント 192.168.1.200 がポート 55021 からデータベース接続している。

この行の情報から、別のサーバー(192.168.1.200)がデータベースにアクセスしていることが分かります。

ホスト名の解決を無効化し数値で表示するオプション。DNS解決なしで素早く結果を得ることが可能です。

デフォルトでは、ssコマンドはIPアドレスをホスト名に変換します。しかし、DNS解決に時間がかかるため、このオプションを使用することで処理を高速化できます。

ホスト名の解決を無効化してIPアドレスを数値のままで表示するため、名前解決が出来ない状況の時でもネットワークのトラブルシューティングで利用可能です。
-nオプションの要点
スポンサーリンク

-4(IPv4のみ表示)

IPv4のソケット情報のみを表示します。

実行コマンド

ss -4 -tan

実際の出力結果

State       Recv-Q Send-Q Local Address:Port   Peer Address:Port  
LISTEN      0      128    0.0.0.0:22           0.0.0.0:*  
LISTEN      0      128    0.0.0.0:80           0.0.0.0:*  
LISTEN      0      50     127.0.0.1:3306       0.0.0.0:*  
ESTAB       0      0      192.168.1.10:22      192.168.1.50:50123  
ESTAB       0      0      192.168.1.10:443     203.0.113.100:50234  
ESTAB       0      0      192.168.1.10:3306    192.168.1.200:55021  
-4 オプション
IPv4のソケット情報のみを表示する方法を理解し、ネットワークのIPv4通信状態を迅速に確認します。
概要
ssコマンドの'-4'オプションを使うことで、IPv4のソケット情報のみに絞って表示できます。
実行例
実際のコマンド `ss -4 -tan` を実行することで、IPv4の通信状態を確認できます。
利用場面
例えば、IPv4の通信に限定して問題を調査したい場合や、IPv4の出力結果をもとにスクリプトを組んで、一連の処理を自動化したい場合などに利用可能です。
-4 オプションの要点
スポンサーリンク

-6(IPv6のみ表示)

IPv6のソケット情報のみを表示します。

実行コマンド

ss -6 -tan

実際の出力結果

State       Recv-Q Send-Q Local Address:Port         Peer Address:Port  
LISTEN      0      128    [::]:22                    [::]:*  
LISTEN      0      128    [::]:80                    [::]:*  
LISTEN      0      50     [::1]:3306                 [::]:*  
ESTAB       0      0      [2001:db8::1]:22           [2001:db8::2]:50123  
ESTAB       0      0      [2001:db8::1]:443          [2001:db8::100]:50234  

上記出力結果の解説

2行目(サーバーが待機しているポート)

この部分は、サーバーがどのポートで接続を待機しているかを示します。

  • LISTEN(状態) → SSHサーバーが接続を待機している状態。
  • Local Address:Port0.0.0.0:22どのIPアドレス(0.0.0.0)からもSSH接続を受け付ける 状態。
  • Peer Address:Port0.0.0.0:* → まだ特定のクライアントとは接続していない。
  • Recv-Q: 0Send-Q: 128 → 最大128個の接続を待機できる設定。

このサーバーは、外部からSSH接続を受け付ける設定になっているということが分かります。

3行目Webサーバー(ポート80)の待機状態

  • LISTEN(状態) → Webサーバーが接続を待機している状態。
  • Local Address:Port0.0.0.0:80どのIPアドレス(0.0.0.0)からのHTTPリクエストも受け付ける 状態。
  • Peer Address:Port0.0.0.0:* → まだ特定のクライアントとは接続していない。
  • Recv-Q: 0Send-Q: 128 → 最大128個の接続を待機できる設定。

Webサーバーがポート80(HTTP)で外部からのリクエストを受け付ける状態になっているということがわかります。

4行目 MySQL(ポート3306)の待機状態

  • LISTEN(状態) → データベースサーバー(MySQL)が接続を待機している状態。
  • Local Address:Port127.0.0.1:3306ローカルホスト(127.0.0.1)専用でMySQLを待機
  • Peer Address:Port0.0.0.0:* → まだ特定のクライアントとは接続していない。
  • Recv-Q: 0Send-Q: 50 → 最大50個の接続を待機できる設定。

MySQLはローカル接続のみに制限されており、外部からのアクセスは許可されていない(安全な設定)ということが分かります。

5行目 SSHの確立済み接続

  • ESTAB(状態) → SSH接続が確立済み。
  • Local Address:Port192.168.1.10:22サーバー(192.168.1.10)がSSH(ポート22)で通信中
  • Peer Address:Port192.168.1.50:50123クライアント 192.168.1.50 がSSHで接続中

このサーバーにSSHでログインしているクライアントがいる(管理者のPCの可能性が高い)ということが分かります。

6行目 HTTPS(ポート443)の確立済み接続

  • ESTAB(状態) → HTTPS接続が確立済み。
  • Local Address:Port192.168.1.10:443サーバーがHTTPS(ポート443)で通信中
  • Peer Address:Port203.0.113.100:50234クライアント 203.0.113.100 がHTTPSで接続中

外部のクライアントがWebサイトにアクセスしているということが分かります。

7行目 MySQL(ポート3306)の確立済み接続

  • ESTAB(状態) → データベース接続が確立済み。
  • Local Address:Port192.168.1.10:3306サーバーがMySQL(ポート3306)で通信中
  • Peer Address:Port192.168.1.200:55021クライアント 192.168.1.200 がデータベースに接続中

別のサーバー(192.168.1.200)がデータベースにアクセスしているということが分かります。

-6 オプション
-6 オプションはIPv6のソケット情報のみを表示するためのオプションです。このオプションを使うことでIPv6の通信状態を簡単に確認できます。
IPv6ソケットのみ
このオプションは、IPv6のソケット情報のみを表示します。従って、IPv6とIPv4の混在環境でもIPv6に限定した情報を確認することができます。
コマンドの使用例
`ss -6 -tan` コマンドを実行することで、現在のIPv6の通信状態を数値形式で詳細に表示できます。例えば、リスニング中のポートや確立された接続などが確認できます。
詳細な出力結果
出力結果には、ソケットの状態、受信キューと送信キュー、ローカルアドレスとポート、およびピアアドレスとポートなどが含まれています。具体的な状況を素早く把握できます。
-6 オプションの要点
スポンサーリンク

-p(ソケットを使用しているプロセスを表示)

各ソケットに関連する プロセス情報 を表示します。
どのプロセスが特定のポートを使用しているかを調査する際に役立ちます。

実行コマンド

ss -tulpn

実際の出力結果

State    Recv-Q Send-Q Local Address:Port  Peer Address:Port  Process  
LISTEN   0      128    0.0.0.0:80          0.0.0.0:*          users:(("nginx",pid=1234,fd=6))  
LISTEN   0      128    0.0.0.0:22          0.0.0.0:*          users:(("sshd",pid=5678,fd=3))  

上記出力結果の解説

2行目の内容(Webサーバーの待機状態)

この行には、サーバーが ポート80(HTTP) で通信を待ち受けていることが示されています。

  • 「LISTEN(待機中)」 → このポートで新しい接続を待機していることを意味します。
    • つまり、WebブラウザからのHTTPリクエストを受け付ける準備ができています。
    • Webサーバー(Nginx)が実行されていることを示します。
  • 「Recv-Q(受信キュー)」が 0 → 受信待ちのデータはない。
  • 「Send-Q(送信キュー)」が 128 → 最大128個の接続を待機できる設定になっている。
    • これは一般的なWebサーバーの設定であり、問題ありません。
  • 「Local Address:Port」の 0.0.0.0:80 → サーバーが ポート80(HTTP) を開いており、どのIPアドレスからの接続でも受け付ける状態。
    • 0.0.0.0 は「すべてのネットワークインターフェース」を意味します。
  • 「Peer Address:Port」の 0.0.0.0:* → まだ特定のクライアントとの接続は確立されていないことを示します。
  • 「Process(プロセス情報)」users:(("nginx",pid=1234,fd=6))
    • nginx(Webサーバーのプロセス)がポート80を使用中。
    • pid=1234 → NginxのプロセスID(PID)が 1234
    • fd=6 → このプロセスが使用しているファイルディスクリプタ(ソケットの識別番号)が 6

この行の情報から、Nginx Webサーバーが動作中で、外部からのHTTPリクエストを受け付ける準備ができていることが分かります。

3行目の内容(SSHサーバーの待機状態)

この行には、サーバーが ポート22(SSH) で接続を待ち受けていることが示されています。

  • 「LISTEN(待機中)」 → SSHサーバーが接続を待機している状態。
    • SSH(Secure Shell)は、リモートからサーバーにログインするためのプロトコルです。
  • 「Recv-Q(受信キュー)」が 0 → 受信待ちのデータはない。
  • 「Send-Q(送信キュー)」が 128 → 最大128個の接続を待機できる設定になっている。
  • 「Local Address:Port」の 0.0.0.0:22 → サーバーが ポート22(SSH) を開いており、どのIPアドレスからの接続でも受け付ける状態。
  • 「Peer Address:Port」の 0.0.0.0:* → まだ特定のクライアントとの接続は確立されていないことを示します。
  • 「Process(プロセス情報)」users:(("sshd",pid=5678,fd=3))
    • sshd(SSHサーバーのプロセス)がポート22を使用中。
    • pid=5678 → SSHデーモン(sshd)のプロセスID(PID)が 5678
    • fd=3 → このプロセスが使用しているファイルディスクリプタが 3

この行の情報から、SSHサーバーが動作中で、外部からのSSHログインを受け付ける準備ができていることが分かります。

-p オプション
ssコマンドの-pオプションを使うことで、特定のポートを利用しているプロセスを簡単に特定することができます。
プロセスの特定
-pオプションを使うことで、各ソケットに関連するプロセス情報(PIDやプロセス名)を表示することができ、特定のポートを使用しているプロセスを調査する際に有効です。
利用シナリオ
例えば、Webサーバーが特定のポートを使用しているか確認したい場合や、不明なプロセスがポートを占有している場合のトラブルシューティングに役立ちます。
-p オプションの要点
スポンサーリンク

-s(統計情報を表示)

ネットワークソケットの 統計情報 を要約して表示します。

実行コマンド

ss -s

実際の出力結果

Total: 1280 (kernel 0)
TCP:   85 (estab 10, closed 70, orphaned 2, synrecv 0, timewait 65/0), ports 0
UDP:   12

上記出力結果の解説

1行目の内容(全体の統計)

  • 「Total: 1280」 → システム全体で管理されている ソケット(ネットワーク接続や待機中のポート)の総数1280 個あることを示しています。
  • 「(kernel 0)」 → カーネルレベルで管理されているソケットの数が 0 であることを示します。※これは、現在カーネル側で特別な処理をしているソケットがないことを意味します。

この情報から、現在サーバーが管理しているネットワークソケットの総数が1280であり、カーネル側での異常はない ことが分かります。

2行目の内容(TCP接続の統計情報)

この行は、TCP接続の状態ごとのカウント を示しています。
TCPは「コネクション型」の通信を行うプロトコルであり、接続の状態によって分類されます。

項目意味
TCP: 85現在 85個のTCPソケット が存在する。
estab 1010個のTCP接続が確立済み(ESTABLISHED) で、通信が行われている。
closed 7070個のTCP接続が閉じられた(CLOSED) 状態にある。
orphaned 22個の「孤立した」TCPソケット が存在する(プロセスが終了したが、まだカーネル内に残っているもの)。
synrecv 0SYN-RECEIVED(接続要求受信中) のTCP接続は 0(現在、新しい接続待ちはない)。
timewait 65/0TIME-WAIT(接続終了待機中) の状態が 65個 あり、0 は特殊なオプション設定の影響を示す(通常は気にしなくてよい)。
ports 0カーネルが現在保持している 動的なTCPポートはない(通常は問題なし)。

この情報から下記のことが分かります。

  • サーバーは現在10個のTCP接続が確立済みで通信中 であることが分かる。
  • TIME-WAIT状態が65個あり、多くの接続が最近終了したことを示す(負荷が高いサーバーでは多くなる)。
  • 新しい接続要求(SYN-RECEIVED)はないため、DDoS攻撃の影響はなさそう

3行目の内容(UDPソケットの統計情報)

  • 「UDP: 12」現在12個のUDPソケットが存在する ことを意味します。
    • UDPは、TCPのように接続を確立せず、単発の通信を行うプロトコル(DNSやNTPなどに使用)。
    • この数字が多いと、DNSやVoIP(音声通話)、ストリーミング関連のアプリケーションが多く動作している可能性がある。

この情報から、現在、12個のUDP通信が行われているが、大量ではないため異常ではなさそう であることが分かります。

-s オプション
-s オプションはネットワークソケットの統計情報を要約して表示します。
全体のソケット数
Totalはシステム全体で管理されているソケットの総数を示します。例えば、Total: 1280 は、合計1280個のソケットが存在することを表します。
TCP接続の状態
TCP接続の状態ごとにカウントを示します。例えば、確立済み(estab)が10、閉じられた(closed)が70であることがわかります。
UDPソケット数
UDPは接続を確立せず、短期的な通信を行うプロトコルです。例えば、UDP: 12は現在12個のUDPソケットが存在することを示します。
-s オプションの要点

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

ゴリタン

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

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