Dieser Artikel erschien zuerst auf Ollis Blog.
Hier ein paar Hinweise zu (einfachem) Netzwerk-Debugging mit und unter Linux. Die typischen Kommandos ping, netstat lasse ich dabei mal außen vor, sondern gehe auf „etwas“ speziellere Kommandos bzw. Alternativen ein.
Die typischen Kommandos ping, netstat lasse ich dabei mal außen vor, sondern gehe auf „etwas“ speziellere Kommandos bzw. Alternativen ein.
Prüfung auf aktive Hosts/Erreichbarkeit
Ich nutze dafür fping:
Vorteile: Ip-Ranges (Range oder CIDR Notation!), Statistiken und parallele Verarbeitung!
Nachteile: muss meist nachinstalliert werden
1. Single Host
$ fping -s 172.16.1.91 172.16.1.91 is alive 1 targets 1 alive 0 unreachable 0 unknown addresses 0 timeouts (waiting for response) 1 ICMP Echos sent 1 ICMP Echo Replies received 0 other ICMP received 0.98 ms (min round trip time) 0.98 ms (avg round trip time) 0.98 ms (max round trip time) 0.011 sec (elapsed real time)
2. mit IP-Range und Statisktik
$ fping -s -g 172.16.1.90 172.16.1.100 -r 1 172.16.1.91 is alive 172.16.1.92 is alive 172.16.1.93 is alive 172.16.1.94 is alive 172.16.1.95 is alive 172.16.1.97 is alive 172.16.1.90 is unreachable 172.16.1.96 is unreachable 172.16.1.98 is unreachable 172.16.1.99 is unreachable 172.16.1.100 is unreachable 11 targets 6 alive 5 unreachable 0 unknown addresses 10 timeouts (waiting for response) 16 ICMP Echos sent 6 ICMP Echo Replies received 0 other ICMP received 0.38 ms (min round trip time) 0.75 ms (avg round trip time) 1.45 ms (max round trip time) 2.808 sec (elapsed real time)
Verbindungen/Sessions anzeigen
Die meisten werden wahrscheinlich netstat nutzen, ich nehme dafür „ss“.
„ss“ ist schneller und bietet mehr Möglichkeiten in den Abfragen.
$ ss -a | less State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 0 *:6080 *:* LISTEN 0 0 172.16.0.250:5667 *:* LISTEN 0 0 *:5668 *:* LISTEN 0 0 *:11301 *:* LISTEN 0 0 127.0.0.1:smux *:* LISTEN 0 0 *:mysql *:* LISTEN 0 0 *:sunrpc *:* LISTEN 0 0 *:http *:* LISTEN 0 0 *:ssh *:* LISTEN 0 0 *:smtp *:* LISTEN 0 0 *:iscsi *:* TIME-WAIT 0 0 172.16.0.250:http 172.16.0.1:14653 TIME-WAIT 0 0 172.16.0.250:http 172.16.0.14:58166 TIME-WAIT 0 0 172.16.0.250:http 172.16.0.14:58167 TIME-WAIT 0 0 172.16.0.250:http 172.16.0.14:58164 TIME-WAIT 0 0 172.16.0.250:http 172.16.0.1:14654 TIME-WAIT 0 0 172.16.0.250:http 172.16.0.14:58165 <snip>
Lauschende Ports
$ ss -l | less State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 127.0.0.1:netbios-ssn *:* LISTEN 0 128 *:59532 *:* LISTEN 0 128 :::sunrpc :::* LISTEN 0 128 *:sunrpc *:* LISTEN 0 128 *:http *:* LISTEN 0 128 :::38386 :::* LISTEN 0 128 :::ssh :::* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:6010 *:* LISTEN 0 128 ::1:6010 :::* LISTEN 0 50 127.0.0.1:microsoft-ds *:* LISTEN 0 50 127.0.0.1:mysql *:*
$ ss -lt | less State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 127.0.0.1:netbios-ssn *:* LISTEN 0 128 *:59532 *:* LISTEN 0 128 :::sunrpc :::* LISTEN 0 128 *:sunrpc *:* LISTEN 0 128 *:http *:* LISTEN 0 128 :::38386 :::* LISTEN 0 128 :::ssh :::* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:6010 *:* LISTEN 0 128 ::1:6010 :::* LISTEN 0 50 127.0.0.1:microsoft-ds *:* LISTEN 0 50 127.0.0.1:mysql *:*
$ ss -lu | less State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:bootpc *:* UNCONN 0 0 *:sunrpc *:* UNCONN 0 0 172.16.0.75:ntp *:* UNCONN 0 0 127.0.0.1:ntp *:* UNCONN 0 0 *:ntp *:* UNCONN 0 0 172.16.255.255:netbios-ns *:* UNCONN 0 0 172.16.0.75:netbios-ns *:* UNCONN 0 0 *:netbios-ns *:* UNCONN 0 0 172.16.255.255:netbios-dgm *:* UNCONN 0 0 172.16.0.75:netbios-dgm *:* UNCONN 0 0 *:netbios-dgm *:* UNCONN 0 0 *:37222 *:* UNCONN 0 0 127.0.0.1:746 *:* UNCONN 0 0 *:858 *:* UNCONN 0 0 :::sunrpc :::* UNCONN 0 0 ::1:ntp :::* UNCONN 0 0 fe80::250:56ff:feb2:6063:ntp :::* UNCONN 0 0 :::ntp :::* UNCONN 0 0 :::858 :::* UNCONN 0 0 :::38139 :::*
ss -lp
Anzeige mit Filterung
Nach Port:
$ ss -t src :22 State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 172.16.0.75:ssh 172.16.0.12:62708
$ ss -t '( src :80 or src: 443 )' State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 172.16.0.250:80 172.16.0.239:59538
$ ss -t dst 172.16.0.0/24
$ ss -t dst 172.16.0.123
$ ss -t dst 172.16.0.123:80
$ ss -t state established | less Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 172.16.0.75:58739 172.16.0.2:microsoft-ds 0 0 172.16.0.75:51709 172.16.0.3:microsoft-ds 0 0 172.16.0.75:39253 172.16.0.3:1025 0 0 172.16.0.75:ssh 172.16.0.123:62708
-
established
-
syn-sent
-
syn-recv
-
fin-wait-1
-
fin-wait-2
-
time-wait
-
closed
-
close-wait
-
last-ack
-
closing
-
all – Alle..
-
connected – Alle verbundenen Sessions
-
synchronized – Alle verbundenen Sessions, ohne syn-sent
-
bucket – minisockets, z.B. time-wait und syn-recv.
-
big – „Normale“ sockets
Statistiken
$ ss -s Total: 364 (kernel 449) TCP: 1272 (estab 19, closed 1240, orphaned 1, synrecv 0, timewait 1238/0), ports 825 Transport Total IP IPv6 * 449 - - RAW 0 0 0 UDP 11 11 0 TCP 32 32 0 INET 43 43 0 FRAG 0 0 0
Verbindungen mitschneiden
$ tcpdump -n -i $INTERFACE -s$MAXIMALEPAKETGRÖßE -w $AUSGABEDATEI $FILTER -s = maximale Paketgröße, 0 => 65535 Bytes (empfehlenswert) -n = keine DNS Auflösung -i = Interface -w = Ausgabedatei
Filter
$ tcpdump -ni lanbond0 -w ~/http_mitschnitt.pcap -s0 host 172.16.0.5
$ tcpdump -ni lanbond0 -w ~/http_mitschnitt.pcap -s0 port not ssh and port http
Beispiel
$ tcpdump -ni lanbond0 -w ~/http_mitschnitt.pcap -s0 host 172.16.0.5 and port http
http://faq-o-matic.net/?p=5851