Eine Einführung in den ss-Befehl

Lernen Sie in diesem Tutorial aus den Archiven, wie man mit dem ss-Befehl Netzwerkinformationen abruft.

Linux enthält eine ziemlich große Auswahl an Werkzeugen, die fast alle Bedürfnisse erfüllen. Von der Entwicklung bis zur Sicherheit, von der Produktivität bis zur Verwaltung … wenn Sie etwas zu erledigen haben, ist Linux zur Stelle. Eines der vielen Tools, auf die Administratoren häufig zurückgreifen, ist netstat. Der Befehl netstat wurde jedoch zugunsten des schnelleren, besser lesbaren Befehls ss veraltet.

Der ss-Befehl ist ein Werkzeug zum Auslesen von Socket-Statistiken und zeigt Informationen auf ähnliche Weise an wie netstat (allerdings einfacher und schneller). Der ss-Befehl kann sogar noch mehr TCP- und Statusinformationen anzeigen als die meisten anderen Tools. Da ss das neue netstat ist, werden wir uns ansehen, wie Sie dieses Tool nutzen können, um leichter Informationen über Ihren Linux-Rechner und die Netzwerkverbindungen zu erhalten.

Das Befehlszeilenprogramm ss kann Statistiken für PACKET-, TCP-, UDP-, DCCP-, RAW- und Unix-Domain-Sockets anzeigen. Der Ersatz für netstat ist einfacher zu bedienen (vergleichen Sie die Manpages, um eine unmittelbare Vorstellung davon zu erhalten, wie viel einfacher ss ist). Mit ss erhalten Sie sehr detaillierte Informationen darüber, wie Ihr Linux-Rechner mit anderen Rechnern, Netzwerken und Diensten kommuniziert; Details über Netzwerkverbindungen, Netzwerkprotokollstatistiken und Linux-Socket-Verbindungen. Mit diesen Informationen können Sie verschiedene Netzwerkprobleme viel einfacher beheben.

Lassen Sie uns mit ss vertraut werden, damit Sie es als neues Werkzeug in Ihrem Administrator-Kit betrachten können.

Grundlegende Verwendung

Der ss-Befehl funktioniert wie jeder andere Befehl auf der Linux-Plattform: Geben Sie den Befehl executable ein und folgen Sie ihm mit einer beliebigen Kombination der verfügbaren Optionen. Wenn Sie einen Blick in die ss-Manualseite werfen (geben Sie den Befehl man ss ein), werden Sie feststellen, dass es nicht annähernd so viele Optionen wie beim Befehl netstat gibt; das bedeutet jedoch nicht, dass es an Funktionalität mangelt. Tatsächlich ist ss ziemlich leistungsfähig.

Wenn Sie den Befehl ss ohne Argumente oder Optionen eingeben, gibt er eine vollständige Liste der TCP-Sockets mit bestehenden Verbindungen zurück (Abbildung 1).

Abbildung 1: Eine vollständige Liste aller bestehenden TCP-Verbindungen.

Da der ss-Befehl (ohne Optionen) eine beträchtliche Menge an Informationen anzeigt (alle tcp-, udp- und Unix-Socket-Verbindungsdetails), können Sie die Befehlsausgabe auch in eine Datei senden, um sie später einzusehen:

ss > ss_output

Natürlich ist ein sehr einfacher Befehl nicht in jeder Situation nützlich. Was ist, wenn wir nur die aktuell abgehörten Sockets sehen wollen? Ganz einfach, man fügt die Option -l hinzu:

ss -l

Der obige Befehl gibt nur eine Liste der aktuell abgehörten Sockets aus.

Um es etwas genauer zu machen, kann man es sich so vorstellen: ss kann verwendet werden, um TCP-Verbindungen mit der Option -t, UDP-Verbindungen mit der Option -u oder UNIX-Verbindungen mit der Option -x anzuzeigen; also ss -t, ss -u oder ss -x. Wenn Sie einen dieser Befehle ausführen, erhalten Sie eine Fülle von Informationen (Abbildung 2).

Abbildung 2: Wenn Sie ss -u unter Elementary OS ausführen, erhalten Sie eine schnelle Anzeige der UDP-Verbindungen.

Standardmäßig werden bei der Verwendung der Optionen -t, -u oder -x nur die Verbindungen angezeigt, die eingerichtet (oder verbunden) sind. Wenn wir Verbindungen auflisten wollen, die gerade abgehört werden, müssen wir die Option -a hinzufügen:

ss -t -a 

Die Ausgabe des obigen Befehls enthält alle TCP-Sockets (Abbildung 3).

Abbildung 3: Beachten Sie, dass der letzte Socket ssh ist, der auf dem Gerät abhört.

Im obigen Beispiel können Sie sehen, dass UDP-Verbindungen (in verschiedenen Zuständen) von der IP-Adresse meines Rechners über verschiedene Ports zu verschiedenen IP-Adressen hergestellt werden. Anders als die netstat-Version dieses Befehls zeigt ss nicht die PID und den Befehlsnamen an, die für diese Verbindungen verantwortlich sind. Trotzdem haben Sie immer noch genügend Informationen, um mit der Fehlersuche zu beginnen. Sollte einer dieser Ports oder URLs verdächtig sein, wissen Sie jetzt, welche IP-Adresse/Port die Verbindung herstellt. Damit haben Sie nun die Informationen, die Ihnen in der Anfangsphase der Fehlersuche helfen können.

Filtern von ss mit TCP-Zuständen

Eine sehr praktische Option, die dem ss-Befehl zur Verfügung steht, ist die Möglichkeit, nach TCP-Zuständen (den „Lebensphasen“ einer Verbindung) zu filtern. Mit Hilfe der Zustände können Sie die Ergebnisse des ss-Befehls leichter filtern. Das ss-Tool kann in Verbindung mit allen Standard-TCP-Zuständen verwendet werden:

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

Weitere verfügbare Zustandskennungen, die ss erkennt, sind:

  • all (alle oben genannten Zustände)

  • connected (alle Zustände mit Ausnahme von listen und closed)

  • synchronized (alle verbundenen Zustände mit Ausnahme von syn-sent)

  • bucket (Zustände, die als Minisockets gepflegt werden, z.B. time-wait und

  • syn-recv)

  • big (Gegensatz zum bucket state)

Die Syntax für die Arbeit mit Zuständen ist einfach.

For tcp ipv4:ss -4 state FILTERFor tcp ipv6:ss -6 state FILTER

Wobei FILTER der Name des Status ist, den Sie verwenden möchten.

Angenommen, Sie möchten alle hörenden IPv4-Sockets auf Ihrem Rechner anzeigen. Hierfür wäre der Befehl:

ss -4 state listening

Die Ergebnisse dieses Befehls würden ähnlich wie in Abbildung 4 aussehen.

Abbildung 4: Verwendung von ss mit einem Listening-Status-Filter.

Verbundene Sockets von einer bestimmten Adresse anzeigen

Eine praktische Aufgabe, die Sie ss zuweisen können, ist es, Verbindungen von einer anderen IP-Adresse zu melden. Angenommen, Sie wollen herausfinden, ob/wie ein Rechner mit der IP-Adresse 192.168.1.139 eine Verbindung zu Ihrem Server hergestellt hat. Dazu könnten Sie den Befehl:

ss dst 192.168.1.139

geben. Die daraus resultierenden Informationen (Abbildung 5) informieren Sie über die Netid, den Status, die lokale IP:Port und die entfernte IP:Port des Sockets.

Abbildung 5: Ein entfernter Rechner hat eine ssh-Verbindung zu unserem lokalen Rechner aufgebaut.

Lassen Sie es für sich arbeiten

Der ss-Befehl kann Ihnen bei der Fehlersuche in Bezug auf Ihren Linux-Server oder Ihr Netzwerk eine Menge Arbeit abnehmen. Es wäre gut, wenn Sie sich die Zeit nehmen würden, die ss-Manpage zu lesen (geben Sie den Befehl man ss ein). Aber zu diesem Zeitpunkt sollten Sie zumindest ein grundlegendes Verständnis dafür haben, wie Sie diesen Befehl verwenden können.

Lernen Sie mehr über Linux mit dem kostenlosen Kurs „Introduction to Linux“ von The Linux Foundation und edX.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.