在网络运维、故障排查或协议分析场景中,Wireshark 是当之无愧的 “瑞士军刀”。但面对动辄上万条的数据包,若不会用过滤器筛选,就像在稻草堆里找针 —— 效率极低。Wireshark 的过滤器分为捕获过滤器(抓包时筛选,减少冗余数据)和显示过滤器(抓包后筛选,精准定位目标),两者语法不同,却都是提升分析效率的核心。下面整理的 50 个技巧,覆盖基础到进阶场景,每一个都经过实战验证,帮你摆脱 “看包头疼” 的困境。
一、先搞懂基础:捕获 vs 显示过滤器的核心差异
在学技巧前,必须分清这两类过滤器,否则极易用错语法导致筛选失效:
-
• 捕获过滤器:作用于 “抓包阶段”,只捕获符合条件的数据包,减少硬盘存储压力(语法基于 BPF,即 Berkeley Packet Filter); -
• 显示过滤器:作用于 “分析阶段”,从已捕获的数据包中筛选显示(语法是 Wireshark 自定义,功能更精细)。举个简单例子:抓 “192.168.1.100” 的流量,捕获过滤器用 host 192.168.1.100,显示过滤器用ip.addr == 192.168.1.100—— 这是最基础也最容易混淆的点,记牢!
二、捕获过滤器技巧(20 个):抓包阶段就筛掉无用数据
捕获过滤器的核心是 “提前过滤”,避免抓包文件过大。以下技巧按 “主机 / 端口 / 协议 / 网段” 分类,覆盖常见场景:
1. 捕获单个主机的所有流量
语法:host [IP地址]
示例:host 192.168.1.100
说明:捕获目标 IP 的 “接收 + 发送” 所有数据包,适合排查单台设备的网络问题(如某台电脑无法上网)。
2. 捕获 “源主机” 发送的流量
语法:src host [IP地址]
示例:src host 192.168.1.100
说明:只抓从目标 IP 发出去的包,比如看某台设备是否有异常向外发包(如疑似挖矿程序)。
3. 捕获 “目的主机” 接收的流量
语法:dst host [IP地址]
示例:dst host 192.168.1.1(网关 IP)
说明:只抓发给目标 IP 的包,适合排查 “设备是否能正常向网关发请求”。
4. 捕获两个主机之间的流量
语法:host [IP1] and host [IP2]
示例:host 192.168.1.100 and host 10.0.0.5
说明:只保留两台设备之间的通信包,排除其他无关流量(如排查两台服务器的连接问题)。
5. 捕获 “非某主机” 的流量
语法:not host [IP地址]
示例:not host 192.168.1.200
说明:抓除目标 IP 外的所有流量,适合排除某台已知正常的设备,聚焦其他可疑设备。
6. 捕获单个端口的流量
语法:port [端口号]
示例:port 80
说明:捕获所有 “使用 80 端口” 的 TCP/UDP 流量(80 是 HTTP 默认端口),适合排查 Web 服务问题。
7. 捕获 “源端口” 的流量
语法:src port [端口号]
示例:src port 5432(PostgreSQL 默认端口)
说明:只抓从 5432 端口发出去的包,比如看数据库服务器是否正常对外提供服务。
8. 捕获 “目的端口” 的流量
语法:dst port [端口号]
示例:dst port 22(SSH 默认端口)
说明:只抓发给 22 端口的包,适合排查 “远程登录某服务器是否成功”。
9. 捕获端口范围的流量
语法:portrange [起始端口]-[结束端口]
示例:portrange 8000-8080
说明:捕获指定端口段的流量,比如排查某应用的端口段(如 Tomcat 常用 8080,Nginx 常用 80)是否有异常。
10. 排除某个端口的流量
语法:not port [端口号]
示例:not port 443(HTTPS 默认端口)
说明:抓除 443 端口外的所有流量,适合排除加密流量,聚焦明文协议分析(如 HTTP、Telnet)。
11. 捕获指定协议的流量(TCP/UDP)
语法:tcp 或 udp
示例:tcp
说明:只抓 TCP 协议的包,适合分析三次握手、四次挥手或 TCP 丢包问题;udp同理,用于 DNS、DHCP 等 UDP 协议分析。
12. 捕获 “TCP + 指定端口” 的流量
语法:tcp and port [端口号]
示例:tcp and port 443
说明:精准捕获 TCP 协议下 443 端口的流量(即 HTTPS 的 TCP 通信),避免 UDP 协议的 443 端口干扰(虽少见,但可能存在)。
13. 捕获 “UDP + 指定端口” 的流量
语法:udp and port [端口号]
示例:udp and port 53(DNS 默认端口)
说明:只抓 DNS 的 UDP 流量,排除 TCP 协议的 DNS 请求(大域名解析可能用 TCP),聚焦常规 DNS 问题。
14. 捕获单个网段的流量
语法:net [网段/子网掩码]
示例:net 192.168.1.0/24
说明:捕获 192.168.1.x 网段的所有流量,适合排查某一网段的网络拥堵或故障。
15. 捕获 “源网段” 的流量
语法:src net [网段/子网掩码]
示例:src net 10.0.0.0/8
说明:只抓从 10.x.x.x 网段发出去的包,比如看内网是否有设备向外网发送异常流量。
16. 捕获 “目的网段” 的流量
语法:dst net [网段/子网掩码]
示例:dst net 172.16.0.0/12
说明:只抓发给 172.16.x.x - 172.31.x.x 网段的包,适合排查 “内网设备是否能正常访问另一内网网段”。
17. 捕获 “大于指定大小” 的数据包
语法:greater [字节数]
示例:greater 1500
说明:只抓长度超过 1500 字节的包(通常是 MTU 相关的大包),适合排查 “大包分片失败” 导致的网络问题。
18. 捕获 “小于指定大小” 的数据包
语法:less [字节数]
示例:less 64
说明:只抓长度小于 64 字节的包(通常是 ARP、ICMP 请求等小包),适合排查 “频繁小包导致的网络广播风暴”。
19. 组合过滤:“协议 + 主机 + 端口”
语法:[协议] and host [IP] and port [端口]
示例:tcp and host 192.168.1.100 and port 8080
说明:精准捕获 “192.168.1.100” 通过 TCP 协议与 8080 端口的通信,适合定位单设备、单协议、单端口的问题。
20. 排除多个条件:“not (条件 1 or 条件 2)”
语法:not (host [IP1] or port [端口1])
示例:not (host 192.168.1.200 or port 443)
说明:排除 “192.168.1.200” 的流量和 443 端口的流量,适合聚焦其他关键流量(如排除已知正常的设备和加密流量)。
三、显示过滤器技巧(25 个):抓包后精准定位目标
显示过滤器功能更精细,支持按 “IP 属性、TCP 标志位、协议字段” 等筛选,是故障排查的核心工具:
21. 显示单个主机的所有流量
语法:ip.addr == [IP地址]
示例:ip.addr == 192.168.1.100
说明:等同于捕获过滤器的host,但作用于已捕获的数据包,可随时开关筛选(比捕获过滤器更灵活)。
22. 显示 “源 IP” 的流量
语法:ip.src == [IP地址]
示例:ip.src == 192.168.1.100
说明:只显示从目标 IP 发出去的包,可结合 “时间列” 看设备的发包时序(如是否有延迟)。
23. 显示 “目的 IP” 的流量
语法:ip.dst == [IP地址]
示例:ip.dst == 202.97.96.68(某 DNS 服务器 IP)
说明:只显示发给目标 IP 的包,适合排查 “设备是否能正常向目标 IP 发送请求”(如 DNS 请求是否发出去)。
24. 显示 “IP 在某网段” 的流量
语法:ip.addr in [网段]
示例:ip.addr in 192.168.1.0/24
说明:显示所有涉及 192.168.1.x 网段的数据包,比ip.src+ip.dst更简洁。
25. 显示 “TTL 异常” 的流量
语法:ip.ttl < [数值] 或 ip.ttl > [数值]
示例:ip.ttl < 10
说明:TTL(生存时间)默认是 64/128,若 TTL 过小(如 <10),可能是数据包经过过多路由导致超时,适合排查 “跨网段通信延迟”。
26. 显示 TCP 协议的 SYN 包(三次握手第一步)
语法:tcp.flags.syn == 1
示例:tcp.flags.syn == 1 and not tcp.flags.ack == 1
说明:只显示 “纯 SYN 包”(无 ACK 标志),适合排查 “是否有设备尝试建立 TCP 连接但无响应”(如端口不通)。
27. 显示 TCP 协议的 FIN 包(四次挥手第一步)
语法:tcp.flags.fin == 1
示例:tcp.flags.fin == 1
说明:显示 TCP 连接关闭的初始包,结合 “时间列” 可看 “连接关闭是否正常”(如突然发送 FIN 包可能是异常断开)。
28. 显示 TCP 协议的 RST 包(强制断开连接)
语法:tcp.flags.reset == 1
示例:tcp.flags.reset == 1
说明:RST 包表示强制断开连接,若频繁出现,可能是 “端口未开放”“服务崩溃” 或 “网络拥堵导致连接超时”,需重点排查。
29. 显示 “TCP 端口异常” 的流量
语法:tcp.port == [端口号] 或 tcp.port != [端口号]
示例:tcp.port == 8080
说明:显示所有使用 8080 端口的 TCP 流量(源或目的端口),若要精准区分,可用tcp.srcport == 8080(源端口)或tcp.dstport == 8080(目的端口)。
30. 显示 “TCP 重传” 的数据包
语法:tcp.analysis.retransmission
示例:tcp.analysis.retransmission
说明:Wireshark 会自动标记重传包,若频繁出现,说明网络存在丢包(如链路不稳定、带宽不足),需进一步排查丢包原因。
31. 显示 “TCP 窗口满” 的数据包
语法:tcp.window_size == 0
示例:tcp.window_size == 0
说明:TCP 窗口为 0 表示 “接收方缓冲区满,无法接收数据”,可能是 “接收方性能不足”(如 CPU / 内存过高)导致,需检查接收端设备。
32. 显示 UDP 协议的指定端口流量
语法:udp.port == [端口号]
示例:udp.port == 67(DHCP 服务器端口)
说明:显示 DHCP 服务器的 UDP 流量,结合dhcp过滤器可更精准(见技巧 37)。
33. 显示 HTTP 协议的所有请求
语法:http
示例:http
说明:显示所有 HTTP 协议的数据包(包括请求和响应),适合排查 “Web 页面加载慢”“请求失败” 等问题(HTTPS 需解密后才能用http筛选)。
34. 显示 HTTP 的 GET 请求
语法:http.request.method == "GET"
示例:http.request.method == "GET"
说明:只显示 HTTP 的 GET 请求(获取资源),结合 “http.request.uri” 可看具体请求的 URL(如http.request.uri contains "index.html")。
35. 显示 HTTP 的 POST 请求
语法:http.request.method == "POST"
示例:http.request.method == "POST"
说明:只显示 HTTP 的 POST 请求(提交数据),适合排查 “表单提交失败”“接口调用异常” 等问题(可结合http.request.body看提交内容)。
36. 显示 HTTP 的 “4xx/5xx 错误” 响应
语法:http.response.code >= 400
示例:http.response.code == 404(页面不存在)或 http.response.code == 500(服务器内部错误)
说明:快速定位 HTTP 响应错误,4xx 是客户端问题(如 URL 错误),5xx 是服务器问题(如服务崩溃)。
37. 显示 DHCP 协议的流量
语法:dhcp
示例:dhcp
说明:显示 DHCP 的 “请求(Discover/Request)” 和 “响应(Offer/Ack)” 包,适合排查 “设备无法获取 IP”(如无 Offer 包可能是 DHCP 服务器故障)。
38. 显示 DNS 协议的流量
语法:dns
示例:dns
说明:显示 DNS 的 “查询(Query)” 和 “响应(Response)” 包,结合dns.qry.name可看具体查询的域名(如dns.qry.name == "baidu.com")。
39. 显示 DNS 解析失败的流量
语法:dns.resp.code != 0
示例:dns.resp.code != 0
说明:DNS 响应码为 0 是成功,非 0 是失败(如 3 是域名不存在),适合排查 “无法访问某网站” 是否是 DNS 解析问题。
40. 显示 ICMP 协议的流量(ping 包)
语法:icmp
示例:icmp
说明:显示 ICMP 的 “请求(Echo Request)” 和 “响应(Echo Reply)” 包,适合排查 “设备是否可达”(如无 Reply 包可能是网络不通或设备禁 ping)。
41. 显示 ICMP 错误包(如目标不可达)
语法:icmp.type != 8 and icmp.type != 0
示例:icmp.type != 8 and icmp.type != 0
说明:ICMP 类型 8 是请求、0 是响应,其他类型是错误(如 3 是目标不可达、11 是超时),适合排查 “ping 不通的具体原因”。
42. 显示 “指定时间范围” 的数据包
语法:frame.time >= "YYYY-MM-DD HH:MM:SS" and frame.time <= "YYYY-MM-DD HH:MM:SS"
示例:frame.time >= "2025-12-01 10:00:00" and frame.time <= "2025-12-01 10:05:00"
说明:只显示某一时间窗口的数据包,适合排查 “特定时间点的网络故障”(如用户反馈 10 点左右断网)。
43. 显示 “数据包长度异常” 的流量
语法:frame.len > [字节数] 或 frame.len < [字节数]
示例:frame.len > 2000
说明:frame.len是数据包的总长度,大于 2000 字节的包可能是 “超大包导致分片失败”,需检查 MTU 设置。
44. 显示 “包含指定字符串” 的数据包
语法:frame contains " [字符串] "
示例:frame contains "login"
说明:搜索数据包中是否包含 “login” 字符串,适合排查 “明文协议的登录请求”(如 HTTP 登录、Telnet 登录),但不支持加密流量(如 HTTPS)。
45. 显示 “ARP 协议” 的流量
语法:arp
示例:arp
说明:显示 ARP 的 “请求(Who has)” 和 “响应(Is at)” 包,适合排查 “IP 与 MAC 地址绑定异常”(如 ARP 欺骗导致的断网)。
四、高级过滤器技巧(5 个):突破基础,解决复杂问题
掌握以下技巧,能应对更复杂的分析场景,体现 “实战高手” 的能力:
46. 组合多个显示条件(逻辑与 / 或 / 非)
语法:(条件1) and (条件2) or (条件3)
示例:(ip.addr == 192.168.1.100) and (tcp.port == 8080) or (http.response.code == 500)
说明:括号可改变优先级,此示例表示 “显示 192.168.1.100 与 8080 端口的通信,或所有 HTTP 500 错误响应”,适合多场景并行排查。
47. 显示 “TCP 流异常” 的流量(如乱序、延迟)
语法:tcp.analysis.out_of_order(乱序)或 tcp.analysis.delay > [毫秒](延迟)
示例:tcp.analysis.out_of_order
说明:Wireshark 会标记乱序包,若频繁出现,可能是 “网络链路不稳定”;tcp.analysis.delay > 100表示延迟超过 100 毫秒,需排查路由或带宽。
48. 显示 “自定义协议” 的流量(基于端口 + 字段)
语法:tcp.port == [自定义端口] and tcp.payload[0:2] == 0x1234
示例:tcp.port == 9000 and tcp.payload[0:2] == 0xAB12
说明:若自定义协议用 9000 端口,且头部前 2 字节是 0xAB12,可用此过滤器精准筛选,避免其他端口的干扰。
49. 显示 “排除特定 MAC 地址” 的流量
语法:eth.addr != [MAC地址]
示例:eth.addr != 00:11:22:33:44:55
说明:MAC 地址是设备的物理地址,排除某 MAC 地址的流量,适合排查 “某台设备的异常流量是否影响其他设备”。
50. 保存常用过滤器(提升效率)
操作:在显示过滤器输入框右侧,点击 “保存” 图标,命名后保存(如 “HTTP 500 错误”“TCP 重传”)
说明:无需每次输入复杂语法,下次直接选择保存的过滤器即可,尤其适合频繁排查同类问题的场景。
五、注意事项:避免踩坑,提升准确性
-
1. 语法别混淆:捕获过滤器用 host/src/dst,显示过滤器用ip.addr ==/ip.src ==,别搞反(比如用host做显示过滤器会失效); -
2. 大小写不敏感:显示过滤器不区分大小写(如 HTTP和http都可用),捕获过滤器的协议名需小写(如tcp不能写TCP); -
3. 别过度过滤:捕获时若过滤条件太严格,可能漏掉关键数据包(如排查丢包时,别排除 RST 包); -
4. HTTPS 需解密:HTTPS 流量默认加密,需导入 SSL 证书或私钥解密后,才能用 http过滤器筛选(Wireshark “编辑 - 首选项 - SSL” 可配置)。
技巧要落地,实践出真知
Wireshark 过滤器的核心不是 “背语法”,而是 “按需筛选”—— 比如排查 “无法访问某网站”,可先查 DNS(dns+dns.qry.name),再查 TCP 连接(tcp.flags.syn),最后查 HTTP 响应(http.response.code)。
如果你能掌握这 50 个技巧中的 25 个以上,应对日常的网络故障排查绝对没问题;若能灵活组合高级技巧,那在团队里绝对是 “Wireshark 高手”。

