리눅스 운영체제로 인하여 서버 시스템은 많은 변화를 겪여왔습니다.

유닉스나 마이크로소프트에서 리눅스로 전환을 꾀하였고, U2L 등의 여러 솔루션 업체들 또한 성황기를 맞았습니다.


리눅스 환경을 쉽게 접할 수 있게 되어 서버 엔지니어 또한 많이 배출되었고 이에 따라 보편화된 운영체제를 이용하여 양질의 서비스를 제공해 주게 되었습니다.

GNU 선언문을 기반으로 OPEN SOURCE 를 이용하여 보다 많은 곳에서 무료로 OS를 이용할 수 있게 되었고 개발자들 또한 동일한 조건에서 마음 편히 개발에만 집중할 수 있는 환경을 제공해 주었습니다.


리눅스 애찬자로서 여러 혜택을을 무료로 제공받을 수 있다는 점에 대해 리눅스 개발자들에게 감사의 뜻을 전합니다.


개인적으로 네트워크 엔지니어 일을 계속 해왔지만 네트워크만으로 밥먹고 살 수 없는 시대가 도래하였고, 보안을 기반으로 서버는 물론 가상화, 자동화 등에 발맞추어 보다 많은 정보와 신기술을 습득해야만 하는 IT 업계에서는 한가지 기술만을 가지고 명함을 내밀 수 없습니다.

이 포스팅으로 유입된 분들은 서버 엔지니어가 아니라 네트워크 엔지니어이거나 솔루션 엔지니어일 가능성이 높기에 미래를 한번 생각해 보자는 뜻으로 서론을 시작하였습니다.


거두절미하고,

리눅스에서 패킷 덤프를 떠서 디버깅할 수 있는 tcpdump 명령 대해 간단하게 설명해 드리도록 하겠습니다.

tcpdump는 평소에 볼 필요는 없지만, 장애 처리나 패킷의 분석을 위해 사용되어 집니다.


네트워크 엔지니어에게는 스니퍼나 이더리얼 등의 패킷 캡쳐 프로그램을 이용하셨을 것입니다.

동일하게 TCP나 UDP, IP에 대한 패킷을 캡쳐하는 방식입니다.


tcpdump


tcpdump가 설치되지 않았다면 apt-get, dpkg, sudo, yum, rpm 등으로 설치해 주시면 되겠으며, 아래에 주로 사용되어지는 tcpdump 명령 옵션들에 대해 간단하게 설명해 드리도록 하겠습니다.


이더넷 인터페이스 전체 패킷을 캡쳐하는 방법으로 가장 흔하게 사용하는 것이 -i eth0 옵션으로 eth0은 서버나 PC의 네트워크 인터페이스 이름이 되겠습니다.


tcpdump -i eth0

grep 을 이용하여 보고자 하는 ip 나 서비스 포트를 지정하시면 되겠습니다.


ifconfig으로 현재 사용 중인 네트워크 인터페이스 이름을 확인하시고 진행하시면 되겠으며, tcpdump 옵션 중 -D 를 이용하여 현재 사용 가능한 네트워크 인터페이스를 확인할 수도 있습니다.

tcpdump -D


물론 src 와 dst 옵션을 이용하여 특정 소스 또는 데스티네이션 ip에 대한 패킷만 덤프 뜰 수도 있습니다.

tcpdump -i eth0 src 10.10.10.100

tcpdump -i eth0 dst 173.100.100.100


패킷 분석 시 특정 서비스에 대한 디버깅이 필요한 경우에는 아래와 같이 tcp port 옵션을 사용합니다.

tcpdump -i eth0 tcp port 3389

tcpdump -i eth0 tcp port 443


and로 함께 응용하여 보면,

tcpdump -i eth1 src 10.10.10.100 and tcp port 443

source ip가 10.10.10.100인 ip가 tcp 443 포트로 통신하는 패킷을 보여주게 됩니다.


and(&&), or(||), not(!), 그룹(' ') 등의 조합으로 교집합, 합집합, 여집합 등 원하는 패킷 결과물을 얻을 수 있습니다.


캡쳐된 패킷들을 파일로 저장할 수 있는데요, -w 옵션을 주시면 됩니다.

▶ tcpdump -w eth0.cap -i eth0


반대로 저장된 덤프 파일을 읽어주는 옵션은 -r 이 되겠습니다.

▶ tcpdump -r eth0.cap


패킷 분석을 위해 DNS 네임 룩업 없이 캡쳐할 수 있는데요, 그때는 -n 옵션이 추가됩니다.

▶ tcpdump -n -i eth0


뭐 이정도만 알고 계시면 tcpdump를 사용하는데 무리는 없겠으며, 아래는 tcpdump의 모든 옵션과 tcpdump 소스파일, 설치파일 등을 다운로드할 수 있는 tcpdump.org 페이지 링크이니 참고하시기 바랍니다.


tcpdump.org 바로 가기


감사합니다.