티스토리 뷰

728x90
반응형

포스팅은 OS별 TCP Trace Dump 생성 방법에 대해 알아보겠습니다.


tcpdump는 명령 줄에서 실행하는 일반적인 패킷 가로채기 소프트웨어입니다. 사용자가 TCP/IP뿐 아니라, 컴퓨터에 부착된 네트워크를 통해 송수신되는 기타 패킷을 가로채고 표시할 수 있게 도와 줍니다. BSD 허가서를 통해 배포되는 tcpdump는 오픈소스 소프트웨어입니다.


먼저 TCP Trace Dump가 무엇인지 알아 보겠습니다.

TCP Trace Dump는 일반적으로 다음과 같은 상황에서 많이 사용합니다.

네트워크 지연이 갑자기 발생하는 경우에 사용합니다.

WEB / WAS / L4등 Client HTTP Request를 처리하는 주요 구성요소들의 지연이 발생하는 경우 사용합니다. 해당 요소들은 각자의 지연방법을 찾아갈수 있는 트러블슈팅 방법과 모니터링 방법을 제시하지만, 해당 문제로도 찾을 수 없을 경우에는 TCP Trace Dump를 사용하여 실제 주고 받는 데이터를 분석해야 합니다.

대용량의 Post Data가 들어올 경우 분석을 위한 방법으로 사용합니다. 특히 잘알려진 DDOS 등 공격에 대한 패턴 분석을 위해서도 사용되고 있습니다.

물론 위와 같이 문제가 발생 했을 때 분석용도로만 사용하는 것은 아닙니다.

단순히 네트워크 사용량을 알아보기 위해서 또는 어떤 Page가 오래 걸리고 가장 많이 호출되었는지 등 단순히 통계 데이터를 뽑기위해서도 사용됩니다. 다만 TCP Trace Dump 분석기가 잘되어 있다고 해도 로그 수집자체가 대용량이고 시각적으로 잘 보여지는 수준이 아니므로 APM을 사용하지 않는 사이트의 경우에만 활용할 수 있는 방법입니다.


그럼 OS별로 TCP Trace Dump 기록하는 법을 알아보겠습니다.

TCP Trace Dump는 각각 생성하는 명령어와 생성한 파일을 확인하는 명령어로 구성되어 있습니다.


먼저 HP-UX의 TCP Trace Dump 관련 명령어부터 확인해 보도록 하겠습니다.

Dump 생성 명령어인 nettl를 사용합니다.

생성방법은 nettl -tn pduin pduout -e ns_ls_ip -f dump_파일명 형식으로 생성하면 실제로 파일은 파일명.TRC00 형식으로 생성됩니다.

TCP 덤프기록을 중지하기 위해서는 nettl -traceoff -e all 형석으로 입력하면 TCP 기록이 중지됩니다.


TCP Trace Dump는 직접 떠보면 알겠지만, 어마어마한 양의 Data가 기록됩니다. 이를 확인하는 것은 정말 쉬운일이 아닙니다. 이를 해소하기 위해 Filter라는 옵션을 제공합니다. 자신이 원하는 Data만 수집할 수 있는 중요한 기능입니다.

임의의 filter파일을 만들어 옵션을 지정합니다.

TCP Trace Dump에서는 이를 Formatting한다고 표현합니다.

수집한 Data를 기준으로 Filter를 반영하여 확인하는 명령어는 netfmt를 사용합니다.

netfmt -Nnlc $PWD/filterfile(필터파일) -f $PWD/aaa.TRC000 > trace.txt(결과파일임의지정) 형식으로 생성하고 trace.txt를 열어보면 tcpdump를 확인할 수 있습니다. 몇몇 자주 사용되는 Filter Format에 대해 살펴보고 넘어가도록 하겠습니다.

먼저 특정 Port만 수집 조건으로 넣을 수 있는 filter tcp_sport 23 입니다. 23 Port를 Source Port로 사용하는 경우 수집하겠다는 Filter입니다.
다음으로 특정 IP만 수집 조건으로 넣을 수 있는 filter ip_saddr 192.168.1.1 입니다. 192.168.1.1 IP를 Source IP로 사용하는 경우 수집하겠다는 Filter입니다. 반대로 tcp_sport, ip_saddr 대신 tcp_dport, ip_daddr을 사용할 경우 source가 아닌 Destination으로 변경할 수 있습니다.


두번째로 SunOS의 TCP Trace Dump 관련 명령어에 대해 알아보겠습니다.

Dump 생성 명령어인 snoop을 사용합니다.

생성방법은 snoop -d bge0(netstat -i 확인 결과입니다) -o snoop.trc 형식으로 생성합니다.

TCP 덤프기록을 중지하기 위해서는 snoop process를 kill -9로 죽이거나, Ctrl + C로 중지할 수 있습니다.


생성 한 TCP Trace Dump의 패킷 내용을 확인하기 위해서는 -i 옵션을 사용하여 생성한 snoop.trc 파일을 snoop.txt파일로 생성합니다.
snoop -i snoop.trc -tr -V -v -x 0 > snoop.txt 형식으로 생성하고 snoop.txt를 열어보면 TCPDUMP를 확인할 수 있습니다.

세번째로 AIX의 TCP Trace Dump 관련 명령어에 대해 알아보겠습니다.

Dump 생성 명령어인 startsrc를 사용합니다.

생성방법은 startsrc -s iptrace -a ''-i en0 -s 192.168.1.1 /opt/nrson/tcpdump/iptrace/log1'' 형식으로 생성합니다.
위 명령어는 'en0' 인터페이스를 통해 들어오는 Packet중에 Source IP 192.168.1.1에서 들어오는 Packet을 잡아냅니다.

TCP 덤프기록을 중지하기 위해서는 stopsrc를 사용합니다. stopsrc -s iptrace 형식으로 입력하면 기록이 중지됩니다.


수집한 데이터를 기반으로 패킷 내용을 확인하기 위해서는 ipreport를 사용합니다.

ipreport는 trace file인 log1을 report형식으로 파일에 저장합니다.

ipreport -ns /opt/tmax/tmax/iptrace/log1 >log1_formatted 형식으로 입력 후 log1_formatted 를 열어보면 TCPDUMP를 확인할 수 있습니다.


네번째로 Linux의 TCP Trace Dump 관련 명령어에 대해 알아보겠습니다.

Dump 생성 명령어인 tcpdump를 사용합니다.
생성방법은 tcpdump -i eth1 host 192.168.1.1 and port 80 -w tcpdump.log 형식으로 생성합니다. eth1을 통해 소스나 목적지 포트가 80인 트래픽 내용을 tcpdump.log 파일에 기록한다는 의미입니다.


생성한 패킷 내용을 확인하기 위해서는 -r 옵션을 사용합니다.

tcpdump -r tcpdump.log 형식으로 입력 후 tcpdump.log 파일을 열어보면 Dump Result를 HEX 형태로 보여줍니다. 

 

마지막으로 Windows의 TCP Trace Dump 관련 명령어에 대해 알아보겠습니다.

Windows에서는 기본으로 제공하는 Dump 명령어가 없습니다. 따라서 tcpdump와 같은 packet 분석용 command line tool이 필요하면 WinDump를 사용합니다.

사용방법은 tcpdump와 동일합니다.

먼저 windump 실행시 windump –D 를 실행해서 컴퓨터에 있는 네트워크 디바이스를 확인합니다.

packet을 잡을 때는 확인 된 device number를 다음과 같이 -i <device number> 옵션으로 추가해서 사용합니다.


TCP Trace Dump는 언뜻 보면 너무 어려워보이는 글자들로 나열되어 있어 분석을 진행하기도 전에 포기하는 경우가 종종 있습니다. 하지만 DUMP는 DUMP 분석기가 분석해 주는 것이고, 엔지니어는 분석을 통해 어떠한 결과를 도출해 나가야 할지만 고민하면 됩니다. 물론 결론 도출은 경험과 다양한 케이스를 직접 만들어보고 다뤄보는 수밖에 없습니다. 추후 시간이 되면 다양한 분석 케이스들을 소개하는 포스팅을 진행하도록 하겠습니다.

그럼 다시 뵙겠습니다.

고맙습니다.

728x90
반응형

'⑥ 네트워크, 운영체제 > ⓞ OS' 카테고리의 다른 글

[CPU 과점유] SunOS 편  (0) 2018.07.19
[CPU 과점유] LINUX 편  (0) 2018.07.19
[ETC] OS Hostname Resolution  (0) 2018.06.08
[ETC] RAID Level  (0) 2018.03.25
[ETC] OS Level - Thread 별 CPU 점유 정보  (0) 2018.03.25