ss - ソケットを調査するための別のユーティリティ
概要
ss [オプション] [フィルター]
説明
ss は、ソケット統計を表示するために使用されます。netstat と同様の情報を表示できます。他のツールよりも多くの TCP および状態情報を表示できます。
オプション
オプションが使用されていない場合、ss は接続が確立された開いている非リッスンソケット(TCP / UNIX / UDP など)のリストを表示します。
-h、--help
オプションの概要を表示します。
-V、--version
バージョン情報を出力します。
-H、--no-header
ヘッダー行を抑制します。
-Q、--no-queues
送信および受信キューの列を抑制します。
-O、--oneline
各ソケットのデータを 1 行に表示します。
-n、--numeric
サービス名を解決しようとせず、人間が読める形式ではなく、正確な帯域幅値を表示します。
-r、--resolve
数値アドレス/ポートを解決しようとします。
-a、--all
リッスン状態と非リッスン状態の両方のソケットを表示します(TCP の場合は、確立された接続を意味します)。
-l、--listening
リッスン状態のソケットのみを表示します(デフォルトではこれらは省略されます)。
-B、--bound-inactive
TCP でバインドされているが非アクティブな(リッスン、接続などではない)ソケットのみを表示します(デフォルトではこれらは省略されます)。
-o、--options
タイマー情報を表示します。TCP プロトコルの出力形式は次のとおりです。
timer:(<timer_name>,<expire_time>,<retrans>)
<timer_name>
タイマーの名前。5 種類のタイマー名があります。
on : 次のタイマーのいずれかを意味します。TCP 再送タイマー、TCP 早期再送タイマー、およびテールロスプローブタイマー
keepalive: tcp キープアライブタイマー
timewait: タイムアウト段階タイマー
persist: ゼロウィンドウプローブタイマー
unknown: 上記のタイマーのいずれでもない
<expire_time>
タイマーが期限切れになるまでの時間
<retrans>
再送信が行われた回数
-e、--extended
詳細なソケット情報を表示します。出力形式は次のとおりです。
uid:<uid_number> ino:<inode_number> sk:<cookie>
<uid_number>
ソケットが属するユーザー ID
<inode_number>
VFS のソケットの inode 番号
<cookie>
ソケットの UUID
-m、--memory
ソケットのメモリ使用量を表示します。出力形式は次のとおりです。
skmem:(r<rmem_alloc>,rb<rcv_buf>,t<wmem_alloc>,tb<snd_buf>,
f<fwd_alloc>,w<wmem_queued>,o<opt_mem>,
bl<back_log>,d<sock_drop>)
<rmem_alloc>
受信パケット用に割り当てられたメモリ
<rcv_buf>
受信パケット用に割り当てることができる合計メモリ
<wmem_alloc>
送信パケット(レイヤー 3 に送信されたパケット)用に割り当てられたメモリ
<snd_buf>
送信パケット用に割り当てることができる合計メモリ
<fwd_alloc>
ソケットによってキャッシュとして割り当てられたメモリですが、まだ受信/送信パケットに使用されていません。パケットを送信/受信するのにメモリが必要な場合、このキャッシュ内のメモリが使用される前に、追加のメモリが割り当てられます。
<wmem_queued>
送信パケット用に割り当てられたメモリ(まだレイヤー3に送信されていない)
<opt_mem>
ソケットオプションを保存するために使用されるメモリ。例:TCP MD5署名のキー
<back_log>
skバックログキューで使用されるメモリ。プロセスコンテキストでは、プロセスがパケットを受信している間に新しいパケットを受信すると、そのパケットはskバックログキューに格納され、プロセスによってすぐに受信できるようになる。
<sock_drop>
ソケットにデマルチプレックスされる前に破棄されたパケットの数
-p, --processes
ソケットを使用しているプロセスを表示する。
-T, --threads
ソケットを使用しているスレッドを表示する。-pを意味する。
-i, --info
内部TCP情報を表示する。以下のフィールドが表示される場合がある。
ts タイムスタンプオプションが設定されている場合は、文字列「ts」を表示する
sack SACKオプションが設定されている場合は、文字列「sack」を表示する
ecn 明示的な輻輳通知オプションが設定されている場合は、文字列「ecn」を表示する
ecnseen
受信パケットでECNフラグが見つかった場合は、文字列「ecnseen」を表示する
fastopen
Fast Openオプションが設定されている場合は、文字列「fastopen」を表示する
cong_alg
輻輳アルゴリズムの名前。デフォルトの輻輳アルゴリズムは「cubic」
wscale:<snd_wscale>:<rcv_wscale>
ウィンドウスケーリングオプションが使用されている場合、このフィールドには送信スケーリング係数と受信スケーリング係数が表示される
rto:<icsk_rto>
TCP再送信タイムアウト値。単位はミリ秒
backoff:<icsk_backoff>
指数関数的バックオフ再送信に使用される。実際の再送信タイムアウト値は、icsk_rto << icsk_backoff
rtt:<rtt>/<rttvar>
rttは平均往復時間、rttvarはrttの平均偏差。単位はミリ秒
ato:<ato>
ACKタイムアウト。単位はミリ秒。遅延ACKモードで使用される
mss:<mss>
最大セグメントサイズ
cwnd:<cwnd>
輻輳ウィンドウサイズ
pmtu:<pmtu>
パスMTU値
ssthresh:<ssthresh>
TCP輻輳ウィンドウのスロースタートスレッショルド
bytes_acked:<bytes_acked>
ACKされたバイト数
bytes_received:<bytes_received>
受信したバイト数
segs_out:<segs_out>
送信されたセグメント数
segs_in:<segs_in>
受信したセグメント数
send <send_bps>bps
送信bps
lastsnd:<lastsnd>
最後のパケットを送信してからの経過時間。単位はミリ秒
lastrcv:<lastrcv>
最後のパケットを受信してからの経過時間。単位はミリ秒
lastack:<lastack>
最後のACKを受信してからの経過時間。単位はミリ秒
pacing_rate <pacing_rate>bps/<max_pacing_rate>bps
ペーシングレートと最大ペーシングレート
rcv_space:<rcv_space>
TCP内部のソケット受信バッファの自動調整を支援するための変数
tcp-ulp-mptcp flags:[MmBbJjecv] token:<rem_token(rem_id)/loc_token(loc_id)> seq:<sn> sfseq:<ssn> ssnoff:<off> maplen:<maplen>
MPTCPサブフロー情報
--tos ToSおよび優先度情報を表示する。以下のフィールドが表示される場合がある。
tos IPv4サービスタイプバイト
tclass IPv6トラフィッククラスバイト
class_id
net_cls cgroupによって設定されたクラスID。クラスがゼロの場合、これはSO_PRIORITYによって設定された優先度を表示する。
--cgroup
cgroup情報を表示する。以下のフィールドが表示される場合がある。
cgroup Cgroup v2 パス名。このパス名は、階層のマウントポイントに対する相対パスです。
--tipcinfo
内部の tipc ソケット情報を表示します。
-K, --kill
ソケットを強制的に閉じようとします。このオプションは、正常に閉じられたソケットを表示し、カーネルがサポートしていないソケットはスキップします。IPv4 および IPv6 ソケットのみをサポートします。
-s, --summary
集計統計を表示します。このオプションは、ソケットリストを解析するのではなく、さまざまなソースから集計情報を取得します。ソケットの数が非常に多く、/proc/net/tcp を解析することが困難な場合に役立ちます。
-E, --events
ソケットが破棄されるたびに、継続的に表示します。
-Z, --context
-p オプションと同様ですが、プロセスのセキュリティコンテキストも表示します。-T オプションが使用されている場合は、スレッドのセキュリティコンテキストも表示します。
netlink(7) ソケットの場合、起動プロセスのコンテキストは次のように表示されます。
有効な pid がある場合は、プロセスのコンテキストを表示します。
宛先がカーネル (pid = 0) の場合は、カーネルの初期コンテキストを表示します。
カーネルまたは netlink ユーザーによって一意の識別子が割り当てられている場合は、コンテキストを「利用不可」として表示します。これは通常、プロセスが複数の netlink ソケットをアクティブにしていることを示します。
-z, --contexts
-Z オプションと同様ですが、ソケットコンテキストも表示します。ソケットコンテキストは、関連付けられた inode から取得され、カーネルが保持する実際のソケットコンテキストではありません。通常、ソケットは作成プロセスのコンテキストでラベル付けされますが、表示されるコンテキストは、適用されたポリシーのロール、タイプ、および/または範囲移行ルールを反映するため、役立つ参照となります。
-N NSNAME, --net=NSNAME
指定されたネットワーク名前空間に切り替えます。
-b, --bpf
ソケットの従来の BPF フィルターを表示します (管理者のみがこの情報を取得できます)。
-4, --ipv4
IP バージョン 4 ソケットのみを表示します (-f inet と同じ)。
-6, --ipv6
IP バージョン 6 ソケットのみを表示します (-f inet6 と同じ)。
-0, --packet
PACKET ソケットを表示します (-f link と同じ)。
-t, --tcp
TCP ソケットを表示します。
-u, --udp
UDP ソケットを表示します。
-d, --dccp
DCCP ソケットを表示します。
-w, --raw
RAW ソケットを表示します。
-x, --unix
Unix ドメインソケットを表示します (-f unix と同じ)。
-S, --sctp
SCTP ソケットを表示します。
--tipc tipc ソケットを表示します (-f tipc と同じ)。
--vsock vsock ソケットを表示します (-f vsock と同じ)。
--xdp XDP ソケットを表示します (-f xdp と同じ)。
-M, --mptcp
MPTCP ソケットを表示します。
--inet-sockopt
inet ソケットオプションを表示します。
-f FAMILY, --family=FAMILY
FAMILY タイプのソケットを表示します。現在、次のファミリーがサポートされています: unix、inet、inet6、link、netlink、vsock、tipc、xdp。
-A QUERY, --query=QUERY, --socket=QUERY
ダンプするソケットテーブルのリスト。カンマで区切ります。次の識別子が認識されます: all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream, unix_seqpacket, packet_raw, packet_dgram, dccp, sctp, tipc, vsock_stream, vsock_dgram, xdp, mptcp。
リスト内の項目には、オプションで感嘆符 (!) を付けて、そのソケットテーブルをダンプから除外することができます。
-D FILE, --diag=FILE
フィルターを適用した後に、TCPソケットに関する生の情報を FILE にダンプします。何も表示しません。FILE が - の場合、stdout を使用します。
-F FILE, --filter=FILE
FILE からフィルター情報を読み込みます。FILE の各行は、単一のコマンドラインオプションとして解釈されます。FILE が - の場合、stdin を使用します。
--bpf-maps
すべての BPF ソケットローカルデータエントリをソケットごとに整形して表示します。
--bpf-map-id=MAP_ID
要求されたマップ ID の BPF ソケットローカルデータエントリを整形して表示します。複数回使用できます。
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
フィルターの詳細については、公式ドキュメントを参照してください。
STATE-FILTER
STATE-FILTER を使用すると、任意のステートのセットを一致させることができます。構文は、state キーワードと exclude キーワードのシーケンス、およびステートの識別子です。
利用可能な識別子は次のとおりです。
標準の TCP ステートのすべて: established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, timewait, closed, close-wait, last-ack, listening, closing。
all - すべてのステート
connected - listening と closed 以外のすべてのステート
synchronized - syn-sent 以外のすべての connected ステート
bucket - ミニソケットとして保持されるステート。つまり、time-wait と syn-recv。
big - bucket の反対
bound-inactive - バインドされているが、それ以外は非アクティブなソケット (listen、connect などではない)。
EXPRESSION
EXPRESSION を使用すると、特定の基準に基づいてフィルターを適用できます。EXPRESSION は、ブール演算子で結合された一連の述語で構成されます。優先順位の高い順に、演算子は次のとおりです。or (または | または ||)、and (または & または &&)、および not (または !) です。連続する述語の間に演算子が指定されていない場合、暗黙の and 演算子が想定されます。括弧 "( )" を使用して、部分式をグループ化できます。
次の述語がサポートされています。
{dst|src} [=] HOST
宛先またはソースが HOST と一致するかどうかをテストします。詳細については、HOST SYNTAX を参照してください。
{dport|sport} [OP] [FAMILY:]:PORT
宛先ポートまたはソースポートを PORT と比較します。OP は、"<", "<=", "=", "!=", ">=", ">" のいずれかです。通常の算術規則に従います。FAMILY と PORT は、HOST SYNTAX で説明されているとおりです。
dev [=|!=] DEVICE
接続で使用されるデバイスに基づいて一致させます。DEVICE は、デバイス名またはインターフェイスのインデックスのいずれかです。
fwmark [=|!=] MASK
接続の fwmark 値に基づいて一致させます。これは、特定のマーク値であるか、マーク値の後に "/" と比較で使用するビットマスクが続きます。たとえば、"fwmark = 0x01/0x03" は、fwmark の 2 つの最下位ビットが 0x01 である場合に一致します。
cgroup [=|!=] PATH
接続が指定されたパスにある cgroup の一部である場合に一致させます。
autobound
ポートまたはソースアドレスのパスが自動的に割り当てられた (明示的に指定されたわけではない) 場合に一致させます。
ほとんどの演算子にはエイリアスがあります。演算子が指定されていない場合、"=" が想定されます。次の演算子のグループはすべて同等です。
= == eq
!= ne neq
> gt
< lt
>= ge geq
<= le leq
! not
| || or
& && and
ホスト構文
一般的なホスト構文は [FAMILY:]ADDRESS[:PORT] です。
FAMILY は、-f オプションでサポートされているファミリーのいずれかでなければなりません。指定しない場合は、-f オプションで指定されたファミリーがデフォルトで使用され、それも指定されていない場合は、inet または inet6 と見なされます。
ホスト条件の式内のすべてのホスト条件は、すべて同じファミリーであるか、inet と inet6 のいずれかでなければなりません。異なるファミリーを混在させると、結果が予期しないものになる可能性があります。
ADDRESS と PORT の形式は、使用するファミリーによって異なります。アドレスまたはポートのいずれかにワイルドカードとして "*" を使用できます。各ファミリーの詳細を以下に示します。
unix ADDRESS は、unix ソケットのアドレスに対して大文字と小文字を区別せずに一致するグロブパターン (fnmatch(3) を参照) です。パスと抽象名がサポートされています。Unix アドレスはポートをサポートせず、ワイルドカードとして "*" を使用できません。
link ADDRESS は、一致させるべきイーサネットプロトコルの大文字と小文字を区別しない名前です。PORT は、ip link の出力に表示されるように、目的のリンクデバイスのデバイス名またはデバイスインデックスです。
netlink
ADDRESS は、netlink ファミリーの記述子です。可能な値は /etc/iproute2/nl_protos から取得されます。PORT はソケットのポート ID で、通常は所有プロセス ID と同じです。値 "kernel" は、カーネル (ポート ID は 0) を表すために使用できます。
vsock ADDRESS は、CID アドレスを表す整数であり、PORT はポートです。
inet および inet6
ADDRESS は、IP アドレス (バージョン 4 またはバージョン 6、ファミリーによって異なる) または、必要なバージョンの IP アドレスに解決される DNS ホスト名です。IPv6 アドレスは "[" と "]" で囲んで、ポート区切り文字を明確にする必要があります。アドレスには、CIDR 表記 (スラッシュの後にビット単位のプレフィックス長が続く) でプレフィックス長を追加することもできます。PORT は、数値のソケットポートまたは、一致させるポートのサービス名です。
使用例
ss -t -a
すべての TCP ソケットを表示します。
ss -t -a -Z
すべての TCP ソケットとそのプロセスおよび SELinux セキュリティコンテキストを表示します。
ss -u -a
すべての UDP ソケットを表示します。
ss -o state established '( dport = :ssh or sport = :ssh )'
すべての確立された ssh 接続を表示します。
ss -x src /tmp/.X11-unix/*
X サーバーに接続されているすべてのローカルプロセスを検索します。
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24
Apache からネットワーク 193.233.7/24 への TCP ソケットのうち、状態が FIN-WAIT-1 のものをすべてリストし、それらのタイマーを表示します。
ss -a -A 'all,!tcp'
すべてのソケットテーブルからのすべての状態のソケットをリストしますが、TCP は除きます。
関連項目
ip(8), RFC 793 - https://tools.ietf.org/rfc/rfc793.txt (TCP 状態)
著者
ss は Alexey Kuznetsov <_> 氏によって作成されました。
このマニュアルページは、Michael Prokop <_> 氏が Debian プロジェクト用に作成しました (ただし、他のプロジェクトでも使用できます)。