【エスエス】

ss(ソケット状態確認) とは?

最終更新:
💡 待受と接続を分けて、ソケットの状態を調べる

Linuxでソケットの状態を調べるiproute2のコマンド。TCPの待受・接続の絞り込み、プロセス表示の権限、待受があっても外部から接続できるとは限らない理由を解説します。

📌 このページのポイント
ss:端末内の待受と接続を調べるTCPの待受ss -tlnpLISTEN例:127.0.0.1:8080通常は端末内の接続用TCPの確立済み接続ss -tnstate established相手のアドレスとポートも確認待受あり ≠ 外部から接続できる経路・ファイアウォール・アプリを確認プロセスの表示範囲は権限などによる
待受アドレスは説明用で、実際のコマンド出力ではありません。待受と確立済み接続は別の指定で調べます。TIME-WAITの件数だけで障害や設定変更を決めません。
ひよこ ひよこ
Linuxで、サーバーが待ち受けているかを調べたい。
ペンギン先生 ペンギン先生
TCPなら ss -tlnp で確認できるよ。-tはTCP、-lは待受、-nは名前解決をせず数値で表示、-pはプロセス情報だ。プロセス情報は、権限などによって見えないものがあるんだ。
ひよこ ひよこ
LISTENがあれば、インターネットからつながる?
ペンギン先生 ペンギン先生
その端末で待ち受けているという情報で、外部から届く保証ではないよ。127.0.0.1だけで待ち受けていれば、通常はその端末内からの接続用だ。経路、ファイアウォール、アプリの動作なども分けて調べよう。
ひよこ ひよこ
すでに接続しているものを見るには?
ペンギン先生 ペンギン先生
ss -tn state established で、TCPの確立済み接続を数値で表示できるよ。待受を見る-lとは目的が違う。ss -tn state established '( dport = :443 )' のように、相手側のポートで絞る方法もある。式はシェルに解釈されないよう引用符で囲むんだ。
ひよこ ひよこ
TIME-WAITがたくさんあるのは、故障?
ペンギン先生 ペンギン先生
TCP接続を閉じる過程で使われる正常な状態の一つだよ。件数だけで障害とは決められない。実際の接続エラー、利用可能なポートや資源、通信量の変化などと合わせて見る。数字が多いだけでカーネルの設定を変えないようにしよう。
ひよこ ひよこ
netstatより、必ず一瞬で表示される?
ペンギン先生 ペンギン先生
ssはnetstatと似た情報に加え、TCPや状態について詳しい情報を表示できる道具だよ。ただし実行時間は環境や接続数、表示する内容による。何倍速いという一律の数値で覚えるより、必要な情報を絞って確認する方法を覚えよう。
もっと詳しく知りたい人へ

UDPにもTCPと同じLISTENやESTABLISHEDがある?

UDPはTCPのように接続を確立するプロトコルではありません。ss -uanでUDPソケットを数値表示できますが、出る状態をTCPと同じ意味で読まないようにします。UDPでconnectを使うソケットもありますが、それだけで相手との通信成功を保証しません。

自分のPCで見えるものが、コンテナの通信すべて?

Linuxのネットワーク名前空間が違えば、見えるソケットの範囲も異なります。調べるプロセスやコンテナが属する環境で確認します。また、ssはリモート機器のポートを外側から走査する道具ではありません。対象端末内の状態の確認と、外部からの到達性の確認を区別します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ss」って出てきたら「Linuxでソケットを調べるコマンド」と思えばだいたいOK!
📖 おまけ:英語の意味
「Socket statistics」 = ソケットの統計情報
💬 ssのマニュアルは、ソケットの統計や状態を調べる道具として説明しています。iproute2に含まれ、netstatと似た情報を確認できます。

参考資料

← 用語集にもどる