Welche Ports werden von einer Anwendung verwendet

Welche Ports werden von einer Anwendung verwendet

Ich teste eine Anwendung, die ihre eigenen Ports öffnet (als Server für diese Ports fungiert und daher an diesen Ports lauscht) und bei der dieselbe Anwendung eine Verbindung zu Ports herstellt, die von anderen Anwendungen gebunden sind (als Client für diese Ports fungiert).

Ich möchte einen Überblick darüber erhalten, welche Ports die Anwendung erstellt und mit welchen Anwendungen und Ports sie sich verbindet.

Wie kann ich das machen?

Antwort1

netstatSie können hierfür verwenden . Siehe das Beispiel (ich habe nach gesucht ssh):

netstat -putan | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1725/sshd
tcp        0      0 1.2.3.4:45734           1.2.3.5:22              ESTABLISHED 2491/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      1725/sshd

Erläuterung:

Ich verwende die Parameter häufig -putan(weil sie einfach zu merken sind).

  • -p: zeigt die PIDs der Anwendung/des Prozesses
  • -u: UDP-Ports/Verbindungen anzeigen
  • -t: TCP-Ports/Verbindungen anzeigen
  • -a: zeigt sowohl abhörende als auch nicht abhörende Sockets an
  • -n: numerische Ausgabe (keine DNS-Lookups für Hostnamen usw. durchführen)

In der Ausgabe oben sehen Sie, dass ein SSH-Daemon-Prozess ( sshd) mit PID auf allen Netzwerkschnittstellen ( ) 1725am Port lauscht . Außerdem ist ein SSH-Client-Prozess (PID ) mit der IP-Adresse an Portnummer verbunden , meine IP-Adresse ist und mein externer Port ist . Sie sehen, dass die Verbindung hergestellt ist. Daher bin ich über angemeldet .220.0.0.024911.2.3.5221.2.3.445734ssh

Antwort2

Ein weiteres Tool, das dies kann, istlsof:

# lsof -i -a -p 1981
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:22 (LISTEN)
#

Die verwendeten Optionen sind wie folgt:

  • -ium die von einem Prozess geöffneten Internet-Ports auszudrucken
  • -aum alle Optionen mit einem UND zu verknüpfen
  • -p 1981um die Ausgabe für den Prozess 1981 anzuzeigen
  • -num die Hostnamensuche zu unterbinden und stattdessen die IP anzuzeigen
  • -Pum die Dienstsuche zu unterbinden und stattdessen die Portnummer anzuzeigen

lsofhat den Vorteil, dass Sie den zu prüfenden Prozess angeben können, anstatt ihn aus einer größeren Ausgabe herauszusuchen. netstatist auf Systemen zuverlässiger verfügbar, lsofwird jedoch immer mehr zum Standard als früher.

Antwort3

Wir haben bereits gute Antworten, aber diese listen nur die Ports auf, die zum Zeitpunkt der Ausführung des Befehls geöffnet sind.

straceist das richtige Tool zum Überwachen der während der Anwendungslebensdauer geöffneten Verbindungen:

strace -e socket,connect,close -f -o hipchat.strace.txt hipchat

Die Ausgabe zeigt Ihnen zusätzliche Informationen wie UDP-Anfragen und geöffnete, aber geschlossene Verbindungen.

Antwort4

ss -a4 | less

Ich gehe davon aus, dass Sie von IPv4 sprechen ... Wenn nicht, können Sie die 4 im vorhergehenden Befehl durch 6 ersetzen. Der Parameter -a dient zum Anzeigen aller Ports (lauschende und nicht). Sie können den Parametern -n hinzufügen, wenn Sie die Namen in der Anzeige nicht auflösen möchten.

verwandte Informationen