最終更新日 2025年1月26日
スポンサーリンクssコマンドとは?基本概要と用途
ss
コマンド(Socket Statistics)は、Linuxでネットワークソケットの状態を取得するためのツールです。
サーバーの管理やネットワークトラブルシューティングの際に、現在の接続状況やリスニングポートを素早く確認するのに役立ちます。
従来は netstat
コマンドが使用されていましたが、ss
はより高速かつ詳細な情報を取得できるため、現在では netstat
の代替として推奨されています。
SSコマンドの概要については下記で紹介しているので興味があったら見てみてください!
ssコマンドの基本構文
ss [オプション]
の使い方
ss
コマンドは、基本的に以下の形式で使用します。
ss [オプション]
オプションを指定することで、取得する情報を絞り込むことができます。
例えば以下のような感じです。
ss -t
→ TCP接続のみを表示ss -u
→ UDP接続のみを表示ss -l
→ LISTEN状態のソケットを表示ss -p
→ プロセス情報を含めて表示
すべての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接続を表示)
- -w(RAWソケットを表示)
- -x(UNIXドメインソケットを表示)
- -a(すべてのソケットを表示)
- -l(LISTEN状態のソケットのみ表示)
- -o state <状態>(特定の接続状態のソケットを表示)
- -n(ホスト名の解決を無効化して数値表示)
- -4(IPv4のみ表示)
- -6(IPv6のみ表示)
- -p(ソケットを使用しているプロセスを表示)
- -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)の接続を受け付ける状態になっている」 ということが分かります。
スポンサーリンク❷ -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)上でのみ動作し、外部からの接続は受け付けていない」 ということが分かります。
スポンサーリンク❸ -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ソケットが待機中であることを示しています。
スポンサーリンク❹ -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ソケットが待機中であり、まだ通信は発生していない」 ということが分かります。
スポンサーリンク❺ -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データベースは、ローカルの接続のみを許可しており、外部からのアクセスは受け付けていないことが分かります。
スポンサーリンク❻ -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)の接続を受け付ける状態になっている」 ということが分かります。
スポンサーリンク❼ -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データベースに接続していることが分かります。
スポンサーリンク❽ -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)がデータベースにアクセスしていることが分かります。
スポンサーリンク❾ -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
➓ -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:Port
の0.0.0.0:22
→ どのIPアドレス(0.0.0.0
)からもSSH接続を受け付ける 状態。Peer Address:Port
の0.0.0.0:*
→ まだ特定のクライアントとは接続していない。Recv-Q: 0
、Send-Q: 128
→ 最大128個の接続を待機できる設定。
このサーバーは、外部からSSH接続を受け付ける設定になっているということが分かります。
3行目Webサーバー(ポート80)の待機状態
LISTEN
(状態) → Webサーバーが接続を待機している状態。Local Address:Port
の0.0.0.0:80
→ どのIPアドレス(0.0.0.0
)からのHTTPリクエストも受け付ける 状態。Peer Address:Port
の0.0.0.0:*
→ まだ特定のクライアントとは接続していない。Recv-Q: 0
、Send-Q: 128
→ 最大128個の接続を待機できる設定。
Webサーバーがポート80(HTTP)で外部からのリクエストを受け付ける状態になっているということがわかります。
4行目 MySQL(ポート3306)の待機状態
LISTEN
(状態) → データベースサーバー(MySQL)が接続を待機している状態。Local Address:Port
の127.0.0.1:3306
→ ローカルホスト(127.0.0.1
)専用でMySQLを待機。Peer Address:Port
の0.0.0.0:*
→ まだ特定のクライアントとは接続していない。Recv-Q: 0
、Send-Q: 50
→ 最大50個の接続を待機できる設定。
MySQLはローカル接続のみに制限されており、外部からのアクセスは許可されていない(安全な設定)ということが分かります。
5行目 SSHの確立済み接続
ESTAB
(状態) → SSH接続が確立済み。Local Address:Port
の192.168.1.10:22
→ サーバー(192.168.1.10
)がSSH(ポート22)で通信中。Peer Address:Port
の192.168.1.50:50123
→ クライアント192.168.1.50
がSSHで接続中。
このサーバーにSSHでログインしているクライアントがいる(管理者のPCの可能性が高い)ということが分かります。
6行目 HTTPS(ポート443)の確立済み接続
ESTAB
(状態) → HTTPS接続が確立済み。Local Address:Port
の192.168.1.10:443
→ サーバーがHTTPS(ポート443)で通信中。Peer Address:Port
の203.0.113.100:50234
→ クライアント203.0.113.100
がHTTPSで接続中。
外部のクライアントがWebサイトにアクセスしているということが分かります。
7行目 MySQL(ポート3306)の確立済み接続
ESTAB
(状態) → データベース接続が確立済み。Local Address:Port
の192.168.1.10:3306
→ サーバーがMySQL(ポート3306)で通信中。Peer Address:Port
の192.168.1.200:55021
→ クライアント192.168.1.200
がデータベースに接続中。
別のサーバー(192.168.1.200
)がデータベースにアクセスしているということが分かります。
⓫ -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ログインを受け付ける準備ができていることが分かります。
スポンサーリンク⓬ -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 10 | 10個のTCP接続が確立済み(ESTABLISHED) で、通信が行われている。 |
closed 70 | 70個のTCP接続が閉じられた(CLOSED) 状態にある。 |
orphaned 2 | 2個の「孤立した」TCPソケット が存在する(プロセスが終了したが、まだカーネル内に残っているもの)。 |
synrecv 0 | SYN-RECEIVED(接続要求受信中) のTCP接続は 0(現在、新しい接続待ちはない)。 |
timewait 65/0 | TIME-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通信が行われているが、大量ではないため異常ではなさそう であることが分かります。
ゴリタン
インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。
CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。