네트워크 문제 해결을위한 패킷 스니퍼 기본 사항

스니퍼를 사용하여 패킷 캡처를 수행하는 것은 복잡한 문제를 진단하는 데 매우 강력한 방법이 될 수 있습니다. 다른 모든 방법이 실패하면 유선을 통해 전송되는 원시 데이터를 보는 것이 도움이됩니다. 패킷은 거짓말을하지 않으며 낮은 수준에서 애플리케이션 트래픽을 분석하면 문제의 더 깊은 증상을 드러 낼 수 있습니다 (또는 존재하지 않았던 문제도 드러 낼 수 있음).

이 기사에서는 CLI 기반 tcpdump 도구 사용에 대한 몇 가지 기본 사항을 다룹니다.

Sniffer 기본 사항

먼저 먼저 “패킷 스니퍼”라는 말은 무엇을 의미합니까? 패킷 스니퍼는 네트워크에서 패킷을 캡처 할 수있는 단순한 소프트웨어입니다. Tcpdump 및 Wireshark는 패킷 스니퍼의 예입니다. Tcpdump는 CLI 패킷 스니퍼를 제공하고 Wireshark는 패킷 스니핑 및 분석을위한 기능이 풍부한 GUI를 제공합니다.

기본적으로 tcpdump는 무차별 모드에서 작동합니다. 이는 단순히 호스트에 도달하는 모든 패킷이 검사를 위해 tcpdump로 전송된다는 것을 의미합니다. 이 설정에는 브로드 캐스트 및 멀티 캐스트 트래픽과 같이 캡처중인 특정 호스트로 향하지 않은 트래픽도 포함됩니다. 물론, tcpdump는 마법 같은 소프트웨어가 아닙니다. 컴퓨터의 물리적 인터페이스 중 하나에 도달하는 패킷 만 캡처 할 수 있습니다.

설치 tcpdump는 간단합니다. Red Hat 시스템의 표준 패키지 리포지토리에서 사용할 수 있으며 이름으로 설치할 수 있습니다.

일반적인 패킷 스니핑 시나리오

컴퓨터로 들어오는 모든 트래픽을 캡처하는 것은 개념적으로 멋지게 들릴 수 있지만 시스템 관리자로서 일상 업무에서 수행하는 많은 활동에 대해서는 상당히 낮은 수준으로 들립니다. 그렇다면 패킷 캡처 도구는 언제 사용합니까? 일반적으로 네트워크 애플리케이션 문제를 해결할 때 다른 모든 옵션을 다 사용한 경우 패킷 스니퍼를 사용합니다. 종종 기본 네트워크 문제 해결을 수행하고 애플리케이션 로그 파일을 검토했지만 여전히 문제의 원인을 파악할 수 없습니다. 이 시점에서 패킷 스니퍼를 분리하여 유선으로 전송되는 실제 데이터를 관찰하는 것은 유익 할 수 있습니다.

패킷 스니퍼의 또 다른 훌륭한 사용 사례는 교육적입니다. 응용 프로그램 교환과 관련된 패킷을 관찰하면 기본 프로토콜에 대한 이해도를 높일 수 있습니다. 예를 들어 DNS 작동 방식을 이해하려고 할 때 재귀 적 DNS 쿼리의 전체 패킷 흐름을 관찰하는 것은 매우 중요합니다.

기본 패킷 캡처 수행

가장 좋은 방법은 다음과 같습니다. 잠수하여 기본적인 패킷 캡처를 시작하겠습니다. 먼저 특별한 옵션없이 tcpdump를 사용해 보겠습니다. 패킷 캡처를 수행하려면 수퍼 유저 여야합니다 (기술적으로는 특수 기능이있는 일반 계정에서 실행할 수 있지만 일반적으로 루트로 실행하는 것이 더 쉽습니다). Ctrl + C를 사용하거나 SIGTERM을 tcpdump 프로세스 ID (PID)로 보내 캡처를 중지합니다.

기본 tcpdump

받는 사람 tcpdump의 기본 출력을 확인하고 다음 명령을 입력하기 만하면됩니다.

참고 : Ctrl + C를 누르기 전에 많은 출력이 지나가도록하는 대신 다음을 지정할 수 있습니다. -c 플래그로보고 싶은 패킷 수. 대신 위의 명령은 동일한 결과를 얻기 위해 tcpdump -c 6가 될 수 있습니다 (6 개의 패킷 캡처).

tcpdump 처음에는 약간 어려울 수 있지만이 도구를 몇 번 사용하면 익숙해집니다. 필드를 왼쪽에서 오른쪽으로 분류 해 보겠습니다.

특정 인터페이스 스니핑

이전 예제의 출력 상단에 는 (eth0)에서 캡처를 시작하고 캡처 하단에는 캡처 된 패킷에 대한 요약 통계가 포함됩니다.

tcpdump는 캡처를 수행하기위한 특정 인터페이스를 지정하는 것입니다. 기본적으로 tcpdump는 “up”인 가장 낮은 번호의 인터페이스를 선택합니다. 많은 서버에 여러 인터페이스가 있으며 캡처에 사용하는 인터페이스에 대해 명시해야합니다. 또한 netfilter 인터페이스와 같은 일부 “특수”인터페이스 유형은 목록의 맨 위에 표시 될 수 있습니다. 이 동작은 혼란을 유발할 수 있으므로 관심있는 인터페이스를 지정하는 것이 가장 좋습니다.

캡처에 사용할 수있는 인터페이스를 살펴 보겠습니다.

다음 목록과 함께 이제 -i 플래그로 수신 할 인터페이스를 지정할 수 있습니다.인터페이스 이름이나 --list-interfaces 명령의 번호를 사용할 수 있습니다.

위 캡처를 보면 우리를 통과하는 패킷에 대한 기본 정보를 얻을 수 있습니다. 회로망. 이러한 패킷에는 업스트림 스위치의 STP (Spanning Tree Protocol) 출력이 포함되어있는 것 같습니다. 기술적으로 이것은 패킷이 아니라 레이어 2 프레임입니다. 그러나 패킷 캡처에 대해 논의 할 때 같은 의미로 사용되는 용어를 듣게 될 것입니다.

추가 정보 얻기

이전 예제의 간단한 문제 해결 결과는 명백한 문제를 식별하는 데 유용 할 수 있지만 때로는 필요합니다. 복잡한 문제를 실제로 파헤 치기위한 더 많은 정보. 캡처의 자세한 정도를 조정하는 방법을 아는 것은 패킷에 포함 된 실제 데이터를 더 깊이 파고들 수 있기 때문에 중요합니다.

tcpdump은 1 ~ 3 개의 -v 플래그를 명령에 추가하여 제어합니다.

최대 상세 수준을 지정하면 다음에 대한 훨씬 더 많은 정보를 볼 수 있습니다. 패킷 본문. 위에서 루트 브리지 ID 및 루트 경로 비용과 같은 STP 패킷의 데이터에 대한 추가 정보를 볼 수 있습니다. STP에 익숙하지 않더라도 걱정하지 마십시오. 여기서 주목해야 할 중요한 점은 자세한 정도를 늘리면 네트워크 트래픽에 대한 추가 정보를 얻을 수 있다는 것입니다.

패킷의 정확한 바이트 확인

자세한 정도를 늘리는 것이 편리하지만 여전히 패킷의 고기가 보이지 않습니다내용물. 패킷에있는 정확한 바이트를 확인하려면 -x-X 플래그를 사용할 수 있습니다. -x 플래그는 각 패킷의 데이터를 16 진수로 인쇄하고 -X 플래그는 데이터를 ASCII로 인쇄합니다. 다음은 -x를 사용한 출력입니다.

그리고 다음은 :

위의 예에서 16 진수 및 ASCII 데이터에 유의하세요. 이 경우 에 대한 DNS A 레코드 쿼리를 수행했습니다. 또한 캡처 할 패킷 수를 지정하기 위해 -c 플래그를 사용했으며 port 53의 캡처 필터를 제공했습니다. 다음 기사에서 필터에 대해 설명하겠습니다.

숫자 확인

tcpdump 작업을하면서 눈치 채 셨을 것입니다. 기본 동작은 IP 주소를 FQDN (정규화 된 도메인 이름)으로 자동 확인하는 것입니다. 또한 Tcpdump는 포트 번호 (예 : 22)를 친숙한 이름 (예 : SSH)으로 변환합니다. 이 동작은 좋지만, 어떤 식 으로든 문제 해결을 모호하게하지 않도록 숫자 데이터를보고 싶어하는 경우가 많습니다. 이 기본 동작은 -n를 전달하여 IP 주소 조회를 비활성화하거나 -nn를 전달하여 IP 주소와 포트 조회를 모두 비활성화하여 변경할 수 있습니다.

다음은 -nn를 사용할 때의 결과입니다.

덤프 저장

언젠가는 나중에 분석하거나 Wireshark와 같은 그래픽 도구를 사용하여 심층 분석을 위해 패킷 캡처를 저장합니다. 이 작업은 패킷 캡처 파일을 작성할 수있는 -w 플래그를 사용하여 쉽게 수행 할 수 있습니다.

참고 :

-r 플래그 또는 pcap 파일 형식을 지원하는 다른 응용 프로그램을 사용합니다.

위에서 볼 수 있듯이 , -w 플래그는 우리가 가져갈 수있는 편리한 pcap 파일을 생성했습니다.

래핑

패킷 캡처를 수행하는 것은 강력한 기술입니다. 네트워크 문제 해결 기술 인벤토리에서 특히 문제가 발생하고 나머지 네트워크가 정상으로 보이는 경우 명령 줄에서 tcpdump를 사용하는 방법을 이해하면 네트워크 응용 프로그램 문제를 해결하려고 할 때 불편한 시간을 절약 할 수 있으며 익숙해지면 구문이 매우 직관적입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다