본문 바로가기

네트워크 통신 문제를 해결하는 유일한 방법, 또는 최소한 가장 빠른 방법은 통신 트레이스를 수집하여 전문가에게 분석을 의뢰하는 것입니다. 해당 전문가가 귀사 소속이 아닐 경우, 추적 기록에 애플리케이션 데이터가 포함될 수 있어 보안 문제가 발생할 수 있습니다. 그러나 일반적으로 중요한 것은 이더넷, IP, TCP, UDP 또는 ICMP 프로토콜 헤더이지 애플리케이션 데이터가 아닙니다. 이러한 경우에는 데이터를 아예 수집하지 않거나, 수집 후 데이터를 제거할 수 있습니다.

패킷 모니터를 사용하면 다음 명령어로 모든 헤더를 수집할 수 있지만 데이터는 수집할 수 없습니다.

packet_monitor -interface #인터페이스 -numeric -time_stamp -verbose -pkt_hdr     

INTERFACE는 "ifconfig -all" 명령어로 표시되는 IP 인터페이스의 장치 이름입니다. 추적 결과는 다음과 같습니다.

dir                                                 icmp type
+        tcp
hh:mm:ss.ttt dir   len proto source             destination         src port  ds
+t port  type
11:40:21.234 전송 이더 목적지 00:23:54:52:18:6e  발신지 00:00:a8:43:52:22 유형 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 from 164.152.77.128.22 to 164.152.77.50.6991
seq  1332611210, ack 3416994988, window  8192, 80 data bytes, flags Push Ack
+.
X/Off 05, Flags 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 Type 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 from 164.152.77.128.22 to 164.152.77.50.6991
seq  1332611290, ack 3416994988, window  8192, 128 data bytes, flags Push Ac
+k.
X/Off 05, Flags 18, Cksum ce9f,  Urg-> 0000

11:40:21.236 수신 이더네트 목적지 00:00:a8:43:52:22  발신지 00:23:54:52:18:6e 유형 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 from 164.152.77.50.6991 to 164.152.77.128.22
seq  3416994988, ack 1332611418, window 16176, 0 data bytes, 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 Type 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 from 164.152.77.128.22 to 164.152.77.50.6991
seq  1332611418, ack 3416994988, window  8192, 128 data bytes, flags Push Ac
+k.
X/Off 05, Flags 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 Type 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 from 164.152.77.128.22 to 164.152.77.50.6991
seq  1332611546, ack 3416994988, window  8192, 112 data bytes, flags Push Ac
+k.
X/Off 05, Flags 18, Cksum 2b4e,  Urg-> 0000

이 접근법의 문제점은 때때로 문제가 애플리케이션 관련으로 판명되어 애플리케이션 데이터가 필요하다는 점입니다. 처음부터 전체 추적을 수집하지 않았다면 문제를 재현하거나 다시 발생할 때까지 기다려야 합니다. 분석을 위해 처음 트레이스를 보낼 때 "-hex_dump" 및 "-length 1500" 인수를 추가하여 전체 트레이스를 수집한 후, 복사본에서 애플리케이션 데이터를 추출하는 것이 훨씬 쉽습니다. 다음 그림은 명령어와 트레이스를 보여줍니다. 다만 공간 절약을 위해 대부분의 애플리케이션 데이터를 제거하여 편집했습니다.

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

추적 기록에서 애플리케이션 데이터를 제거하는 방법은 여러 가지가 있습니다. 추적 기록을 수동으로 편집할 수 있지만, 짧은 추적 기록의 경우 가능할 수 있으나 긴 추적 기록의 경우 불가능합니다. 저는 이전에 사용할 수 있는 두 개의 Perl 스크립트를 공개한 바 있습니다. 첫 번째인 pm21line.pl은 모든 헤더를 한 줄에 배치하고 애플리케이션 데이터를 제거하도록 설계되었습니다. 이 스크립트는 IO 표시를 사용하므로 bash 환경에서 실행해야 합니다.

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.

트레이스에 여러 연결의 패킷이 포함되어 있고 특정 연결의 하위 집합만 관심 대상일 때 단일 행 형식이 유용합니다. 단일 행 형식을 생성한 후 관심 있는 연결의 고유한 특징을 기준으로 쉽게 필터링할 수 있습니다.

두 번째 스크립트 match.pl은 파일을 표시하고 여러 문자열에 대한 일치를 허용합니다. 예를 들어

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 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.
 . .
13:52:04.692 수신 이더네트 목적지 00:00:a8:43:52:22  발신지 00:23:54:52:18:6e 유형 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.
 . .
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.
 . .
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.
 . .
13:52:04.695 수신 이더네트 목적지 00:00:a8:43:52:22  발신지 00:23:54:52:18:6e 유형 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.
 . .

때로는 데이터만이 비밀로 유지되어야 할 유일한 요소가 아닙니다. 추적 기록의 다른 식별 요소로는 IP 주소와 포트 번호가 있습니다. 내부 IP 주소를 숨기고 싶다면 선호하는 편집기의 전체 검색 및 교체 기능을 사용하여 수동으로 변경해야 합니다. 그러나 IP 주소는 각 패킷에서 네 군데에 나타납니다. 첫 번째 두 군데는 16진수 형식이고, 나머지 두 개는 점으로 구분된 십진수 표기법으로, 또는 -numeric 인수를 사용하지 않았다면 이름으로 표시될 수 있습니다(이름 해결이 발생하지 않아 더 빠르고 네트워크 관계를 명확히 보여주므로 항상 -numeric 사용을 권장합니다). 포트 번호 또는 이름은 단 두 군데에만 나타납니다.

13:52:04.695 수신 이더네트 목적지 00:00:a8:43:52:22  발신지 00:23:54:52:18:6e 유형 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 에서 164.152.77.128.22
순번 3417069804, 확인 1335120266, 창 16384, 48 데이터 바이트, 플래그 Push Ack
+.
X/Off 05, Flags 18, Cksum dde1,  Urg-> 0000

IP 주소를 변경하는 것은 임의의 숫자를 선택하는 것만큼 간단하지 않다는 점을 명심하십시오. 주소 간의 관계를 유지해야 합니다. 변경 전 동일한 서브넷 또는 네트워크에 속한 두 주소는 변경 후에도 동일한 서브넷 또는 네트워크에 속해야 하며, 마찬가지로 변경 전 서로 다른 서브넷 또는 네트워크에 속한 두 주소는 변경 후에도 서로 다른 서브넷 또는 네트워크에 속해야 합니다. 이러한 관계의 변경은 추적 결과 해석에 중대한 영향을 미칠 수 있습니다.

© 2024 Stratus Technologies.