Was ist ein Port?
In Computernetzwerken stellt ein Port einen logischen Eintrags- und Ausgangspunkt für eine Verbindung dar. Ports basieren auf Software und sind völlig virtuell. Diese Ports auf einem Computer werden vom Betriebssystem verwaltet.
Worüber werden wir sprechen??
Dieses schnelle Tutorial zeigt die verschiedenen Methoden, um zu bestimmen, welcher Linux -Prozess oder -Dienst derzeit einen bestimmten Port hört. Lassen Sie uns über Ports und ihren Zweck sprechen.
Wie sind Ports analog zu physischen Ports?
So wie physische Ports dazu beitragen, mit verschiedenen peripheren Geräten zu interagieren, die mit einem Computer verbunden sind, helfen die Ports den verschiedenen Diensten, miteinander zu kommunizieren. Diese Dienste können sich auf demselben Computer oder auf verschiedenen Computern befinden.
Ein bisschen über den Hafen eines Dienstes
Um auf eingehende Verbindungsanfragen zuzuhören, verbindet sich ein Prozess mit einer Portnummer. Die meisten Prozesse werden mit einem Standardport eingerichtet und müssen diesen Port gemäß ihrer Spezifikation verwenden. Sie wechseln nicht automatisch zum anderen Port, es sei denn, ihre Konfiguration wird explizit geändert.
Einige Beispiele für Protokolle und ihre zugehörigen Standardports sind das Secure Shell (SSH) -Protokoll (Port22), den Apache HTTP (Port80), der MySQL -Datenbankserver (Port3306) usw. Sie können diese Informationen verwenden, um herauszufinden, welcher Standardport ein Dienst verwendet.
Die Konfigurationsdatei dieser Dienste kann bearbeitet werden, um auch einen anderen Port zu verwenden.
Überprüfen Sie die Ports unter Linux
Lassen Sie uns nun überprüfen. Hier zeigen wir Ihnen die verschiedenen Befehle für diesen Zweck.
1. LSOF -Befehl
Das LSOF -Dienstprogramm ist hilfreich, um eine Liste der Ports zu erhalten, die von Ihrem System verwendet werden. Betrachten wir das folgende Beispiel, um Informationen zu einem Prozess (Prozesse) mit dem TCP -Port 22 zu erhalten:
$ sudo lsof -i TCP: 22
Der Befehl LSOF enthält weitere Informationen wie den Namen des Benutzers und welche Prozess -IDs mit jedem Prozess verknüpft sind. Es funktioniert sowohl mit TCP- als auch mit UDP -Ports.
2. SS -Befehl
Der ss Der Befehl ist eine weitere Möglichkeit, herauszufinden, welche Prozesse mit einem bestimmten Port verknüpft sind. Obwohl LSOF die häufigere Abkürzung ist, können einige Menschen Ss als praktischer empfinden.
Suchen wir nach den Prozessen oder Diensten, die Port 3306 zuhören:
$ sudo ss -tunap | Grep: 3306
Lassen Sie uns diesen Befehl aufschlüsseln:
1. T: Es gibt dem Befehl ss an, die TCP -Pakete anzuzeigen.
2. u: Es gibt dem Befehl ss an, die UDP -Pakete anzuzeigen.
3. N: Es wird verwendet, um die Portnummern anstelle ihrer Übersetzungen anzuzeigen.
4. A: Es wird verwendet, um das Zuhören sowie nicht hörende Sockets aller Art anzuzeigen.
5. P: Es wird verwendet, um die Prozesse anzuzeigen, die einen Sockel verwenden.
Das Ergebnis des vorherigen Befehls zeigt an, in welchem Prozess welchen Port verwendet wird. Sie können auch den folgenden Befehl ausgeben:
$ sudo ss -tup -a sport =: 80
Hier bedeutet Sport den Quellport.
Diese beiden Ansätze können Ihnen helfen, die IDs der Prozesse zu finden, die mit verschiedenen Ports verbunden sind.
3. Netstat -Befehl
Der Befehl netstat zeigt die Informationen über Ihr Netzwerk an und kann verwendet werden, um die Probleme zu beheben oder die Art und Weise zu ändern, wie Ihr Netzwerk eingerichtet ist. Es kann auch in Ihren Netzwerkverbindungen genau beobachtet werden.
Dieser Befehl wird häufig verwendet, um Informationen zu Inbound- und Outbound -Verbindungen, Routing -Tabellen, Porthörungen und Nutzungsstatistiken zu sehen. Obwohl es in den letzten Jahren veraltet wurde, ist Netstat immer noch ein nützliches Instrument zur Analyse von Netzwerken.
Mit dem GREP -Befehl kann Netstat bestimmen, welcher Prozess oder Dienst einen bestimmten Port verwendet (indem der Port erwähnt wird):
$ sudo netstat -ltnp | grep -w ': 80'
Die hier verwendeten Optionen können wie folgt klassifiziert werden:
1. T: Es zeigt nur die TCP -Verbindung.
2. l: Es wird verwendet, um die Ergebnisse in einer Liste anzuzeigen.
3. N: Es zeigt Adressen und Portnummern im numerischen Format an.
4. P: Es zeigt den PID- und Programmnamen an, die jeder Sockel zugeordnet sind.
4. FUSER -Befehl
Der Befehl fusser bestimmt die Prozesse, die die Dateien oder Steckdosen verwenden. Sie können es verwenden, um die Dienste aufzulisten, die auf einem bestimmten Port ausgeführt werden. Nehmen wir das Beispiel von Port 3306 und sehen Sie, welche Dienste hier ausgeführt werden:
$ sudo fuser 3306/tcp
Dies bietet uns die Prozessnummern mit diesem Port. Sie können diese Prozessnummer verwenden, um die entsprechenden Prozessnamen zu finden. Wenn die Prozessnummer beispielsweise 15809 beträgt, lautet der Befehl hier wie folgt:
$ ps -p 15809 -o comm =
Es sind jedoch bestimmte Tools erforderlich, um die Prozesse zu identifizieren, die einen nicht standardmäßigen Anschluss verwenden. „LSOF“ ist ein Tool, um herauszufinden, welche Dienste in einem Netzwerk verfügbar sind und welche Ports sie verwenden. Betrachten Sie das folgende Beispiel. Dies zeigt, wie Sie die UDP- und TCP -Höranschlüsse auflisten:
$ sudo lsof -pni | EGREP "(udp | Hören)"
Das Folgende ist eine Beschreibung der Optionen, die hier verwendet werden:
1. P: Es unterdrückt die Suche nach dem Port Service -Namen.
2. N: Es zeigt die numerischen Netzwerkadressen an.
3. ich: Es listet die IP -Sockets auf.
Sowohl die Ports als auch die zugehörigen Prozesse sind im zuvor erwähnten Ergebnis gezeigt. Auf diese Weise ist besonders nützlich für Prozesse mit Nicht-Default-Ports.
Abschluss
In diesem Artikel haben wir über vier mögliche Linux-Befehlszeilen-Tools gesprochen und die Beispiele für die Verwendung von ihnen angegeben, um herauszufinden, welcher Prozess einen bestimmten Port anhört.