Linux

[리눅스] tshark 명령어 완벽 가이드 사용법(Wireshark의 CLI 버전)

인생아 2024. 10. 24. 12:01
반응형

tsharkWireshark의 CLI(명령줄 인터페이스) 버전으로, 네트워크 트래픽을 캡처하고 분석할 수 있는 강력한 도구입니다. 네트워크 모니터링, 트래픽 분석, 문제 해결에 필수적인 도구로, 패킷 캡처와 분석을 명령줄에서 효율적으로 처리할 수 있습니다. Wireshark와 같은 기능을 제공하지만 GUI 대신 명령줄을 사용하는 점이 다릅니다. tshark는 네트워크 보안, 네트워크 트래픽 분석, 네트워크 성능 최적화와 같은 다양한 작업에 매우 유용합니다.

tshark 설치

대부분의 리눅스 배포판에서 tshark는 기본 패키지로 제공되지 않으므로 설치해야 합니다. 다음과 같은 명령어로 설치할 수 있습니다.

sudo apt-get install tshark

또는 yum을 사용하는 배포판에서는 다음과 같이 설치할 수 있습니다.

 
sudo yum install wireshark

기본 사용법

tshark를 사용하여 패킷을 캡처하려면 root 권한이 필요합니다. 가장 간단한 사용법은 다음과 같이 네트워크 인터페이스에서 트래픽을 캡처하는 것입니다.

 
sudo tshark

이 명령어는 기본 인터페이스에서 트래픽을 캡처하며, 실시간으로 패킷을 출력합니다. 특정 네트워크 인터페이스에서만 트래픽을 캡처하고 싶다면 다음과 같이 -i 옵션을 사용할 수 있습니다.

sudo tshark -i eth0

위 명령어는 eth0 인터페이스에서만 패킷을 캡처합니다.

파일에 패킷 저장

캡처한 데이터를 파일로 저장하고 싶다면 -w 옵션을 사용합니다.

sudo tshark -i eth0 -w capture_output.pcap

이 명령어는 eth0 인터페이스에서 캡처된 트래픽을 capture_output.pcap 파일에 저장합니다. 이 파일은 Wireshark에서 열어서 분석할 수 있습니다.

필터링과 검색

tshark는 특정 패킷을 필터링하여 분석할 수 있는 강력한 기능을 제공합니다. -f 옵션은 캡처할 패킷을 BPF(Berkeley Packet Filter) 구문을 통해 필터링할 수 있으며, -Y 옵션은 캡처된 데이터를 분석할 때 디스플레이 필터를 적용할 수 있습니다.

예를 들어, TCP 패킷만 캡처하려면 다음과 같이 실행할 수 있습니다.

sudo tshark -i eth0 -f "tcp"

HTTP 요청 패킷만 캡처하고 싶다면 -Y 옵션을 사용하여 필터를 적용합니다.

sudo tshark -i eth0 -Y "http.request"

실행 예제

다음은 실제 리눅스 터미널에서 tshark 명령어가 실행되는 예시입니다.

user@linux:~/network$ sudo tshark -i eth0
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
    1   0.000000   192.168.0.10 → 192.168.0.1    ICMP Echo (ping) request
    2   0.000100   192.168.0.1  → 192.168.0.10   ICMP Echo (ping) reply
    3   0.500000   192.168.0.10 → 192.168.0.1    TCP 443 → 60643 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=12345678 TSecr=0 WS=128
    4   0.500200   192.168.0.1  → 192.168.0.10   TCP 60643 → 443 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=12345679 TSecr=12345678 WS=128

이 예제에서는 eth0 인터페이스에서 트래픽을 캡처하고, ICMP 및 TCP 패킷을 실시간으로 출력하는 것을 볼 수 있습니다.

또 다른 예시로, 특정 HTTP 요청만 필터링하여 캡처하는 예시는 다음과 같습니다.

user@linux:~/network$ sudo tshark -i eth0 -Y "http.request"
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
    1   1.000000   192.168.0.10 → 93.184.216.34  HTTP GET /index.html HTTP/1.1
    2   1.000500   93.184.216.34 → 192.168.0.10  HTTP 200 OK

이 명령은 HTTP 요청 패킷만 캡처하며, GET 요청과 서버의 응답 패킷을 출력하는 예입니다.

결론

tshark는 리눅스 환경에서 네트워크 분석을 효율적으로 수행할 수 있는 매우 유용한 도구입니다. 이를 통해 네트워크 트래픽을 모니터링하고 특정 패킷을 필터링하여 상세한 분석을 할 수 있습니다. 네트워크 관리자나 보안 전문가가 네트워크 문제를 해결하고 보안 위험을 탐지하는 데 필수적인 역할을 합니다.

참고사이트

반응형