VMware Cloud Foundation/NSX-T

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

vmguru 2023. 1. 14. 23:05

간혹 네트워크 문제, 로드 밸런서 문제 등으로 테스트를 하다 보면, 서버 측에서의 들어오고 나가는 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