Mit dem Dienstprogramm tcpdump können Sie Pakete erfassen, die innerhalb Ihres Netzwerks fließen, um die Netzwerkfehlerbehebung zu unterstützen. Im Folgenden finden Sie einige Beispiele für die Verwendung von tcpdump mit verschiedenen Optionen. Der Datenverkehr wird basierend auf einem angegebenen Filter erfasst. Es gibt eine Vielzahl von Optionen, darunter:
Optionen | Beschreibung |
---|---|
-D | Eine Liste der Netzwerkschnittstellen drucken. |
-i | Geben Sie eine Schnittstelle an, auf der erfasst werden soll. |
-c | Geben Sie die Anzahl der zu empfangenden Pakete an. |
-v, -vv, -vvv | Erhöhen Sie den Detaillierungsgrad (Ausführlichkeit). |
-w | Erfasste Daten in eine Datei schreiben. |
-r | Erfasste Daten aus einer Datei lesen. |
Installieren des Dienstprogramms tcpdump
Auf den meisten Unix/Linux-Systemen finden Sie das tcpdump-Paket nicht bereits installiert. Um die neueste Version zu installieren, verwenden Sie den entsprechenden Paketmanager auf Ihrem System. Beispiel:Im Falle von CentOS/RHEL-Servern:
# yum install tcpdump
Beispiele für die Verwendung von tcpdump für die Netzwerkfehlerbehebung
1. Liste der Netzwerkschnittstellen anzeigen
So drucken Sie eine Liste der verfügbaren Netzwerkschnittstellen, auf denen tcpdump Pakete erfassen kann:
# tcpdump -D 1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.any (Pseudo-device that captures on all interfaces) 5.lo [Loopback]
2. Erfassung auf einer bestimmten Schnittstelle
Wie aus dem Befehl „tcpdump -D“ ersichtlich, wird für jede Netzwerkschnittstelle eine Nummer und ein Schnittstellenname gedruckt. Dem -i kann der Schnittstellenname oder die Nummer übergeben werden -Flag, um eine Schnittstelle anzugeben, auf der erfasst werden soll. Zum Beispiel, um die Pakete auf der Schnittstelle eth0 zu erfassen:
# tcpdump -i 1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 01:26:51.118038 IP ec2-54-159-106-120.compute-1.amazonaws.com.48021 > geeklab.31297: Flags [S], seq 3960153353, win 26883, options [mss 1460,sac kOK,TS val 2229362922 ecr 0,nop,wscale 7], length 0 01:26:51.118072 IP geeklab.31297 > ec2-54-159-106-120.compute-1.amazonaws.com.48021: Flags [S.], seq 547340507, ack 3960153354, win 26847, optio ns [mss 8961,sackOK,TS val 5714985 ecr 2229362922,nop,wscale 7], length 0
In diesem Beispiel ist die Ausgabe kontinuierlich, bis sie durch Drücken von Strg + C beendet wird.
3. Nur eine bestimmte Anzahl von Paketen erfassen
Um tcpdump nach Erhalt einer bestimmten Anzahl von Paketen zu beenden, verwenden Sie -c (count) Option gefolgt von der Anzahl der zu empfangenden Pakete. Das folgende Beispiel erfasst zwei Pakete:
# tcpdump -i 1 -c 2 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 01:37:08.956549 IP 182.100.67.76.38819 > geeklab.ssh: Flags [P.], seq 542149092:542149176, ack 774431931, win 271, options [nop,nop,TS val 26493 51 ecr 6332468], length 84 01:37:08.956575 IP geeklab.ssh > 182.100.67.76.38819: Flags [.], ack 84, win 230, options [nop,nop,TS val 6332824 ecr 2649351], length 0 2 packets captured 6 packets received by filter 0 packets dropped by kernel
Wie in diesem Beispiel gezeigt, meldet tcpdump nach Abschluss der Paketerfassung Folgendes:
- Pakete erfasst :Dies ist die Anzahl der Pakete, die tcpdump empfangen und verarbeitet hat.
- vom Filter empfangene Pakete :Ein Filter kann auf der Kommandozeile angegeben werden und nur die Pakete, die dem definierten Filter entsprechen, werden von tcpdump verarbeitet und gezählt.
- vom Kernel verworfene Pakete :Dies ist die Anzahl der Pakete, die aufgrund von Pufferspeicherplatzmangel verworfen wurden. Verwenden Sie die Option -B, um die Puffergröße einzustellen.
4. Erhöhen Sie die Details (Ausführlichkeit) der Ausgabe
Um die Details (Ausführlichkeit) der Ausgabe zu erhöhen, verwenden Sie -v Option oder -vv für eine noch ausführlichere Ausgabe oder -vvv für die ausführlichste Ausgabeebene:
# tcpdump –i 1 –v # tcpdump –i 1 -vv # tcpdump –i 1 –vvv
5. Erfassen Sie die Daten in einer Datei
Verwenden des Dienstprogramms tcpdump mit -w Mit der Option können Sie erfasste Daten in eine Datei schreiben. Dadurch können die erfassten Daten von anderen Netzwerkanalyse-Tools wie Wireshark gelesen werden. Das folgende Beispiel erfasst Daten in einer Datei namens capture.out:
# tcpdump –i 1 –v –c2 –w capture.out
6. Lesen erfasster Daten
Sie können auch erfasste Daten aus einer Datei lesen, indem Sie –r verwenden Möglichkeit:
# tcpdump –r capture_file
Einige weitere Beispiele für den Befehl tcpdump
Viele andere Optionen und Argumente können mit tcpdump verwendet werden. Im Folgenden finden Sie einige spezifische Beispiele für die Leistungsfähigkeit des Dienstprogramms tcpdump.
1. Datenverkehr zwischen 2 Hosts anzeigen
So zeigen Sie den gesamten Datenverkehr zwischen zwei Hosts an (dargestellt durch die Variablen host1 und host2):
# tcpdump host host1 and host2
2. Nur Datenverkehr von einem Quell- oder Zielhost anzeigen
So zeigen Sie Datenverkehr nur von einem Quell- (src) oder Zielhost (dst) an:
# tcpdump src host # tcpdump dst host
3. Datenverkehr für ein bestimmtes Protokoll anzeigen
Geben Sie das Protokoll als Argument an, um nur Datenverkehr für ein bestimmtes Protokoll anzuzeigen, z. B. tcp, udp, icmp, arp:
# tcpdump protocol
Zum Beispiel, um den Verkehr nur für den TCP-Verkehr anzuzeigen:
# tcpdump tcp
4. Filtern nach Quell- oder Zielport
So filtern Sie basierend auf einem Quell- oder Zielport:
# tcpdump src port ftp # tcpdump dst port http
Das Dienstprogramm tcpdump akzeptiert auch boolesche Operatoren (AND, NOT, OR) und die Gruppierung von Operatoren, wodurch Sie komplexe Filter zum Erfassen von Netzwerkdaten erstellen können.