일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- pagp
- pvst+
- 방화벽
- port aggregation protocol
- Ansible
- 오블완
- vlan
- Packet Tracer
- gns3
- BPDU
- junos os
- ansible playbook
- 연결선 수
- 헬스 체크
- LACP
- 패킷 필터링
- 하프오픈
- 네이티브 vlan
- eigrp
- Cisco
- Network Design
- 프로그래머스
- SQL
- ospf
- 네트워크 설계
- 네트워크
- 티스토리챌린지
- STP
- 비대칭 경로
- campus network
- Today
- Total
Doctor Pepper
[Wireshark] 패킷 필터링 본문
네트워크 분석 도구인 Wireshark는 네트워크 트래픽을 실시간으로 캡처하고 분석할 수 있는 강력한 기능을 제공한다. Wireshark에서 제공하는 패킷 필터링 기능을 활용하면, 관심 있는 데이터만을 선별적으로 추출하여 보다 효율적으로 문제를 해결하고 네트워크 상태를 진단할 수 있다.
1. Wireshark에서 패킷 필터링의 중요성
Wireshark는 수많은 패킷을 실시간으로 캡처하는 도구로, 대규모 네트워크에서 발생하는 트래픽을 모두 볼 수 있다. 하지만, 이런 방대한 데이터에서 필요한 정보를 찾는 것은 매우 어려운 작업이 될 수 있다. 따라서 패킷 필터링은 필요한 패킷만을 선별하여 분석할 수 있도록 도와주며, 분석의 정확도와 효율성을 높이는 중요한 역할을 한다.
특정 프로토콜의 트래픽만 필터링 | HTTP, DNS, TCP 패킷만 보고 싶을 때 사용 |
특정 IP 주소나 포트 번호에 대한 패킷 필터링 |
특정 호스트와의 통신만 분석할 때 사용 |
에러나 비정상적인 패킷 탐지 | 오류 패킷, 재전송 패킷 등 특정 조건에 맞는 패킷을 빠르게 찾기 위해 사용 |
2. Wireshark 패킷 필터링의 종류
Wireshark에서 패킷을 필터링하는 방법은 크게 디스플레이 필터(Display Filters)와 캡처 필터(Capture Filters)로 나눌 수 있다.
- 디스플레이 필터 : 캡처 후 분석 시에 사용되며, Wireshark가 패킷을 캡처한 후, 사용자가 필요한 패킷을 필터링하여 보고 분석할 수 있도록 돕는다. 디스플레이 필터는 매우 강력하고, 조건을 세밀하게 설정할 수 있다.
- IP 주소로 필터링 : 특정 IP 주소의 패킷만 보고 싶을 때 사용할 수 있다.
ip.addr == 192.168.1.1 |
- 포트 번호로 필터링 : 특정 포트를 사용하는 패킷을 필터링할 수 있다.
tcp.port == 80 |
- 프로토콜 필터링 : 특정 프로토콜(ex. HTTP, DNS 등)만 필터링 가능하다.
http |
dns |
- 복합 조건 필터링 : 여러 조건을 통시에 결합하여 복잡한 필터를 설정할 수 있다.
ip.addr == 192.168.1.1 && tcp.port == 80 |
- 캡처 필터 : 패킷을 캡처할 때 필터링을 적용하여 불필요한 패킷을 아예 캡처하지 않도록 하는 방식이다. 이 필터는 Wireshark가 패킷을 캡처하는 시점에서 적용되며, 캡처할 패킷의 범위를 제한하여 저장할 트래픽을 줄일 수 있다.
- IP 주소로 캡처 필터링 : 특정 IP 주소의 트래픽만 캡처할 수 있다.
host 192.168.1.1 |
- 포트 번호로 캡처 필터링 : 특정 포트를 사용하는 트래픽만 캡처할 수 있다.
port 80 |
- 프로토콜 필터링 : 특정 프로토콜만 캡처할 수 있다.
tcp |
- 기본 필터
필터 | 설명 |
eth | Ethernet |
ip | Internet Protocol Version 4(IPv4) |
ipv6 | Internet Protocol Version 6(IPv6) |
arp | Address Resolution Protocol(ARP) |
dhcp | Dynamic Host Configuration Protocol(DHCP) |
rip | Routing Information Protocol(RIP) |
ospf | Open Shortest Path First(OSPF) |
bgp | Border Gateway Protocol(BGP) |
icmp | Internet Control Message Protocol(ICMP) |
tcp | Transmission Control Protocol(TCP) |
udp | User Datagram Protocol(UDP) |
dns | Domai Name System(DNS) |
http | Hypertext Transfer Protocol(HTTP) |
http2 | Hypertext Transfer Protocol Version 2(HTTP2) |
http3 | Hypertext Transfer Protocol Version 3(HTTP3) |
tls | Transport Layer Security(TLS) |
- eth 관련 필터
필터 | 설명 |
eth.addr | 수신지 혹은 송신지 MAC 주소 |
eth.dst | 수신지 MAC 주소 |
eth.src | 송신지 MAC 주소 |
eth.len | 길이(16비트 음이 아닌 정수) |
eth.type | 타입(16비트 음이 아닌 정수) |
- ip 관련 필터
필터 | 설명 |
ip.addr | 송신지 혹은 수신지 IPv4 주소 |
ip.dst | 수신지 IPv4 주소 |
ip.src | 송신지 IPv4 주소 |
ip.flags | 플래그 값들(8비트 음이 아닌 정수) |
ip.flags.df | DF(Don't fragment) 플래그(불리언) |
ip.flags.mf | MF(More fragments) 플래그(불리언) |
ip.flag_offset | 단편화 오프셋(16비트 음이 아닌 정수) |
ip.hdr_len | 헤더 길이(8비트 음이 아닌 정수) |
ip.id | 식별자(16비트 음이 아닌 정수) |
ip.len | 총 길이(16비트 음이 아닌 정수) |
ip.opt.mtu | MTU(16비트 음이 아닌 정수) |
ip.ttl | TTL(8비트 음이 아닌 정수) |
- udp 관련 필터
필터 | 설명 |
udp.port | 수신지 혹은 송신지 포트 번호(16비트 음이 아닌 정수) |
udp.dstport | 수신지 포트 번호(16비트 음이 아닌 정수) |
udp.srcport | 송신지 포트 번호(16비트 음이 아닌 정수) |
udp.length | UDP 데이터그램 길이(16비트 음이 아닌 정수) |
- tcp 관련 필터
필터 | 설명 |
tcp.port | 송신지 및 수신지 포트 번호(16비트 음이 아닌 정수) |
tcp.dstport | 수신지 포트 번호(16비트 음이 아닌 정수) |
tcp.srcport | 송신지 포트 번호(16비트 음이 아닌 정수) |
tcp.seq | 순서 번호(32비트 음이 아닌 정수) |
tcp.seq_raw | 실제 순서 번호(32비트 음이 아닌 정수) |
tcp.nxtseq | 다음 순서 번호(32비트 음이 아닌 정수) |
tcp.ack | 확인 응답 번호(32비트 음이 아닌 정수) |
tcp.ack_raw | 실제 확인 응답 번호(32비트 음이 아닌 정수) |
tcp.flags | 플래그 값들(16비트 음이 아닌 정수) |
tcp.flags.ack | ACK 플래그(불리언) |
tcp.flags.fin | FIN 플래그(불리언) |
tcp.flags.syn | SYN 플래그(불리언) |
tcp.hdr_len | 헤더 길이(8비트 음이 아닌 정수) |
tcp.len | TCP 세그먼트 길이(32비트 음이 아닌 정수) |
tcp.window_size_value | 윈도우 크기(16비트) |
tcp.options.mss_val | MSS 값(16비트 음이 아닌 정수) |
tcp.analysis.ack_rtt | 세그먼트에 대한 ACK까지의 RTT |
tcp.analysis.out_of_order | 순서가 어긋난 세그먼트 |
tcp.analysis.retransmission | 재전송 세그먼트 |
tcp.analysis.fast_retransmission | 빠른 재전송 |
tcp.analysis.duplicate_ack | 중복된 ACK |
tcp.analysis.duplicate_ack_num | 중복된 ACK 수(32비트 음이 아닌 정수) |
- http 관련 필터
필터 | 설명 |
http.request | HTTP 요청(불리언) |
http.request.line | HTTP 요청 라인(문자열) |
http.request.method | HTTP 요청 Method(문자열) |
http.request.uri | HTTP 요청 URI(문자열) |
http.request.uri.path | HTTP 요청 URI 경로(문자열) |
http.request.uri.query | HTTP 요청 URI 쿼리(문자열) |
http.request.uri.query.parameter | HTTP 요청 URI 쿼리 파라미터(문자열) |
http.request.version | HTTP 요청 버전(문자열) |
http.response | HTTP 응답(불리언) |
http.response.code | HTTP 응답 코드(16비트 음이 아닌 정수) |
http.response.phrase | HTTP 응답 코드 설명(문자열) |
http.response.line | HTTP 응답 라인(문자열) |
http.response.version | HTTP 응답 버전(문자열) |
http.accept | Accept 헤더(문자열) |
http.accept_encoding | Accept Encoding 헤더(문자열) |
http.accept_language | Accept-Language 헤더(문자열) |
http.cache_control | Cache-Control 헤더(문자열) |
http.connection | Connection 헤더(문자열) |
http.content_encoding | Content-Encoding 헤더(문자열) |
http.content_length | Content length 헤더(음이 아닌 64비트 정수) |
http.content_type | Content-Type 헤더(문자열) |
http.date | Date 헤더(문자열) |
http.host | Host 헤더(문자열) |
http.location | Location 헤더(문자열) |
http.last_modified | Last-Modified 헤더(문자열) |
http.server | Server 헤더(문자열) |
http.set_cookie | Set-Cookie 헤더(문자열) |
http.cookie | Cookie 헤더(문자열) |
http.user_agent | User-Agent 헤더(문자열) |
http.referer | Referer 헤더(문자열) |
http.authorization | Authorization 헤더(문자열) |
http.www_authenticate | WWW-Authenticate 헤더(문자열) |
- 연산자
연산자 | 설명 | |
== | eq | 조건을 만족하는 패킷을 선택 |
!= | ne | 조건을 만족하지 않는 패킷을 선택 |
&& | and | 조건을 모두 만족하는 패킷을 선택 |
|| | or | 조건을 하나 이상 만족하는 패킷을 선택 |
! | not | 조건에 부합하지 않는 패킷을 선택 |
> | gt | 지정한 값을 초과하는 패킷을 선택 |
< | lt | 지정한 값보다 작은 패킷을 선택 |
>= | ge | 지정한 값보다 크거나 같은 패킷을 선택 |
<= | le | 지정한 값보다 작거나 같은 패킷을 선택 |
'네트워크 > Wireshark' 카테고리의 다른 글
[전송 계층] TCP 분석 - 3-way-handshake (0) | 2024.11.10 |
---|---|
[전송 계층] IPv4 단편화 및 ICMP 분석 (1) | 2024.11.10 |