본문 바로가기

VMware Cloud Foundation/NSX-T

TCPDUMP로 서버 측 header 값을 바로 확인

간혹 네트워크 문제, 로드 밸런서 문제 등으로 테스트를 하다 보면, 서버 측에서의 들어오고 나가는 header 값을 확인할 필요가 있을 경우가 있다.

 

Windows에서는 UI로 확인을 하니 쉽게 확인을 하였으나, tcpdump를 linux에서 실행 시 너무 많은 정보가 표기되거나, 패킷 흐름에 대해서만 표기가 되거나 하기 때문에 불필요한 정보를 제외하고 header 값만을 보고 싶은 경우가 있을 수 있습니다.

 

아래와 같은 tcpdump 명령문을 통해서 우리는 header 값을 확인할 수 있습니다.

 

# header 값 확인

tcpdump -i ens192 -vvvs 1024 -l -A | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'

# device 장치명 ens192는 사용하는 장치명으로 변경합니다.

 

tcpdump 실행으로 표시되는 값

 

유용한 tcpdump 명령문

tcpdump -nnvvS src 10.5.2.3 and dst port 3389

tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

# 특정 포트 제외
tcpdump -vv src mars and not dst port 22

# TCP RST flags
tcpdump 'tcp[13] & 4!=0'
tcpdump 'tcp[tcpflags] == tcp-rst'

# TCP SYN flags
tcpdump 'tcp[13] & 2!=0'
tcpdump 'tcp[tcpflags] == tcp-syn'

# SYN and ACK flags
tcpdump 'tcp[13]=18'

# ACK flags
tcpdump 'tcp[13] & 16!=0'
tcpdump 'tcp[tcpflags] == tcp-ack'

tcpdump 'tcp[13] & 1!=0'
tcpdump 'tcp[tcpflags] == tcp-fin'

tcpdump 'tcp[13] & 8!=0'
tcpdump 'tcp[tcpflags] == tcp-push'

tcpdump -vvAls0 | grep 'Set-Cookie|Host:|Cookie:'

# SSH session
tcpdump 'tcp[(tcp[12]>>2):4] = 0x5353482D'

# DNS
tcpdump -vvAs0 port 53