Zum Hauptinhalt springen

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.

© 2024 Stratus Technologies.