Neulich schrieb ich einen Artikel, in dem gezeigt wurde, wie man unter Windows-Betriebssystemen Informationen von der Netzwerkkarte abruft , was ich normalerweise nicht sehr oft mache, da ich im Allgemeinen Linux-basierte Systeme verwalte. Dies brachte mich auf die Idee, einen Artikel über die Analyse von Netzwerkverbindungen unter Linux zu schreiben. Da ich jedoch wusste, dass netstat
bald durch ss
ersetzt wird, habe ich mich entschieden, den Befehl ss
direkt zu verwenden.
Was ist das mit den Net-Tools und der iproute2-Suite?
Für diejenigen, die etwas verloren sind, gehört der Befehl netstat
zur 2001 geborenen Netzwerkanalyse-Tool-Suite net-tools. Diese Suite wurde für die Verwendung mit älteren Kernels entwickelt und ist daher in vielen Linux-Distributionen bereits vorhanden hat net-tools durch die neue iproute2 suite ersetzt .
Die iproute2-Suite bietet bestimmte Vorteile gegenüber Net-Tools , bei denen wir nicht auf technische Details eingehen. Wenn wir jedoch klarstellen, dass sie eine bessere Leistung bieten, sind sie intuitiver zu bedienen und werden aktiv weiterentwickelt.
Da wir uns noch in der Übergangsphase zu iproute2 befinden, gibt es viele Distributionen, die beides enthalten, obwohl in anderen bereits Net-Tools entfernt und das Paket als veraltet markiert wurden.
Um ein einfaches Tutorial zu erstellen, konzentrieren wir uns nur auf die Verwendung des Befehls ss
, der Teil der iproute2-Suite ist. Dieser Befehl wird zum Analysieren von Netzwerkverbindungen verwendet , da er den alten Befehl netstat
ersetzt.
Analysieren von Netzwerkverbindungen unter Linux mit dem Befehl ss.
Der Befehl ss
bezieht sich auf “Socket Statuts” und wird zum Abrufen von Informationen zu Netzwerkverbindungen, offenen Ports und anderen Statistiken verwendet .
Die grundlegendste Verwendung ist ss -a
, mit der alle Informationen aller Verbindungen auf dem Bildschirm angezeigt werden. Von hier aus können wir verschiedene Modifikatoren hinzufügen, um die gesuchten Informationen zu erhalten. Ich empfehle, die Hilfe zum Befehl man ss
lesen oder die verschiedenen Modifikatoren mit dem Befehl ss -h
konsultieren.
Beispiele für die Verwendung des Befehls ss zum Abrufen von Verbindungsinformationen.
Wenn wir zunächst die Verbindungen auflisten möchten, abhängig davon, ob sie das TCP- oder das UDP-Protokoll verwenden , müssen wir die folgenden Befehle verwenden:
- Liste der TCP-Verbindungen:
ss -ta
- Liste der UDP-Protokollverbindungen:
ss -ua
Wir können die Liste auch danach filtern, ob sie das IPv4- oder das IPv6-Internetprotokoll verwenden :
- Verbindungen unter IPv4:
ss -4
- Verbindungen unter IPv6:
ss -6
Jetzt werden wir etwas mehr verfeinern und nur die Verbindungen auflisten , deren Status “LISTEN” ist , das heißt, sie hören weiter zu. Der grundlegendste Befehl in diesem Fall wäre ss -l
, der alle Listening-Sockets anzeigt, aber wir können ihn mit anderen Optionen kombinieren, um:
- Listen Sie die zu
ss -tl
TCP-Sockets auf:ss -tl
oder verwenden Sie den Befehlss -t state listening
- Listen Sie die zu
ss -ul
UDP-Sockets auf:ss -ul
oder den Befehlss -u state listening
Manchmal möchte ich den vorherigen Befehlen die Option -n
hinzufügen, damit die Namen der Dienste nicht aufgelöst werden. Sie können den Unterschied im folgenden Bild sehen.
Beispiele für das Filtern von Verbindungen abhängig vom Protokoll (HTTP, FTP, SMTP oder SSH) oder abhängig vom Port.
Jetzt zeige ich Ihnen einige Beispiele, um die Verbindungen aufzulisten, aber nach einigen der am häufigsten verwendeten Protokolle zu filtern:
- So listen Sie den HTTP-Verkehr auf :
ss state established '( dport = :http or sport = :http )'
- Aktive FTP-Protokollverbindungen
ss state established '( dport = :ftp or sport = :ftp )'
:ss state established '( dport = :ftp or sport = :ftp )'
- Liste aktiver Verbindungen SMTP :
ss state established '( dport= :smtp or sport= :smtp )'
-
ss state established '( dport = :ssh or sport = :ssh )'
Sie, ob SSH-Verbindungen bestehen :ss state established '( dport = :ssh or sport = :ssh )'
In diesem Abschnitt muss die Möglichkeit hinzugefügt werden, die Verbindungen abhängig vom Port ss -nt dst :80
Beispiel können wir mit ss -nt dst :80
die Verbindungen ss -nt dst :80
ist. Wann wir ss -nt dst :80
möchten, sind die Verbindungen, deren Port Die Quelle ist 80, wir werden den Befehl ss -nt src :80
.
Wir können mehrere Ports gleichzeitig überwachen , zum Beispiel mit dem ss -nt '( dst :443 or dst :80 )'
.
Fügen Sie zum Schluss einen kleinen Trick hinzu, bei dem ss
Verbindung mit dem Befehl watch
wird, um Verbindungen in Echtzeit zu überwachen. Wir könnten zum Beispiel watch ss -ta
verwenden: watch ss -ta
Ich hoffe, dieses kleine Tutorial hat Ihnen geholfen und dient als Ausgangspunkt, um ein Verbindungsproblem zu lösen, Ihre Serververbindungen zu überwachen usw.