ss - ein weiteres Dienstprogramm zur Untersuchung von Sockets
SYNOPSIS
ss [Optionen] [FILTER]
BESCHREIBUNG
ss wird verwendet, um Socket-Statistiken anzuzeigen. Es ermöglicht die Anzeige von Informationen, die denen von netstat ähneln. Es kann mehr TCP- und Statusinformationen als andere Tools anzeigen.
OPTIONEN
Wenn keine Option verwendet wird, zeigt ss eine Liste der offenen, nicht-lauschenden Sockets (z. B. TCP/UNIX/UDP) an, die eine Verbindung hergestellt haben.
-h, --help
Zeigt eine Zusammenfassung der Optionen an.
-V, --version
Gibt Versionsinformationen aus.
-H, --no-header
Unterdrückt die Kopfzeile.
-Q, --no-queues
Unterdrückt die Spalten für Sende- und Empfangswarteschlangen.
-O, --oneline
Gibt die Daten jedes Sockets in einer einzigen Zeile aus.
-n, --numeric
Versucht nicht, Dienstnamen aufzulösen. Zeigt genaue Bandbreitenwerte an, anstatt menschenlesbarer Werte.
-r, --resolve
Versucht, numerische Adressen/Ports aufzulösen.
-a, --all
Zeigt sowohl lauschende als auch nicht-lauschende Sockets an (für TCP bedeutet dies etablierte Verbindungen).
-l, --listening
Zeigt nur lauschende Sockets an (diese werden standardmäßig ausgelassen).
-B, --bound-inactive
Zeigt nur TCP-Sockets an, die gebunden, aber inaktiv sind (nicht lauschend, verbindend usw.) (diese werden standardmäßig ausgelassen).
-o, --options
Zeigt Timer-Informationen an. Für das TCP-Protokoll ist das Ausgabeformat:
timer:(<timer_name>,<expire_time>,<retrans>)
<timer_name>
der Name des Timers, es gibt fünf Arten von Timer-Namen:
on: bedeutet einer dieser Timer: TCP-Wiederholungs-Timer, TCP-Frühwiederholungs-Timer und Tail-Loss-Probe-Timer
keepalive: TCP-Keep-Alive-Timer
timewait: Timer für die Timewait-Phase
persist: Zero-Window-Probe-Timer
unknown: keiner der oben genannten Timer
<expire_time>
wie lange der Timer ablaufen wird
<retrans>
wie oft die Wiederholung stattgefunden hat
-e, --extended
Zeigt detaillierte Socket-Informationen an. Das Ausgabeformat ist:
uid:<uid_number> ino:<inode_number> sk:<cookie>
<uid_number>
die Benutzer-ID, zu der der Socket gehört
<inode_number>
die Inode-Nummer des Sockets im VFS
<cookie>
eine UUID des Sockets
-m, --memory
Zeigt die Socket-Speichernutzung an. Das Ausgabeformat ist:
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>
der Speicher, der für den Empfang von Paketen zugewiesen wurde
<rcv_buf>
der gesamte Speicher, der für den Empfang von Paketen zugewiesen werden kann
<wmem_alloc>
der Speicher, der für das Senden von Paketen verwendet wird (die bereits an Schicht 3 gesendet wurden)
<snd_buf>
der gesamte Speicher, der für das Senden von Paketen zugewiesen werden kann
<fwd_alloc>
der Speicher, der vom Socket als Cache zugewiesen wird, aber noch nicht für den Empfang/das Senden von Paketen verwendet wird. Wenn Speicher zum Senden/Empfangen von Paketen benötigt wird, wird der Speicher in diesem Cache verwendet, bevor zusätzlicher Speicher zugewiesen wird.
<wmem_queued>
Der Speicher, der für das Senden von Paketen reserviert ist (die noch nicht an Layer 3 gesendet wurden).
<opt_mem>
Der Speicher, der zum Speichern von Socket-Optionen verwendet wird, z. B. der Schlüssel für die TCP-MD5-Signatur.
<back_log>
Der Speicher, der für die Socket-Backlog-Warteschlange verwendet wird. In einem Prozesskontext wird, wenn der Prozess ein Paket empfängt und ein neues Paket empfangen wird, dieses in die Socket-Backlog-Warteschlange gestellt, damit es sofort vom Prozess empfangen werden kann.
<sock_drop>
Die Anzahl der Pakete, die verworfen wurden, bevor sie dem Socket zugewiesen wurden.
-p, --processes
Zeigt die Prozesse an, die den Socket verwenden.
-T, --threads
Zeigt die Threads an, die den Socket verwenden. Impliziert -p.
-i, --info
Zeigt interne TCP-Informationen an. Die folgenden Felder können angezeigt werden:
ts Zeigt die Zeichenkette "ts" an, wenn die Timestamp-Option gesetzt ist.
sack Zeigt die Zeichenkette "sack" an, wenn die SACK-Option gesetzt ist.
ecn Zeigt die Zeichenkette "ecn" an, wenn die explizite Stauanzeige-Option gesetzt ist.
ecnseen
Zeigt die Zeichenkette "ecnseen" an, wenn die ECN-Flagge in empfangenen Paketen gefunden wurde.
fastopen
Zeigt die Zeichenkette "fastopen" an, wenn die Fast-Open-Option gesetzt ist.
cong_alg
Der Name des Stauvermeidungsalgorithmus. Der Standard-Stauvermeidungsalgorithmus ist "cubic".
wscale:<snd_wscale>:<rcv_wscale>
Wenn die Window-Scale-Option verwendet wird, zeigen diese Felder den Sende- und Empfangsskalierungsfaktor an.
rto:<icsk_rto>
TCP-Wiederholungs-Timeout-Wert, die Einheit ist Millisekunde.
backoff:<icsk_backoff>
Wird für die exponentielle Backoff-Wiederholung verwendet. Der tatsächliche Wiederholungs-Timeout-Wert ist icsk_rto << icsk_backoff.
rtt:<rtt>/<rttvar>
rtt ist die durchschnittliche Round-Trip-Zeit, rttvar ist die mittlere Abweichung von rtt, die Einheiten sind Millisekunden.
ato:<ato>
ACK-Timeout, die Einheit ist Millisekunde, wird für den verzögerten ACK-Modus verwendet.
mss:<mss>
Maximale Segmentgröße.
cwnd:<cwnd>
Stau-Fenstergröße.
pmtu:<pmtu>
Path-MTU-Wert.
ssthresh:<ssthresh>
TCP-Stau-Fenster-Slow-Start-Schwellenwert.
bytes_acked:<bytes_acked>
Anzahl der geackten Bytes.
bytes_received:<bytes_received>
Anzahl der empfangenen Bytes.
segs_out:<segs_out>
Anzahl der gesendeten Segmente.
segs_in:<segs_in>
Anzahl der empfangenen Segmente.
send <send_bps>bps
Ausgehende Datenrate in Bits pro Sekunde.
lastsnd:<lastsnd>
Wie lange ist es her, dass das letzte Paket gesendet wurde, die Einheit ist Millisekunde.
lastrcv:<lastrcv>
Wie lange ist es her, dass das letzte Paket empfangen wurde, die Einheit ist Millisekunde.
lastack:<lastack>
Wie lange ist es her, dass das letzte ACK empfangen wurde, die Einheit ist Millisekunde.
pacing_rate <pacing_rate>bps/<max_pacing_rate>bps
Die Pacing-Rate und die maximale Pacing-Rate.
rcv_space:<rcv_space>
Eine Hilfsvariable für die interne automatische Einstellung des TCP-Socket-Empfangspuffers.
tcp-ulp-mptcp flags:[MmBbJjecv] token:<rem_token(rem_id)/loc_token(loc_id)> seq:<sn> sfseq:<ssn> ssnoff:<off> maplen:<maplen>
MPTCP-Subflow-Informationen.
--tos Zeigt ToS- und Prioritätsinformationen an. Die folgenden Felder können angezeigt werden:
tos IPv4-Typ-von-Dienst-Byte.
tclass IPv6-Traffic-Class-Byte.
class_id
Klassen-ID, die von net_cls cgroup festgelegt wird. Wenn die Klasse Null ist, wird hier die durch SO_PRIORITY festgelegte Priorität angezeigt.
--cgroup
Zeigt cgroup-Informationen an. Die folgenden Felder können angezeigt werden:
cgroup Pfadname von Cgroup v2. Dieser Pfadname ist relativ zum Mountpunkt der Hierarchie.
--tipcinfo
Zeigt interne Tipc-Socket-Informationen an.
-K, --kill
Versucht, Sockets zwangsweise zu schließen. Diese Option zeigt Sockets an, die erfolgreich geschlossen wurden, und überspringt stillschweigend Sockets, die vom Kernel nicht unterstützt werden. Es unterstützt nur IPv4- und IPv6-Sockets.
-s, --summary
Gibt zusammenfassende Statistiken aus. Diese Option analysiert keine Socket-Listen, sondern ruft die Zusammenfassung aus verschiedenen Quellen ab. Dies ist nützlich, wenn die Anzahl der Sockets so groß ist, dass das Analysieren von /proc/net/tcp mühsam ist.
-E, --events
Zeigt kontinuierlich Sockets an, während sie zerstört werden.
-Z, --context
Wie die Option -p, zeigt aber auch den Prozesssicherheitskontext an. Wenn die Option -T verwendet wird, wird auch der Threadsicherheitskontext angezeigt.
Für Netlink(7)-Sockets wird der initiierende Prozesskontext wie folgt angezeigt:
Wenn eine gültige PID vorhanden ist, wird der Prozesskontext angezeigt.
Wenn das Ziel der Kernel ist (PID = 0), wird der anfängliche Kernelkontext angezeigt.
Wenn dem Kernel oder dem Netlink-Benutzer eine eindeutige Kennung zugewiesen wurde, wird der Kontext als „nicht verfügbar“ angezeigt. Dies deutet im Allgemeinen darauf hin, dass ein Prozess mehr als einen Netlink-Socket aktiv hat.
-z, --contexts
Wie die Option -Z, zeigt aber auch den Socket-Kontext an. Der Socket-Kontext wird aus dem zugehörigen Inode übernommen und ist nicht der tatsächliche Socket-Kontext, der vom Kernel gehalten wird. Sockets sind typischerweise mit dem Kontext des erstellenden Prozesses gekennzeichnet, jedoch spiegelt der angezeigte Kontext alle angewendeten Richtlinien, Typen und/oder Bereichsübergangsregeln wider und ist daher eine nützliche Referenz.
-N NSNAME, --net=NSNAME
Wechselt in den angegebenen Netzwerk-Namespace.
-b, --bpf
Zeigt die klassischen BPF-Filter der Sockets an (nur Administratoren dürfen diese Informationen abrufen).
-4, --ipv4
Zeigt nur IPv4-Sockets an (Alias für -f inet).
-6, --ipv6
Zeigt nur IPv6-Sockets an (Alias für -f inet6).
-0, --packet
Zeigt PACKET-Sockets an (Alias für -f link).
-t, --tcp
Zeigt TCP-Sockets an.
-u, --udp
Zeigt UDP-Sockets an.
-d, --dccp
Zeigt DCCP-Sockets an.
-w, --raw
Zeigt RAW-Sockets an.
-x, --unix
Zeigt Unix-Domain-Sockets an (Alias für -f unix).
-S, --sctp
Zeigt SCTP-Sockets an.
--tipc Zeigt Tipc-Sockets an (Alias für -f tipc).
--vsock Zeigt Vsock-Sockets an (Alias für -f vsock).
--xdp Zeigt XDP-Sockets an (Alias für -f xdp).
-M, --mptcp
Zeigt MPTCP-Sockets an.
--inet-sockopt
Zeigt inet-Socket-Optionen an.
-f FAMILY, --family=FAMILY
Zeigt Sockets des Typs FAMILY an. Derzeit werden die folgenden Familien unterstützt: unix, inet, inet6, link, netlink, vsock, tipc, xdp.
-A QUERY, --query=QUERY, --socket=QUERY
Liste der zu dumpenden Socket-Tabellen, getrennt durch Kommas. Die folgenden Bezeichner werden unterstützt: 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.
Jeder Eintrag in der Liste kann optional mit einem Ausrufezeichen (!) versehen werden, um diesen Socket-Tabellen-Eintrag vom Dump auszuschließen.
-D DATEI, --diag=DATEI
Nichts anzeigen, sondern nach Anwenden von Filtern die rohen Informationen über TCP-Sockets in DATEI ausgeben. Wenn DATEI - ist, wird stdout verwendet.
-F DATEI, --filter=DATEI
Filterinformationen aus DATEI lesen. Jede Zeile in DATEI wird als einzelne Befehlszeilenoption interpretiert. Wenn DATEI - ist, wird stdin verwendet.
--bpf-maps
Alle BPF-Socket-lokalen Dateneinträge für jedes Socket übersichtlich ausgeben.
--bpf-map-id=MAP_ID
Die BPF-Socket-lokalen Dateneinträge für die angeforderte Map-ID übersichtlich ausgeben. Kann mehrmals verwendet werden.
FILTER := [ STATUS STATUS-FILTER ] [ AUSDRUCK ]
Bitte lesen Sie die offizielle Dokumentation für weitere Informationen zu Filtern.
STATUS-FILTER
STATUS-FILTER ermöglicht es, eine beliebige Menge von Zuständen zu definieren, die übereinstimmen sollen. Die Syntax ist eine Sequenz von Schlüsselwörtern `state` und `exclude`, gefolgt von einem Bezeichner für den Zustand.
Verfügbare Bezeichner:
Alle Standard-TCP-Zustände: established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, timewait, closed, close-wait, last-ack, listening und closing.
all - für alle Zustände
connected - alle Zustände außer listening und closed
synchronized - alle verbundenen Zustände außer syn-sent
bucket - Zustände, die als Minisockets verwaltet werden, d. h. time-wait und syn-recv
big - das Gegenteil von bucket
bound-inactive - gebundene, aber ansonsten inaktive Sockets (nicht listening, connecting usw.)
AUSDRUCK
AUSDRUCK ermöglicht das Filtern basierend auf bestimmten Kriterien. AUSDRUCK besteht aus einer Reihe von Prädikaten, die durch boolesche Operatoren kombiniert werden. Die möglichen Operatoren in aufsteigender Prioritätsreihenfolge sind:
`or` (oder `|` oder `||`), `and` (oder `&` oder `&&`) und `not` (oder `!`). Wenn kein Operator zwischen zwei aufeinanderfolgenden Prädikaten steht, wird ein impliziter `and`-Operator angenommen. Unterausdrücke können mit `(` und `)` gruppiert werden.
Die folgenden Prädikate werden unterstützt:
{dst|src} [=] HOST
Prüfen, ob das Ziel oder die Quelle mit HOST übereinstimmt. Siehe HOST-SYNTAX für Details.
{dport|sport} [OP] [FAMILIE:]:PORT
Vergleichen Sie den Ziel- oder Quellport mit PORT. OP kann einer der folgenden sein: <, <=, =, !=, >= und >. Entspricht den normalen arithmetischen Regeln. FAMILIE und PORT sind wie in HOST-SYNTAX beschrieben.
dev [=|!=] GERÄT
Abgleichen basierend auf dem Gerät, das die Verbindung verwendet. GERÄT kann entweder ein Gerätename oder der Index der Schnittstelle sein.
fwmark [=|!=] MASKE
Abgleichen basierend auf dem fwmark-Wert für die Verbindung. Dies kann entweder ein bestimmter Mark-Wert oder ein Mark-Wert sein, gefolgt von einem "/" und einer Bitmaske, die angibt, welche Bits im Vergleich verwendet werden sollen. Zum Beispiel würde fwmark = 0x01/0x03 übereinstimmen, wenn die beiden niederwertigsten Bits des fwmark 0x01 sind.
cgroup [=|!=] PFAD
Abgleichen, wenn die Verbindung Teil einer cgroup am angegebenen Pfad ist.
autobound
Abgleichen, wenn der Port oder der Pfad der Quelladresse automatisch zugewiesen wurde (und nicht explizit angegeben wurde).
Die meisten Operatoren haben Aliase. Wenn kein Operator angegeben wird, wird = angenommen. Die folgenden Gruppen von Operatoren sind alle äquivalent:
= == eq
!= ne neq
> gt
< lt
>= ge geq
<= le leq
! not
| || or
& && and
HOST-SYNTAX
Die allgemeine Host-Syntax lautet [FAMILIE:]ADRESSE[:PORT].
FAMILIE muss eine der mit der Option -f unterstützten Familien sein. Wenn sie nicht angegeben ist, wird standardmäßig
die mit der Option -f angegebene Familie verwendet, und wenn diese ebenfalls fehlt, wird entweder inet oder inet6 angenommen.
Beachten Sie, dass alle Host-Bedingungen im Ausdruck entweder alle derselben Familie angehören oder nur inet und inet6 sein können. Wenn eine andere Mischung von Familien vorliegt, sind die Ergebnisse wahrscheinlich unerwartet.
Die Form von ADRESSE und PORT hängt von der verwendeten Familie ab. „*“ kann als Platzhalter für die Adresse oder den Port verwendet werden. Die Details für jede Familie sind wie folgt:
unix ADRESSE ist ein Glob-Muster (siehe fnmatch(3)), das (ohne Beachtung der Groß-/Kleinschreibung) mit
der Adresse des Unix-Sockets abgeglichen wird. Sowohl Pfad- als auch Abstract-Namen werden unterstützt. Unix-Adressen
unterstützen keinen Port, und „\*“ kann nicht als Platzhalter verwendet werden.
link ADRESSE ist der (ohne Beachtung der Groß-/Kleinschreibung) Name eines Ethernet-Protokolls, das abgeglichen werden soll. PORT ist entweder ein
Gerätename oder ein Geräteindex für das gewünschte Link-Gerät, wie in der Ausgabe von ip
link angezeigt.
netlink
ADRESSE ist eine Beschreibung der Netlink-Familie. Mögliche Werte stammen aus
/etc/iproute2/nl_protos. PORT ist die Port-ID des Sockets, die normalerweise der
Prozess-ID des Besitzers entspricht. Der Wert „kernel“ kann verwendet werden, um den Kernel darzustellen (Port-ID von
0).
vsock ADRESSE ist eine ganze Zahl, die die CID-Adresse darstellt, und PORT ist der Port.
inet und inet6
ADRESSE ist eine IP-Adresse (entweder v4 oder v6, je nach Familie) oder ein DNS-Hostname, der zu einer IP-Adresse der
erforderlichen Version aufgelöst wird. Eine IPv6-Adresse muss in „\[“ und „\]“ eingeschlossen werden,
um den Port-Trennzeichen zu unterscheiden. Die Adresse kann zusätzlich eine Präfixlänge in CIDR-Notation haben (ein Schrägstrich, gefolgt von der Präfixlänge in Bits). PORT ist entweder der numerische Socket-Port oder der Name des Dienstes, der dem Port zugeordnet ist.
BEISPIELE FÜR DIE VERWENDUNG
ss -t -a
Zeigt alle TCP-Sockets an.
ss -t -a -Z
Zeigt alle TCP-Sockets mit den SELinux-Sicherheitskontexten des Prozesses an.
ss -u -a
Zeigt alle UDP-Sockets an.
ss -o state established '( dport = :ssh or sport = :ssh )'
Zeigt alle etablierten SSH-Verbindungen an.
ss -x src /tmp/.X11-unix/*
Findet alle lokalen Prozesse, die mit dem X-Server verbunden sind.
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24
Listet alle TCP-Sockets im Zustand FIN-WAIT-1 für unseren Apache-Server zum Netzwerk 193.233.7/24 auf und zeigt deren Timer an.
ss -a -A 'all,!tcp'
Listet Sockets in allen Zuständen aus allen Socket-Tabellen, aber nicht TCP.
SIEHE AUCH
ip(8), RFC 793 - https://tools.ietf.org/rfc/rfc793.txt (TCP-Zustände)
AUTOR
ss wurde von Alexey Kuznetsov geschrieben, <_>.
Diese Manpage wurde von Michael Prokop <_> für das Debian-Projekt geschrieben (kann aber auch von anderen verwendet werden).