리눅스/Network or Firewall

네트워크 연결/방화벽 차단 여부 확인을 위한 tcpdump사용하기

G. Hong 2021. 2. 1. 14:28
728x90
반응형

tcpdump

네트워크 연결 확인을 위한 오래된 방법으로 ping 커맨드가 있습니다. 최근에는 ping이 기본적으로 차단된 환경도 많고, 방화벽 장비/설정이나 네트워크의 구성이 복잡해지면서 ping 커맨드 만으로는 네트워크 연결 여부를 확인 하기가 힘들어졌습니다.

 

저도 재부팅이나 장애처리 중에 방화벽 설정이 바뀌어서 네트워크가 차단된 경험도 있고, 네트워크 팀에서는 문제가 없다고 하지만 정상적인 통신이 이루어 지지 않는 경우도 자주 있었습니다.

 

ping 뿐만 아니라 nc, traceroute 등의 명령어를 사용하여서도 연결여부를 확인 할 수 있지만, 예상했던 결과가 나오지 않게 되면 원인분석은 더욱 미궁으로 빠져들게 됩니다.

 

이러한 경우 제가 자주 사용하는 방법은 tcpdump 명령어 입니다. 패킷의 통신을 그대로 읽어들이는 커맨드 입니다.

방화벽이 문제라면 request 만 존재하고 응답이 없는 식으로 나올 테고, 물리적인 네트워크 연결이나 스위치 설정 등의 문제라면 아무런 내용이 없을 수 도 있습니다.

 

예를 들어서, 10.130.xx.yy 와의 통신을 테스트 하기 위해서는 host 옵션을 통해서 아래와 같이 확인 할 수 있습니다.

# tcpdump host 10.130.xx.yy

 

정상적인 tcpdump의 결과는 아래 처럼 요청과 응답이 존재하게 됩니다.

04:43:49.756427 IP 10.130.xx.xx.55247 > 10.130.xx.yy.amqps: Flags [S], seq 1704607445, win 29200, options [mss 1460,sackOK,TS val 355167527 ecr 0,nop,wscale 7], length 0
04:43:49.756764 IP 10.130.xx.yy.amqps > 10.130.xx.xx.55247: Flags [R.], seq 0, ack 1704607446, win 0, length 0
04:43:49.874553 IP 10.130.xx.yy.55583 > 10.130.xx.xx.ssh: Flags [.], ack 487424, win 1, length 0
04:43:50.101721 IP 10.130.xx.xx.ssh > 10.130.xx.yy.55583: Flags [P.], seq 487424:487680, ack 321, win 1432, length 256
04:43:50.329703 IP 10.130.xx.xx.ssh > 10.130.xx.yy.55583: Flags [P.], seq 487424:487680, ack 321, win 1432, length 256
04:43:50.329980 IP 10.130.xx.yy.55583 > 10.130.xx.xx.ssh: Flags [.], ack 487680, win 0, options [nop,nop,sack 1 {487424:487680}], length 0

 

반면, 방화벽 설정에 의해 차단된 경우에는 응답이 차단되게 되어서 정상적인 통신이 이루어 지지 않게 됩니다.

04:46:47.942089 IP 10.130.xx.xx.41602 > 10.130.xx.yy.56004: Flags [S], seq 1891701536, win 29200, options [mss 1460,sackOK,TS val 2287936266 ecr 0,nop,wscale 7], length 0
04:46:47.982104 IP 10.130.xx.xx.35279 > 10.130.xx.yy.5671: Flags [S], seq 3107709517, win 29200, options [mss 1460,sackOK,TS val 2287936306 ecr 0,nop,wscale 7], length 0
04:46:48.894344 IP 10.130.xx.xx.58717 > 10.130.xx.yy.5671: Flags [S], seq 610418755, win 29200, options [mss 1460,sackOK,TS val 2287937218 ecr 0,nop,wscale 7], length 0
04:46:49.792694 IP 10.130.xx.yy.49932 > 10.130.xx.xx.4506: Flags [S], seq 142633569, win 29200, options [mss 1460,sackOK,TS val 168378372 ecr 0,nop,wscale 7], length 0

 

그리고 중간의 특정 노드 장비에서 차단된 경우에는 아무런 출력값이 나타나지 않는 경우도 있습니다.

 

 

아래 traceroute나 echo를 통해서 특정 포트가 오픈되었는지 확인하는 방법에 대한 글도 참고 바랍니다.

 

리눅스(Linux): 특정 포트로 연결확인 (ping) 수행하기

서버들을 관리하다 보면 네트워크 연결이 잘 되었는지 확인하기 위해서 많이 사용하는 커맨드가 ping입니다. 물론 몇몇 보안설정이 적용된 환경에서는 ping이 되지 않기도 하지만 여전히 가장 간

itknowledge.tistory.com

 

728x90
반응형