Oft ist die einzige oder zumindest die schnellste Möglichkeit, Probleme bei der Netzwerkkommunikation zu beheben, eine Aufzeichnung der Kommunikation zu sammeln und diese zur Analyse an einen Experten zu senden. Wenn der Experte nicht zu Ihrem Unternehmen gehört, kann dies zu Sicherheitsbedenken führen, da die Aufzeichnung Anwendungsdaten enthält. In der Regel sind jedoch die Ethernet-, IP- und TCP-, UDP- oder ICMP-Protokoll-Header wichtig und nicht die Anwendungsdaten. Wenn dies der Fall ist, können Sie die Daten entweder gar nicht erst sammeln oder die Daten nach dem Sammeln entfernen.
Mit packet_monitor können Sie alle Header, aber keine Daten mit folgendem Befehl sammeln
packet_monitor -interface #INTERFACE -numerisch -time_stamp -verbose -pkt_hdr
|
Dabei ist INTERFACE der Gerätename der IP-Schnittstelle, wie er mit dem Befehl "ifconfig -all" angezeigt wird. Die Ablaufverfolgung sieht dann so aus
dir icmp typ
+ tcp
hh:mm:ss.ttt dir len proto Quelle Ziel src port ds
+t port typ
11:40:21.234 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 78, ID 2212, Flg/Frg 0, TTL 3c, Prtl 6
Cksum 788b, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 nach 164.152.77.50.6991
seq 1332611210, ack 3416994988, window 8192, 80 Datenbytes, Flags Push Ack
+.
X/Off 05, Merker 18, Cksum c3aa, Urg-> 0000
11:40:21.235 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len a8, ID 2213, Flg/Frg 0, TTL 3c, Prtl 6
Cksum 785a, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 nach 164.152.77.50.6991
seq 1332611290, ack 3416994988, window 8192, 128 Datenbytes, Flags Push Ac
+k.
X/Off 05, Merker 18, Cksum ce9f, Urg-> 0000
11:40:21.236 Rcvd Ether Dst 00:00:a8:43:52:22 Src 00:23:54:52:18:6e Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 28, ID 3032, Flg/Frg 4000, TTL 80, Prtl 6
Cksum e6ba, Src a4984d32, Dst a4984d80
TCP von 164.152.77.50.6991 nach 164.152.77.128.22
seq 3416994988, ack 1332611418, window 16176, 0 Datenbytes, Flags Ack.
X/Off 05, Flags 10, Cksum 183c, Urg-> 0000
11:40:21.952 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len a8, ID 2214, Flg/Frg 0, TTL 3c, Prtl 6
Cksum 7859, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 nach 164.152.77.50.6991
seq 1332611418, ack 3416994988, window 8192, 128 Datenbytes, Flags Push Ac
+k.
X/Off 05, Merker 18, Cksum 59a9, Urg-> 0000
11:40:21.953 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 98, ID 2215, Flg/Frg 0, TTL 3c, Prtl 6
Cksum 7868, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 nach 164.152.77.50.6991
seq 1332611546, ack 3416994988, window 8192, 112 Datenbytes, Flags Push Ac
+k.
X/Off 05, Merker 18, Cksum 2b4e, Urg-> 0000
|
Das Problem bei diesem Ansatz ist, dass sich manchmal herausstellt, dass das Problem anwendungsbezogen ist und Sie die Anwendungsdaten benötigen. Wenn Sie nicht von Anfang an einen vollständigen Trace gesammelt haben, müssen Sie entweder das Problem reproduzieren oder warten, bis es wieder auftritt. Es ist viel einfacher, eine vollständige Ablaufverfolgung zu sammeln, indem Sie die Argumente "-hex_dump" und "-length 1500" hinzufügen und dann die Anwendungsdaten aus einer Kopie entfernen, wenn Sie die Ablaufverfolgung zunächst zur Analyse senden. Die folgende Abbildung zeigt den Befehl und die Ablaufverfolgung, aber aus Platzgründen habe ich die Ablaufverfolgung so bearbeitet, dass der größte Teil der Anwendungsdaten entfernt wurde.
packet_monitor -interface #sdlmux.m16.11-3 -numeric -time_stamp -verbose -pkt_hd
+r -hex_dump -length 1500
dir icmp type
+ tcp
hh:mm:ss.ttt dir len proto source destination src port ds
+t port type
13:52:04.672 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 5dc, ID 9eaa, Flg/Frg 0, TTL 3c, Prtl 6
Cksum f68e, Src a4984d80, Dst a4984d32
TCP from 164.152.77.128.22 to 164.152.77.50.6991
seq 1335114362, ack 3417069804, window 65535, 1460 data bytes, flags Push A
+ck.
X/Off 05, Flags 18, Cksum 8d33, Urg-> 0000
offset 0 . . . 4 . . . 8 . . . C . . . 0...4... 8...C...
0 22 cd 33 93 25 7b 85 39 7 c4 3b 7e c9 a9 d5 d9 "M3>%{>9 <D;~I)UY
10 63 25 a7 80 6 d7 4f c9 e7 7a 91 1e 4b e7 b7 a5 c%'><WOI gz><Kg7%
20 4f 4c bf 1d 2a 3d 72 53 99 41 b8 c4 26 24 31 4d OL?<*=rS >A8D&$1M
. . .
590 98 bc af 74 d1 71 88 3f 3d 90 22 d3 91 86 92 4e ></tQq>? =>"S>>>N
5a0 da cc d8 7 18 e7 9e 55 c8 f1 af d3 30 0 35 4 ZLX<<g>U Hq/S0 5<
5b0 ac e8 f0 82 ,hp>
13:52:04.692 Rcvd Ether Dst 00:00:a8:43:52:22 Src 00:23:54:52:18:6e Type 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 28, ID 9324, Flg/Frg 4000, TTL 80, Prtl 6
Cksum 83c8, Src a4984d32, Dst a4984d80
TCP from 164.152.77.50.6991 to 164.152.77.128.22
seq 3417069804, ack 1335120266, window 16384, 0 data bytes, flags Ack.
X/Off 05, Flags 10, Cksum aad4, Urg-> 0000
No tcp data.
13:52:04.692 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 5dc, ID 9eab, Flg/Frg 0, TTL 3c, Prtl 6
Cksum f68d, Src a4984d80, Dst a4984d32
TCP from 164.152.77.128.22 to 164.152.77.50.6991
seq 1335120266, ack 3417069804, window 65535, 1460 data bytes, flags Ack.
X/Off 05, Flags 10, Cksum 2626, Urg-> 0000
offset 0 . . . 4 . . . 8 . . . C . . . 0...4... 8...C...
0 a0 95 bb 79 99 93 c9 52 ac 11 69 fd d5 a9 39 b8 >;y>>IR ,<i}U)98
10 fd 4 2e ec 3e eb 87 9d 3f 96 a9 91 2e b2 c8 91 }<.l>k>> ?>)>.2H>
20 6a b3 7e 9f cc 79 6f e2 9f 5 c6 a0 e4 95 57 9c j3~>Lyob ><F d>W>
. . .
590 88 d8 2e b6 54 c1 25 95 c4 38 d9 0 55 36 32 58 >X.6TA%> D8Y U62X
5a0 2d ba 81 2c e5 51 8a 3b ef cd 98 29 a1 c2 82 24 -:>,eQ>; oM>)!B>$
5b0 90 33 6e e8 >3nh
13:52:04.694 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 3a4, ID 9eac, Flg/Frg 0, TTL 3c, Prtl 6
Cksum f8c4, Src a4984d80, Dst a4984d32
TCP from 164.152.77.128.22 to 164.152.77.50.6991
seq 1335121726, ack 3417069804, window 65535, 892 data bytes, flags Push Ac
+k.
X/Off 05, Flags 18, Cksum d4c2, Urg-> 0000
offset 0 . . . 4 . . . 8 . . . C . . . 0...4... 8...C...
0 23 2a 5a 1a e3 34 e7 b4 62 d7 ee 55 7c 38 f7 a #*Z<c4g4 bWnU|8w<
10 cb b6 95 4 6 d8 b8 e 7d 88 68 a7 24 7a ed bd K6><<X8< }>h'$zm=
20 57 ce 14 43 6c 17 56 5a 25 7d 9b f5 88 d9 97 29 WN<Cl<VZ %}>u>Y>)
. . .
350 8 a3 86 6 24 bc cc b9 d6 3f af ab f bd 38 ca <#><$<L9 V?/+<=8J
360 da b5 6 8a bf 2b 49 90 a2 d4 27 f5 79 a1 9 1a Z5<>?+I> "T'uy!<<
370 5c 87 6b ae f0 d2 e8 45 14 b3 12 b5 >k.pRhE <3<5
13:52:04.695 Rcvd Ether Dst 00:00:a8:43:52:22 Src 00:23:54:52:18:6e Type 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 58, ID 9325, Flg/Frg 4000, TTL 80, Prtl 6
Cksum 8397, Src a4984d32, Dst a4984d80
TCP from 164.152.77.50.6991 to 164.152.77.128.22
seq 3417069804, ack 1335120266, window 16384, 48 data bytes, flags Push Ack
+.
X/Off 05, Flags 18, Cksum dde1, Urg-> 0000
offset 0 . . . 4 . . . 8 . . . C . . . 0...4... 8...C...
0 84 2c 64 69 88 5d c5 b2 bc 6c ca 4e af 15 be 2e >,di>]E2 <lJN/<>.
10 3f 87 93 79 a0 b7 5d d5 3c 35 7f 2d db 7e be 44 ?>>y 7]U <5<-[~>D
20 a8 24 6d 96 6f f0 79 c1 d6 9c c3 be 64 4b 7d 4c ($m>opyA V>C>dK}L
|
Es gibt mehrere Möglichkeiten, die Anwendungsdaten aus dem Trace zu entfernen. Sie können den Trace manuell bearbeiten; für kurze Traces mag das möglich sein, aber für längere Traces ist es nicht durchführbar. Ich habe bereits zwei Perl-Skripte veröffentlicht, die verwendet werden können. Das erste pm21line.pl ist dafür gedacht, alle Header in eine Zeile zu packen und die Anwendungsdaten herauszunehmen. Das Skript verwendet IO-Indication, muss also unter der Bash-Umgebung ausgeführt werden.
bash
bash-2.05$ perl pm21line.pl < full_trace.out > 1line_trace.out
bash-2.05$ exit
exit
ready 17:21:00
d 1line_trace.out%phx_vos#m16_mas>SysAdmin>Noah_Davids>1line_trace.out 10-10-1
+0 17:21:08 mst
13:52:04.672 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Type 0800
+(IP) IP Ver/HL 45, ToS 0, Len 5dc, ID 9eaa, Flg/Frg 0, TTL 3c, Prtl 6
+TCP from 164.152.77.128.22 to 164.152.77.50.6991 seq 1335114362, ack 34170
+69804, window 65535, 1460 data bytes, flags Push Ack.
13:52:04.692 Rcvd Ether Dst 00:00:a8:43:52:22 Src 00:23:54:52:18:6e Type 0800
+(IP) IP Ver/HL 45, ToS 0, Len 28, ID 9324, Flg/Frg 4000, TTL 80, Prtl 6
+TCP from 164.152.77.50.6991 to 164.152.77.128.22 seq 3417069804, ack 13351
+20266, window 16384, 0 data bytes, flags Ack.
13:52:04.692 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Type 0800
+(IP) IP Ver/HL 45, ToS 0, Len 5dc, ID 9eab, Flg/Frg 0, TTL 3c, Prtl 6
+TCP from 164.152.77.128.22 to 164.152.77.50.6991 seq 1335120266, ack 34170
+69804, window 65535, 1460 data bytes, flags Ack.
13:52:04.694 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Type 0800
+(IP) IP Ver/HL 45, ToS 0, Len 3a4, ID 9eac, Flg/Frg 0, TTL 3c, Prtl 6
+TCP from 164.152.77.128.22 to 164.152.77.50.6991 seq 1335121726, ack 34170
+69804, window 65535, 892 data bytes, flags Push Ack.
13:52:04.695 Rcvd Ether Dst 00:00:a8:43:52:22 Src 00:23:54:52:18:6e Type 0800
+(IP) IP Ver/HL 45, ToS 0, Len 58, ID 9325, Flg/Frg 4000, TTL 80, Prtl 6
+TCP from 164.152.77.50.6991 to 164.152.77.128.22 seq 3417069804, ack 13351
+20266, window 16384, 48 data bytes, flags Push Ack.
|
Das Einzeilenformat ist nützlich, wenn die Aufzeichnung Pakete von mehreren Verbindungen enthält und Sie nur an einer Teilmenge dieser Verbindungen interessiert sind. Nachdem Sie das Einzeilenformat erstellt haben, können Sie ganz einfach nach den eindeutigen Merkmalen der Verbindungen filtern, an denen Sie interessiert sind.
Das zweite Skript match.pl zeigt eine Datei an und ermöglicht es Ihnen, auf mehrere Zeichenfolgen zu passen. Zum Beispiel
perl match.pl -file full_trace.out -match Ether -match IP -match Cksum -match TC
+P -match seq -dots
****************************** full_trace.out ******************************
. . .
13:52:04.672 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 5dc, ID 9eaa, Flg/Frg 0, TTL 3c, Prtl 6
Cksum f68e, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 nach 164.152.77.50.6991
seq 1335114362, ack 3417069804, window 65535, 1460 Datenbytes, Flags Push A
+ck.
X/Off 05, Merker 18, Cksum 8d33, Urg-> 0000
. . .
13:52:04.692 Rcvd Ether Dst 00:00:a8:43:52:22 Src 00:23:54:52:18:6e Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 28, ID 9324, Flg/Frg 4000, TTL 80, Prtl 6
Cksum 83c8, Src a4984d32, Dst a4984d80
TCP von 164.152.77.50.6991 nach 164.152.77.128.22
seq 3417069804, ack 1335120266, window 16384, 0 Datenbytes, Flags Ack.
X/Off 05, Flags 10, Cksum aad4, Urg-> 0000
. . .
13:52:04.692 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 5dc, ID 9eab, Flg/Frg 0, TTL 3c, Prtl 6
Cksum f68d, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 nach 164.152.77.50.6991
seq 1335120266, ack 3417069804, window 65535, 1460 Datenbytes, Flags Ack.
X/Off 05, Flags 10, Cksum 2626, Urg-> 0000
. . .
13:52:04.694 Xmit Ether Dst 00:23:54:52:18:6e Src 00:00:a8:43:52:22 Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 3a4, ID 9eac, Flg/Frg 0, TTL 3c, Prtl 6
Cksum f8c4, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 nach 164.152.77.50.6991
seq 1335121726, ack 3417069804, window 65535, 892 Datenbytes, Flags Push Ac
+k.
X/Off 05, Merker 18, Cksum d4c2, Urg-> 0000
. . .
13:52:04.695 Rcvd Ether Dst 00:00:a8:43:52:22 Src 00:23:54:52:18:6e Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 58, ID 9325, Flg/Frg 4000, TTL 80, Prtl 6
Cksum 8397, Src a4984d32, Dst a4984d80
TCP von 164.152.77.50.6991 nach 164.152.77.128.22
seq 3417069804, ack 1335120266, window 16384, 48 Datenbytes, Flags Push Ack
+.
X/Off 05, Merker 18, Cksum dde1, Urg-> 0000
. . .
|
Manchmal sind die Daten nicht das einzige, was geheim gehalten werden sollte. Die anderen identifizierenden Teile des Trace sind die IP-Adressen und Portnummern. Wenn Sie Ihre internen IP-Adressen verbergen möchten, müssen Sie die Änderungen manuell mit der globalen Suchen-und-Ersetzen-Funktion in Ihrem bevorzugten Editor vornehmen. Die IP-Adressen erscheinen jedoch an vier Stellen in jedem Paket. Die ersten beiden sind im hex Format und die zweiten beiden sind in punktiert dezimal Notation, oder möglicherweise als Name, wenn Sie nicht das Argument -numerisch verwendet haben (ich empfehle, immer -numerisch zu verwenden, es geht schneller, da keine Namensauflösung stattfindet, und es macht die Netzwerkbeziehungen deutlich). Die Port Nummer oder Name erscheint nur an 2 Stellen.
13:52:04.695 Rcvd Ether Dst 00:00:a8:43:52:22 Src 00:23:54:52:18:6e Typ 0800
+(IP)
IP Ver/HL 45, ToS 0, Len 58, ID 9325, Flg/Frg 4000, TTL 80, Prtl 6
Cksum 8397, Src a4984d32, Dst a4984d80
TCP von 164.152.77.50.6991 nach 164.152.77.128.22
seq 3417069804, ack 1335120266, window 16384, 48 Datenbytes, Flags Push Ack
+.
X/Off 05, Merker 18, Cksum dde1, Urg-> 0000
|
Denken Sie daran, dass das Ändern der IP-Adressen nicht ganz so einfach ist wie das Auswählen einer beliebigen Zahl, sondern dass Sie die Beziehungen zwischen den Adressen beibehalten müssen. Zwei Adressen, die sich vor der Änderung im selben Subnetz oder Netzwerk befinden, müssen sich nach der Änderung im selben Subnetz oder Netzwerk befinden, und zwei Adressen, die sich vor der Änderung in verschiedenen Subnetzen oder Netzwerken befinden, müssen sich nach der Änderung in verschiedenen Subnetzen oder Netzwerken befinden. Das Ändern der Beziehung kann tiefgreifende Auswirkungen auf die Interpretation der Kurve haben.