GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 grundlegende Beispiele für den Linux-Netstat-Befehl

Netstat

Netstat ist ein Befehlszeilendienstprogramm, das verwendet werden kann, um alle Netzwerk-(Socket-)Verbindungen auf einem System aufzulisten. Es listet alle TCP-, UDP-Socket-Verbindungen und die Unix-Socket-Verbindungen auf.

Abgesehen von verbundenen Sockets kann es auch lauschende Sockets auflisten, die auf eingehende Verbindungen warten. Indem Sie also einen offenen Port 80 verifizieren, können Sie bestätigen, ob ein Webserver auf dem System läuft oder nicht.

Dies macht es zu einem sehr nützlichen Werkzeug für Netzwerk- und Systemadministratoren.

In diesem Tutorial sehen wir uns einige Beispiele an, wie man netstat verwendet, um Informationen über Netzwerkverbindungen und offene Ports auf einem System zu finden.

Hier ist eine kurze Einführung in netstat von den Manpages

netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

1. Alle Verbindungen auflisten

Der erste und einfachste Befehl besteht darin, alle aktuellen Verbindungen aufzulisten. Führen Sie einfach den Befehl netstat mit der Option a aus.

$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 enlightened:domain      *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 enlightened.local:54750 li240-5.members.li:http ESTABLISHED
tcp        0      0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHED
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN
udp        0      0 enlightened:domain      *:*
udp        0      0 *:bootpc                *:*
udp        0      0 enlightened.local:ntp   *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp        0      0 *:58570                 *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:49459                 *:*
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*
udp6       0      0 ip6-localhost:ntp       [::]:*
udp6       0      0 [::]:ntp                [::]:*
udp6       0      0 [::]:mdns               [::]:*
udp6       0      0 [::]:63811              [::]:*
udp6       0      0 [::]:54952              [::]:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     12403    @/tmp/dbus-IDgfj3UGXX
unix  2      [ ACC ]     STREAM     LISTENING     40202    @/dbus-vfs-daemon/socket-6nUC6CCx

Der obige Befehl zeigt alle Verbindungen von verschiedenen Protokollen wie TCP, UDP und Unix-Sockets. Dies ist jedoch nicht ganz sinnvoll. Administratoren möchten häufig bestimmte Verbindungen beispielsweise anhand von Protokollen oder Portnummern auswählen.

2. Nur TCP- oder UDP-Verbindungen auflisten

Um nur TCP-Verbindungen aufzulisten, verwenden Sie die t-Optionen.

$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 enlightened:domain      *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHED
tcp        0      0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHED
tcp        0      0 enlightened.local:37892 ABTS-North-Static-:http ESTABLISHED
.....

Um nur UDP-Verbindungen aufzulisten, verwenden Sie die Option u.

$ netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 *:34660                 *:*
udp        0      0 enlightened:domain      *:*
udp        0      0 *:bootpc                *:*
udp        0      0 enlightened.local:ntp   *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*
udp6       0      0 ip6-localhost:ntp       [::]:*
udp6       0      0 [::]:ntp                [::]:*

Die obige Ausgabe zeigt sowohl IPv4- als auch IPv6-Verbindungen.

3. Reverse-DNS-Lookup für schnellere Ausgabe deaktivieren

Standardmäßig versucht der Befehl netstat, den Hostnamen jeder IP-Adresse in der Verbindung herauszufinden, indem er eine umgekehrte DNS-Suche durchführt. Dadurch wird die Ausgabe verlangsamt. Wenn Sie den Hostnamen nicht wissen müssen und nur die IP-Adresse ausreicht, unterdrücken Sie die Suche nach dem Hostnamen mit der Option n.

$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.2:49058       173.255.230.5:80        ESTABLISHED
tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED
tcp6       0      0 ::1:631                 :::*                    LISTEN

Der obige Befehl zeigt ALLE TCP-Verbindungen ohne DNS-Auflösung. Ich habs ? Gut.

4. Hörverbindungen prüfen – Ports öffnen

Jeder Netzwerk-Daemon/Dienst behält einen offenen Port, um auf eingehende Verbindungen zu lauschen. Auch diese sind wie Socket-Verbindungen und werden von netstat aufgelistet. Um nur Listening Ports anzuzeigen, verwenden Sie die Option "-l".

$ netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp6       0      0 ::1:631                 :::*                    LISTEN

Jetzt können wir nur lauschende TCP-Ports/Verbindungen sehen. Wenn Sie alle Listening-Ports sehen möchten, entfernen Sie die Option t. Wenn Sie nur lauschende UDP-Ports sehen möchten, verwenden Sie die Option "-u" anstelle von "-t".

Achten Sie darauf, die Option "-a" zu entfernen, da sonst alle Verbindungen aufgelistet werden und nicht nur die lauschenden Verbindungen.

Wenn Sie einen Dienst wie http oder smtp auf Ihrem Linux-Server ausführen, können Sie den obigen Befehl verwenden, um zu überprüfen, ob der Dienst auf eingehende Verbindungen wartet oder nicht.

5. Prozessname/PID und Benutzer-ID abrufen

Beim Anzeigen der offenen/lauschenden Ports und Verbindungen ist es oft hilfreich, den Prozessnamen/PID zu kennen, der diesen Port oder diese Verbindung geöffnet hat.

Zum Beispiel öffnet der Apache httpd-Server Port 80. Wenn Sie also überprüfen möchten, ob irgendein http-Server läuft oder nicht, oder welcher http-Server läuft, Apache oder nginx, dann suchen Sie den Prozessnamen auf.

Die Prozessdetails werden durch die Option 'p' zur Verfügung gestellt.

~$ sudo netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1144/dnsmasq
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      661/cupsd
tcp6       0      0 ::1:631                 :::*                    LISTEN      661/cupsd

Wenn die Option p verwendet wird, muss netstat mit Root-Rechten ausgeführt werden, da es sonst die PIDs von Prozessen, die mit Root-Rechten laufen, nicht erkennen kann, und die meisten Dienste wie http und ftp werden oft mit Root-Rechten ausgeführt.

Zusammen mit Prozessname/PID ist es sogar noch nützlicher, den Benutzernamen/UID zu erhalten, dem dieser bestimmte Prozess gehört. Verwenden Sie die Option e zusammen mit der Option p, um auch den Benutzernamen zu erhalten.

$ sudo netstat -ltpe
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 enlightened:domain      *:*                     LISTEN      root       11090       1144/dnsmasq
tcp        0      0 localhost:ipp           *:*                     LISTEN      root       9755        661/cupsd
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN      root       9754        661/cupsd

Das obige Beispiel listet Listening-Verbindungen vom Typ Tcp mit Prozessinformationen und erweiterten Informationen auf.
Die erweiterten Informationen enthalten den Benutzernamen und den Inode des Prozesses. Dies ist ein nützlicher Befehl für Netzwerkadministratoren.

Hinweis - Wenn Sie die Option n zusammen mit der Option e verwenden, wird die uid aufgelistet und nicht der Benutzername.

6. Statistiken drucken

Der Befehl netstat kann auch Netzwerkstatistiken wie die Gesamtzahl der empfangenen und gesendeten Pakete nach Protokolltyp usw. ausdrucken.

Statistiken aller Pakettypen auflisten

$ netstat -s
Ip:
    32797 total packets received
    0 forwarded
    0 incoming packets discarded
    32795 incoming packets delivered
    29115 requests sent out
    60 outgoing packets dropped
Icmp:
    125 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 125
    125 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 125
... OUTPUT TRUNCATED ...

Um Statistiken nur ausgewählter Protokolle wie TCP oder UDP auszudrucken, verwenden Sie die entsprechenden Optionen wie t und u zusammen mit der Option s. Ganz einfach!

7. Informationen zum Kernel-Routing anzeigen

Die Kernel-Routing-Informationen können mit der Option r gedruckt werden. Es ist die gleiche Ausgabe wie beim route-Befehl. Wir verwenden auch die Option n, um die Suche nach Hostnamen zu deaktivieren.

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

8. Netzwerkschnittstellen drucken

Der Befehl netstat kann auch die Informationen über die Netzwerkschnittstellen ausgeben. Die Option "-i" erledigt die Aufgabe.

$ netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0     31611      0      0 0         27503      0      0      0 BMRU
lo        65536 0      2913      0      0 0          2913      0      0      0 LRU

Die obige Ausgabe enthält Informationen in einem sehr rohen Format. Um eine benutzerfreundlichere Version der Ausgabe zu erhalten, verwenden Sie die Option e zusammen mit i.

$ netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:16:36:f8:b2:64
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::216:36ff:fef8:b264/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31682 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27573 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:29637117 (29.6 MB)  TX bytes:4590583 (4.5 MB)
          Interrupt:18 Memory:da000000-da020000
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2921 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2921 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:305297 (305.2 KB)  TX bytes:305297 (305.2 KB)

Die obige Ausgabe ähnelt der Ausgabe des ifconfig-Befehls.

9. Kontinuierliche netstat-Ausgabe erhalten

Netstat kann mit der Option c kontinuierlich Verbindungsinformationen ausgeben.

$ netstat -ct

Der obige Befehl gibt kontinuierlich TCP-Verbindungen aus.

10. Informationen zu Multicast-Gruppen anzeigen

Die Option g zeigt die Multicast-Gruppeninformationen für IPv4- und IPv6-Protokolle an.

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net
lo              1      ip6-allnodes
lo              1      ff01::1
eth0            1      ff02::fb
eth0            1      ff02::1:fff8:b264
eth0            1      ip6-allnodes
eth0            1      ff01::1
wlan0           1      ip6-allnodes
wlan0           1      ff01::1

Weitere Beispiele für den netstat-Befehl

Okay, wir haben die grundlegenden Beispiele des netstat-Befehls oben behandelt. Jetzt ist es an der Zeit, Geek-Sachen mit Stil zu machen.

Aktive Verbindungen drucken

Aktive Socket-Verbindungen befinden sich im Zustand „HERGESTELLT“. Um also alle aktuellen aktiven Verbindungen zu erhalten, verwenden Sie netstat mit grep wie folgt

$ netstat -atnp | grep ESTA
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 192.168.1.2:49156       173.255.230.5:80        ESTABLISHED 1691/chrome
tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED 1691/chrome

Um eine fortlaufende Liste aktiver Verbindungen anzuzeigen, verwenden Sie den watch-Befehl zusammen mit netstat und grep

$ watch -d -n0 "netstat -atnp | grep ESTA"

Überprüfen Sie, ob ein Dienst ausgeführt wird

Wenn Sie überprüfen möchten, ob ein Server wie http, smtp oder ntp läuft oder nicht, verwenden Sie erneut grep.

$ sudo netstat -aple | grep ntp
udp        0      0 enlightened.local:ntp   *:*                                 root       17430       1789/ntpd
udp        0      0 localhost:ntp           *:*                                 root       17429       1789/ntpd
udp        0      0 *:ntp                   *:*                                 root       17422       1789/ntpd
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                              root       17432       1789/ntpd
udp6       0      0 ip6-localhost:ntp       [::]:*                              root       17431       1789/ntpd
udp6       0      0 [::]:ntp                [::]:*                              root       17423       1789/ntpd
unix  2      [ ]         DGRAM                    17418    1789/ntpd

Wir haben also festgestellt, dass der NTP-Server läuft. Grep für http oder smtp oder was auch immer Sie suchen.

Schlussfolgerung

Nun, das war das meiste, wofür netstat verwendet wird. Wenn Sie nach weiterführenden Informationen suchen oder tiefer graben möchten, lesen Sie das netstat-Handbuch (man netstat).

Und hinterlassen Sie Ihr Feedback und Ihre Vorschläge im Kommentarfeld unten.

Ressourcen

Sehen Sie sich die Linux-Handbuchseite für netstat an, um mehr zu erfahren.

https://linux.die.net/man/8/netstat
https://man7.org/linux/man-pages/man8/netstat.8.html


Linux
  1. UNIX / Linux:10 Netstat-Befehlsbeispiele

  2. sa-Befehlsbeispiele in Linux

  3. ac-Befehlsbeispiele in Linux

  4. df-Befehlsbeispiele in Linux

  5. du-Befehlsbeispiele in Linux

wc Linux-Befehl mit Beispielen

Netstat-Befehl in Linux - 28 Befehle mit Beispielen

10 Beispiele für Linux ss-Befehle zur Überwachung von Netzwerkverbindungen

id-Befehlsbeispiele in Linux

netstat-Befehlsbeispiele in Linux

w Befehlsbeispiele unter Linux