패킷 스니핑은 네트워크 트래픽의 상세한 정보를 분석하는 고급 네트워크 분석 기술입니다. 이는 네트워크 관리자가 반드시 숙지해야 할 주요 문제 해결 기술 중 하나입니다. 네트워크 트래픽 분석은 결코 간단한 작업이 아닙니다. 신뢰할 수 없는 네트워크 환경에서 데이터는 단일 연속 스트림으로 전송되지 않고, 개별적으로 전송되는 여러 조각으로 나뉘어 전송됩니다. 네트워크 트래픽을 분석하려면 이러한 데이터 패킷을 수집하고 의미 있는 정보로 재구성해야 합니다. 이러한 작업은 패킷 스니퍼와 네트워크 분석기를 통해 자동화할 수 있습니다. 이번 글에서는 최고의 패킷 스니퍼 및 네트워크 분석기 7가지에 대해 알아보겠습니다.
먼저 패킷 스니퍼에 대한 기본적인 이해를 다루면서 시작해보겠습니다. 패킷 스니퍼와 네트워크 분석기의 차이점을 명확히 하고, 핵심 주제로 넘어가서 7가지 도구를 소개하고 간략하게 살펴보겠습니다. 여기에는 다양한 운영체제에서 실행되는 GUI 기반 도구와 명령줄 유틸리티가 포함되어 있습니다.
패킷 스니퍼 및 네트워크 분석기
가장 먼저 해야 할 일은 용어를 명확히 하는 것입니다. 이 글에서는 패킷 스니퍼와 네트워크 분석기를 같은 의미로 사용합니다. 어떤 사람들은 이 둘이 다르다고 주장할 수 있으며, 그들의 주장이 맞을 수도 있습니다. 그러나 이 글의 맥락에서는 두 도구를 함께 다룰 것입니다. 이 둘은 작동 방식에서 차이가 있을 수 있지만, 실제로는 동일한 목적을 수행하기 때문입니다.
패킷 스니퍼는 일반적으로 세 가지 주요 기능을 수행합니다. 첫째, 네트워크 인터페이스를 통해 들어오거나 나가는 모든 데이터 패킷을 캡처합니다. 둘째, 필요에 따라 필터를 적용하여 특정 패킷을 제외하고 나머지를 디스크에 저장합니다. 셋째, 캡처된 데이터에 대한 분석을 수행합니다. 패킷 스니퍼의 마지막 기능은 도구마다 가장 큰 차이를 보이는 부분입니다.
데이터 패킷을 실제로 캡처할 때는 대부분의 도구가 외부 모듈을 사용합니다. 가장 일반적인 모듈은 Unix/Linux 시스템에서는 libpcap, Windows에서는 Winpcap입니다. 일반적으로 이러한 모듈은 다른 도구의 설치 프로그램에 의해 함께 설치되므로 사용자가 별도로 설치할 필요는 없습니다.
또 하나 알아두어야 할 중요한 점은 패킷 스니퍼(최고의 패킷 스니퍼라 할지라도)가 모든 것을 자동으로 처리해주지는 않는다는 것입니다. 패킷 스니퍼는 단지 도구일 뿐입니다. 망치가 스스로 못을 박을 수 없는 것처럼, 도구를 어떻게 활용해야 하는지 배우는 것이 중요합니다. 패킷 스니퍼는 트래픽을 보여주지만, 이 정보를 바탕으로 문제를 파악하고 해결하는 것은 사용자의 몫입니다. 패킷 캡처 도구 사용에 대한 책도 있을 정도입니다. 저도 한때 이 주제에 대해 3일간 교육을 받은 적이 있습니다. 여러분을 실망시키려는 것이 아니라, 단지 기대치를 현실적으로 설정해 드리고 싶을 뿐입니다.
패킷 스니퍼 사용 방법
앞서 설명했듯이 패킷 스니퍼는 트래픽을 캡처하고 분석합니다. 특정 문제 해결을 위해 이 도구를 사용한다면, 가장 먼저 캡처한 트래픽이 분석하려는 문제와 관련된 트래픽인지 확인해야 합니다. 예를 들어, 특정 애플리케이션의 속도가 느리다는 불만이 여러 사용자로부터 제기되는 상황을 가정해 보겠습니다. 이때 가장 좋은 방법은 해당 애플리케이션 서버의 네트워크 인터페이스에서 트래픽을 캡처하는 것입니다. 이를 통해 요청이 서버에 정상적으로 도착하지만 서버가 응답을 보내는 데 오랜 시간이 걸리는 것을 확인할 수 있습니다. 이는 서버 자체에 문제가 있음을 나타냅니다.
반대로, 서버가 정상적으로 응답하는 것을 확인했다면, 문제는 클라이언트와 서버 사이의 네트워크 어딘가에 있을 가능성이 큽니다. 이 경우 패킷 스니퍼를 클라이언트와 더 가까운 지점으로 옮겨서 응답 지연이 발생하는지 확인해야 합니다. 만약 그렇지 않다면, 클라이언트에 더 가까운 다른 지점으로 이동하는 식으로 계속 진행하여 지연이 발생하는 위치를 찾아야 합니다. 문제의 정확한 위치를 파악했다면 문제 해결에 한 걸음 더 다가선 것입니다.
이제 특정 지점에서 패킷을 캡처하는 방법에 대해 궁금할 수 있습니다. 이는 네트워크 스위치의 기능 중 하나인 ‘포트 미러링’ 또는 ‘복제’를 통해 매우 간단하게 구현할 수 있습니다. 포트 미러링은 스위치의 특정 포트로 들어오고 나가는 모든 트래픽을 동일한 스위치의 다른 포트로 복제하는 기능입니다. 예를 들어, 서버가 스위치의 포트 15에 연결되어 있고, 스위치의 포트 23을 사용할 수 있다고 가정해 봅시다. 패킷 스니퍼를 포트 23에 연결하고, 스위치를 구성하여 포트 15에서 포트 23으로 모든 트래픽을 복제합니다. 이렇게 하면 포트 23에서 얻는 트래픽은 포트 15를 통과하는 트래픽의 미러 이미지가 됩니다. 이것이 바로 포트 미러링이라고 불리는 이유입니다.
최고의 패킷 스니퍼 및 네트워크 분석기
이제 패킷 스니퍼와 네트워크 분석기에 대해 더 잘 이해했으므로, 이용 가능한 7가지 최고의 도구들을 살펴보겠습니다. 다양한 운영체제에서 실행되는 도구, 명령줄 및 GUI 도구를 혼합하여 선택했습니다. 모든 네트워크 관리자가 Windows 환경에서만 작업하는 것은 아니기 때문입니다.
1. SolarWinds 심층 패킷 검사 및 분석 도구 (무료 평가판)
SolarWinds는 다양한 유용한 무료 도구와 최신 네트워크 관리 소프트웨어로 유명합니다. 그중 하나가 심층 패킷 검사 및 분석 도구입니다. 이 도구는 SolarWinds의 주력 제품인 Network Performance Monitor의 구성 요소로 제공됩니다. 작동 방식은 유사한 목적을 제공하지만, 일반적인 패킷 스니퍼와는 약간 다릅니다.
이 도구의 핵심 기능은 네트워크 지연 시간의 원인을 찾아 해결하고, 영향을 받는 애플리케이션을 식별하며, 속도 저하가 네트워크 또는 애플리케이션 문제인지 확인하는 데 도움을 주는 것입니다. 또한 심층 패킷 검사 기술을 사용하여 1200개 이상의 애플리케이션에 대한 응답 시간을 계산합니다. 또한 네트워크 트래픽을 범주, 비즈니스/소셜, 위험 수준별로 분류하여 필터링하거나 제거해야 할 불필요한 트래픽을 식별하는 데 유용합니다.
SolarWinds 심층 패킷 검사 및 분석 도구는 Network Performance Monitor의 일부로 제공됩니다. NPM이라고도 하는 NPM은 그 자체로 방대한 기능을 제공하는 인상적인 소프트웨어로, 별도의 기사로 다뤄야 할 정도입니다. 기본적으로 SNMP 및 심층 패킷 검사와 같은 고급 기술을 결합하여 네트워크 상태에 대한 최대한 많은 정보를 제공하는 완벽한 네트워크 모니터링 솔루션입니다. 이 도구는 합리적인 가격으로 제공되며, 30일 무료 평가판을 통해 구매 전에 필요에 맞는지 확인할 수 있습니다.
공식 다운로드 링크: https://www.solarwinds.com/topics/deep-packet-inspection
2. TCP 덤프
Tcpdump는 아마도 최초의 패킷 스니퍼일 것입니다. 1987년에 처음 개발된 이후로 지속적으로 유지 관리 및 개선되었지만, 기본적인 사용 방식은 거의 변하지 않았습니다. 대부분의 Unix 계열 운영체제에 기본적으로 설치되어 있으며, 빠르게 패킷 캡처를 수행해야 할 때 사실상 표준으로 사용됩니다. Tcpdump는 실제 패킷 캡처를 위해 libpcap 라이브러리를 사용합니다.
기본적으로 tcpdump는 지정된 인터페이스의 모든 트래픽을 캡처하여 화면에 “덤프”(그래서 이름이 tcpdump입니다)합니다. 덤프된 데이터는 파일로 리디렉션하여 저장하고, 나중에 다양한 분석 도구를 사용하여 분석할 수 있습니다. tcpdump의 강점과 유용성은 다양한 종류의 필터를 적용하고, 출력 결과를 grep(또 다른 일반적인 Unix 명령줄 유틸리티)으로 파이프하여 추가 필터링을 할 수 있다는 점에 있습니다. tcpdump, grep 및 명령 셸에 대한 지식이 있다면, 어떤 디버깅 작업에도 적합한 트래픽을 정확하게 캡처할 수 있습니다.
3. 윈덤
윈덤은 본질적으로 Windows 플랫폼용 tcpdump의 포트입니다. 따라서 tcpdump와 거의 동일한 방식으로 작동합니다. 서로 다른 플랫폼 간에 유틸리티 프로그램이 성공적으로 포팅되는 경우는 흔합니다. Windump는 Windows 애플리케이션이지만, 멋진 GUI를 기대하지는 마세요. 이것은 명령줄 전용 유틸리티입니다. 따라서 Windump를 사용하는 것은 기본적으로 Unix에서 tcpdump를 사용하는 것과 같습니다. 명령줄 옵션이 동일하고 결과도 거의 같습니다. Windump의 출력도 파일에 저장하여 나중에 타사 도구를 사용하여 분석할 수 있습니다.
tcpdump와의 주요 차이점 중 하나는 Windump가 Windows에 기본적으로 포함되어 있지 않다는 것입니다. 윈덤 웹사이트에서 다운로드해야 합니다. 소프트웨어는 실행 파일 형태로 제공되며, 설치할 필요가 없습니다. tcpdump가 libpcap 라이브러리를 사용하는 것처럼, Windump는 Winpcap을 사용합니다. Winpcap은 별도로 다운로드하여 설치해야 합니다.
4. 와이어샤크
와이어샤크는 패킷 스니퍼의 대표적인 도구입니다. 사실상 업계 표준으로 자리 잡았으며, 많은 다른 도구들이 와이어샤크를 에뮬레이트하려는 경향이 있습니다. 이 도구는 트래픽 캡처 기능뿐만 아니라 매우 강력한 분석 기능도 제공합니다. 강력한 분석 기능 때문에, 많은 관리자들이 tcpdump나 Windump를 사용하여 트래픽을 파일로 캡처한 후, 해당 파일을 와이어샤크에 로드하여 분석합니다. 이는 와이어샤크를 사용하는 일반적인 방법 중 하나이며, 실행 시 기존 pcap 파일을 열거나 새 트래픽 캡처를 시작하도록 안내합니다. 와이어샤크의 또 다른 장점은 사용자가 원하는 데이터에 정확히 집중할 수 있도록 다양한 필터링 기능을 제공한다는 점입니다.
솔직히 말해서, 와이어샤크는 학습 곡선이 가파르지만, 충분히 배울 가치가 있습니다. 와이어샤크는 여러 상황에서 매우 유용한 도구임을 증명할 것입니다. 한 번 배우고 나면 거의 모든 운영체제에서 사용할 수 있으며, 무료 오픈 소스 도구이므로 어디서든 편리하게 사용할 수 있습니다.
5. 티샤크
티샤크는 tcpdump와 와이어샤크의 교차점이라고 할 수 있습니다. 둘 다 최고의 패킷 스니퍼에 속하므로 훌륭한 조합이라고 할 수 있습니다. Tshark는 명령줄 전용 도구라는 점에서 tcpdump와 유사하지만, 트래픽을 캡처하는 기능 외에도 분석 기능도 갖추고 있다는 점에서는 와이어샤크와 유사합니다. Tshark는 와이어샤크와 동일한 개발자 그룹에서 개발되었습니다. 즉, 와이어샤크의 명령줄 버전입니다. 와이어샤크와 동일한 필터링 기능을 제공하므로, 분석에 필요한 트래픽만 빠르게 분리할 수 있습니다.
와이어샤크의 명령줄 버전을 왜 사용해야 할까요? 와이어샤크 GUI를 사용하면 더 쉽고 직관적이지 않을까요? 주된 이유는 GUI를 사용할 수 없는 서버 환경에서 유용하기 때문입니다.
6. 네트워크 마이너
네트워크 마이너는 패킷 스니퍼보다는 포렌식 도구에 더 가깝습니다. 네트워크 마이너는 TCP 스트림을 따라 전체 대화를 재구성합니다. 강력하고 유용한 도구임에는 틀림없습니다. 네트워크 마이너는 일부 캡처 파일을 가져와서 오프라인 모드에서 작동할 수 있습니다. 이 기능은 네트워크 마이너가 Windows에서만 실행된다는 점을 고려할 때 매우 유용합니다. 예를 들어 Linux에서 tcpdump를 사용하여 트래픽을 캡처한 다음, Windows에서 네트워크 마이너를 사용하여 분석할 수 있습니다.
네트워크 마이너는 무료 버전으로 제공되지만, IP 기반 지리적 위치 및 스크립팅과 같은 고급 기능을 사용하려면 Professional 라이선스를 구매해야 합니다. Professional 버전의 또 다른 고급 기능은 VoIP 통화를 디코딩하고 재생할 수 있다는 점입니다.
7. 피들러 (HTTP)
지식이 풍부한 독자라면 피들러가 패킷 스니퍼도 아니고 네트워크 분석기도 아니라고 주장할 수도 있습니다. 실제로 피들러는 모든 트래픽을 캡처하지 않고, HTTP 트래픽만 캡처합니다. 그러나 오늘날 많은 애플리케이션이 웹 기반이거나 백그라운드에서 HTTP 프로토콜을 사용한다는 점을 고려하면 매우 유용할 수 있습니다. 피들러는 브라우저 트래픽뿐만 아니라, 모든 HTTP 트래픽을 캡처하므로 문제 해결에 매우 유용합니다.
예를 들어, 와이어샤크와 같은 일반적인 패킷 스니퍼에 비해 피들러의 장점은 피들러가 HTTP 트래픽을 ‘이해’하도록 설계되었다는 점입니다. 예를 들어 쿠키와 인증서를 검사할 수 있으며, HTTP 기반 애플리케이션에서 주고받는 실제 데이터도 확인할 수 있습니다. 피들러는 무료로 제공되며, OS X 및 Linux(Mono 프레임워크 사용)용 베타 빌드도 다운로드할 수 있지만, 기본적으로 Windows에서 가장 원활하게 사용할 수 있습니다.
결론
이와 같은 목록을 게시할 때, 어떤 도구가 가장 좋은지 묻는 질문을 자주 받습니다. 이 상황에서 제게 질문하신다면, 저는 ‘모두’라고 대답하고 싶습니다. 위에 언급된 도구들은 모두 무료이며, 각자의 장점을 가지고 있습니다. 따라서 모든 도구를 가까이 두고 각각에 익숙해지는 것이 좋습니다. 필요한 상황이 닥치면 훨씬 쉽고 효율적으로 문제를 해결할 수 있을 것입니다. 명령줄 도구도 매우 유용하며, 스크립트를 작성하고 자동화하는 데 활용할 수 있습니다. 예를 들어, 매일 새벽 2시에 문제가 발생한다고 가정해 보겠습니다. 새벽 1시 50분에서 2시 10분 사이에 Windump나 tcpdump를 실행하도록 작업을 예약해두면, 다음 날 아침에 캡처된 파일을 분석하여 문제를 진단할 수 있습니다. 새벽에 직접 기다릴 필요가 없는 것입니다.