ss コマンド (旧 netstat コマンド) とは

ss は socket statistics の略で、netstatに替わる Linux標準のネットワークの状態確認コマンドです。初期はバグが多いと話題になっていたようですが、現状では netstat と大きな違いはありません。

ss コマンドの用例とオプション


ポート開放状態の確認には "ss -nltu" を使います。

[root@localhost ~]# ss -nltu
Netid State  Recv-Q Send-Q Local Address:Port Peer Address:Port
udp   UNCONN 0      0      *:*
udp   UNCONN 0      0      *:68               *:*
udp   UNCONN 0      0      ::1:323            :::*
tcp   LISTEN 0      128    *:22               *:*
tcp   LISTEN 0      100       *:*
tcp   LISTEN 0      128    :::80              :::*
tcp   LISTEN 0      128    :::22              :::*
tcp   LISTEN 0      100    ::1:25             :::*
[root@localhost ~]#


-n : ポート番号をサービス名変換しない(例えば:httpと表示せず:80と表示する)
-l : Listen(待ち受け)ポートのみを表示する
-t : TCP を表示する
-u : UDP を表示する


-p を付けて "ss -nltup" を実行すると、どのプロセスがそのポートを開放しているのかが分かります。

[root@localhost ~]# ss -nltup
Netid State  Recv-Q Send-Q Local Address:Port Peer Address:Port
udp   UNCONN 0      0      *:* users:(("chronyd",pid=9802,fd=1))
udp   UNCONN 0      0      *:68               *:* users:(("dhclient",pid=8526,fd=6))
udp   UNCONN 0      0      ::1:323            :::* users:(("chronyd",pid=9802,fd=2))
tcp   LISTEN 0      128    *:22               *:* users:(("sshd",pid=998,fd=3))
tcp   LISTEN 0      100       *:* users:(("master",pid=1369,fd=13))
tcp   LISTEN 0      128    :::80              :::* users:(("httpd",pid=29410,fd=4),("httpd",pid=5595,fd=4),("httpd",pid=5594,fd=4),("httpd",pid=5593,fd=4),("httpd",pid=5592,fd=4),("httpd",pid=5591,fd=4))
tcp   LISTEN 0      128    :::22              :::* users:(("sshd",pid=998,fd=4))
tcp   LISTEN 0      100    ::1:25             :::* users:(("master",pid=1369,fd=14))
[root@localhost ~]#


現在進行形で通信に利用されているポート状態も確認したいときは -l の代わりに -a を使い、"ss -natu" を実行します。

[root@localhost ~]# ss -natu
Netid State     Recv-Q Send-Q Local Address:Port  Peer Address:Port
udp    UNCONN   0      0       *:*
udp    UNCONN   0      0      *:68                *:*
udp    UNCONN   0      0      ::1:323             :::*
tcp    LISTEN   0      128    *:22                *:*
tcp    LISTEN   0      100        *:*
tcp    ESTAB    0      96
tcp    LISTEN   0      128    :::80               :::*
tcp    LISTEN   0      128    :::22               :::*
tcp    LISTEN   0      100    ::1:25              :::*
[root@localhost ~]#


LISTENはTCPの待ち受けポートのことです。UNCONN は unconnected の意味で、UDPにおける待ち受けポートを表します。ESTAB は 3way handshakeが成功した状態、つまりTCPコネクションが確立した状態を意味します。

Recv-Q と Send-Q について

Recv-Q / Send-Q は State が ESTAB か LISTEN かによって意味が違います。

State = ESTAB の場合

Recv-Q は 受信パケットのうち、まだユーザプログラム(つまり-pで表示されるプロセス)に引き渡されていないパケットの総byte数を意味します。

また、Send-Q は 送信パケットのうち、通信先から TCP ack が返ってきていないパケットの総byte数を意味します。

State = LISTEN の場合

TCP syn backlog 関連の値が入ります。Recv-Q は現在の TCP コネクション未確立(つまり3 way handshake中)通信の数です。

Send-Q は受け入れ可能な最大TCPコネクション未確立通信の数です。TCP syn flood 攻撃への対策としてこの値は大きすぎてはいけません。

man ss

SS(8) System Manager's Manual SS(8)

ss - another utility to investigate sockets

ss [options] [ FILTER ]

ss is used to dump socket statistics. It allows showing information
similar to netstat. It can display more TCP and state informations
than other tools.

When no option is used ss displays a list of open non-listening sockets
(e.g. TCP/UNIX/UDP) that have established connection.

-h, --help
Show summary of options.

-V, --version
Output version information.

-H, --no-header
Suppress header line.

-n, --numeric
Do not try to resolve service names.

-r, --resolve
Try to resolve numeric address/ports.

-a, --all
Display both listening and non-listening (for TCP this means
established connections) sockets.

-l, --listening
Display only listening sockets (these are omitted by default).

-o, --options
Show timer information.

-e, --extended
Show detailed socket information

-m, --memory
Show socket memory usage.

-p, --processes
Show process using socket.

-i, --info
Show internal TCP information.

-K, --kill
Attempts to forcibly close sockets. This option displays sockets
that are successfully closed and silently skips sockets that the
kernel does not support closing. It supports IPv4 and IPv6 sock‐
ets only.

-s, --summary
Print summary statistics. This option does not parse socket
lists obtaining summary from various sources. It is useful when
amount of sockets is so huge that parsing /proc/net/tcp is

-Z, --context
As the -p option but also shows process security context.

For netlink(7) sockets the initiating process context is dis‐
played as follows:

1. If valid pid show the process context.

2. If destination is kernel (pid = 0) show kernel ini‐
tial context.

3. If a unique identifier has been allocated by the ker‐
nel or netlink user, show context as "unavailable".
This will generally indicate that a process has more
than one netlink socket active.

-z, --contexts
As the -Z option but also shows the socket context. The socket
context is taken from the associated inode and is not the actual
socket context held by the kernel. Sockets are typically labeled
with the context of the creating process, however the context
shown will reflect any policy role, type and/or range transition
rules applied, and is therefore a useful reference.

Switch to the specified network namespace name.

-b, --bpf
Show socket BPF filters (only administrators are allowed to get
these information).

-4, --ipv4
Display only IP version 4 sockets (alias for -f inet).

-6, --ipv6
Display only IP version 6 sockets (alias for -f inet6).

-0, --packet
Display PACKET sockets (alias for -f link).

-t, --tcp
Display TCP sockets.

-u, --udp
Display UDP sockets.

-d, --dccp
Display DCCP sockets.

-w, --raw
Display RAW sockets.

-x, --unix
Display Unix domain sockets (alias for -f unix).

-S, --sctp
Display SCTP sockets.

Display vsock sockets (alias for -f vsock).

-f FAMILY, --family=FAMILY
Display sockets of type FAMILY. Currently the following fami‐
lies are supported: unix, inet, inet6, link, netlink, vsock.

-A QUERY, --query=QUERY, --socket=QUERY
List of socket tables to dump, separated by commas. The follow‐
ing identifiers are understood: all, inet, tcp, udp, raw, unix,
packet, netlink, unix_dgram, unix_stream, unix_seqpacket,
packet_raw, packet_dgram, dccp, sctp, vsock_stream, vsock_dgram.

-D FILE, --diag=FILE
Do not display anything, just dump raw information about TCP
sockets to FILE after applying filters. If FILE is - stdout is

-F FILE, --filter=FILE
Read filter information from FILE. Each line of FILE is inter‐
preted like single command line option. If FILE is - stdin is

Please take a look at the official documentation (Debian package
iproute-doc) for details regarding filters.

STATE-FILTER allows to construct arbitrary set of states to match. Its
syntax is sequence of keywords state and exclude followed by identifier
of state.

Available identifiers are:

All standard TCP states: established, syn-sent, syn-recv, fin-
wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack,
listen and closing.

all - for all the states

connected - all the states except for listen and closed

synchronized - all the connected states except for syn-sent

bucket - states, which are maintained as minisockets, i.e.
time-wait and syn-recv

big - opposite to bucket

ss -t -a
Display all TCP sockets.

ss -t -a -Z
Display all TCP sockets with process SELinux security contexts.

ss -u -a
Display all UDP sockets.

ss -o state established '( dport = :ssh or sport = :ssh )'
Display all established ssh connections.

ss -x src /tmp/.X11-unix/*
Find all local processes connected to X server.

ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst
List all the tcp sockets in state FIN-WAIT-1 for our apache to
network 193.233.7/24 and look at their timers.

ip(8), /usr/share/doc/iproute-doc/ss.html (package iproutedoc),
RFC 793 - (TCP states)

ss was written by Alexey Kuznetsov, <>.

This manual page was written by Michael Prokop <> for the
Debian project (but may be used by others).