Wireshark如何过滤指定IP的流量

联启 网络工具 13

Wireshark如何过滤指定IP的流量:从入门到精通(2025最新实战指南)

目录导读

  1. 为什么需要过滤指定IP?
  2. Wireshark过滤基础认知
  3. 核心方法:过滤指定IP的流量(含源码示例)
  4. 进阶技巧:多IP、排除IP与模糊匹配
  5. 实战案例:快速定位恶意IP的通信行为
  6. 常见问题与专家回答(QA)

为什么需要过滤指定IP?

在网络排错、安全审计或性能分析中,网络数据包数量往往以百万计,Wireshark虽然能捕获所有流量,但不加过滤地分析就像“大海捞针”,你可能需要:

Wireshark如何过滤指定IP的流量-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  • 排查某台服务器(如168.1.100)是否对外发送异常数据
  • 检测某个可疑IP(如0.113.50)对你的Web应用进行了哪些主动连接
  • 隔离出口网关(如0.0.1)的流量,分析带宽占用原因

Wireshark的显示过滤器(Display Filter) 正是为解决这类问题而生,它不会影响原始捕获数据,只改变当前视图。


Wireshark过滤基础认知

1 显示过滤器 vs 捕获过滤器

  • 显示过滤器(常用):对已捕获的数据包进行条件筛选,支持修改条件实时刷新结果,语法更灵活,本文所有示例均为显示过滤器。
  • 捕获过滤器:在数据捕获阶段就丢弃不符合条件的数据,适合长时间抓包降低负载,但语法受限(基于BPF)。

新手必知:在Wireshark顶部的过滤栏输入表达式后按Enter即可生效,绿色背景表示语法正确,红色表示错误。

2 关键字段解析

  • ip.src:源IP地址
  • ip.dst:目标IP地址
  • ip.addr:任一方向包含该IP(源或目标均可)

核心方法:过滤指定IP的流量(含源码示例)

精确过滤单个IP(推荐)

过滤所有涉及 8.8.8 的数据包(无论源或目标):

ip.addr == 8.8.8.8
  • 用途:快速定位某台主机的全部通信。

过滤特定方向的流量

  • 仅作为源IP(发出):
    ip.src == 192.168.1.10
  • 仅作为目标IP(接收):
    ip.dst == 192.168.1.10

过滤IPv6地址(如苹果设备或双栈网络)

ipv6.addr == 2001:db8::1
ipv6.src == 2001:db8::1

过滤包含端口的组合(通常与HTTP/HTTPS分析结合)

ip.addr == 10.0.0.5 && tcp.port == 443

场景:只查看某台服务器与Web服务的HTTPS流量,其他端口(如22、3306)被排除。


进阶技巧:多IP、排除IP与模糊匹配

1 同时过滤多个IP(逻辑或)

ip.addr == 192.168.1.10 || ip.addr == 10.0.0.1

或使用更简洁的语法:

ip.addr in {192.168.1.10, 10.0.0.1}

2 排除特定IP(逻辑非)

排除IP 168.1.1 的所有流量:

!(ip.addr == 192.168.1.1)

或者写作:

ip.addr != 192.168.1.1

提示:排除时须注意运算符优先级,建议用括号分组。

3 模糊匹配:过滤一个网段

查看整个168.1.0/24子网的流量:

ip.addr == 192.168.1.0/24

或使用CIDR表示法:

ip.addr == 192.168.1.0/24

更复杂的例子:过滤源IP在某个私有地址范围内,且目标端口为80:

ip.src == 10.0.0.0/8 && tcp.dstport == 80

实战案例:快速定位恶意IP的通信行为

场景

安全监控系统报警:内部主机16.0.50尝试连接外网可疑IP 51.100.7,你需要用Wireshark确认这次通信的发起方、数据内容和频率。

步骤

  1. 在目标交换机上镜像端口捕获数据包。
  2. 输入第一层过滤ip.addr == 172.16.0.50 此时看到主机向多个目标发出了很多包。
  3. 加入可疑IPip.addr == 172.16.0.50 && ip.addr == 198.51.100.7 (注意:此语法会要求同时包含两个IP,表示这两个IP之间的直接通信)
  4. 确认方向:查看ip.src字段,发现16.0.50是源IP向51.100.7的443端口发起TLS连接。
  5. 进一步限定协议ip.addr == 172.16.0.50 && ip.addr == 198.51.100.7 && tls.handshake.type == 1 过滤出TLS握手阶段的数据,确认是否为主动外联。
  6. 导出分析:右键点击数据包 → “Follow TCP Stream”查看完整载荷。

常见问题与专家回答(QA)

Q1:我输入ip.addr == 10.0.0.1,为什么Wireshark还显示其他IP的包? A:请确认过滤栏背景为绿色,若显示灰色,可能是启用了“启用捕获过滤器”而未关闭,尝试点击菜单栏“捕获” → “捕获过滤器” → 选中“None”或直接清除,若数据包未实际包含该IP(如广播包可能有多个IP地址),需检查是否误用了ip.srcip.dst的组合。

Q2:如何过滤所有非本地局域网(公网)IP流量? A:使用!(ip.addr == 192.168.0.0/16 || ip.addr == 10.0.0.0/8 || ip.addr == 172.16.0.0/12),即可排除三个私有网段,只保留公网IP流量。

Q3:过滤后数据包变少了,但“统计”菜单中的“协议层次统计”数据还是原来的总数? A:Wireshark的“统计”功能默认基于当前显示过滤器,如果统计结果未更新,请检查是否在统计窗口内手动选择了“显示过滤器”选项卡(而非“捕获”),显示过滤后的统计应自动刷新。

Q4:为什么有些IP在捕获列表里,却过滤不出来? A:可能原因1:该IP位于数据链路层(如以太网MAC地址),而非网络层(IP),此时应使用eth.addrwlan.addr过滤,原因2:数据包遭受分片,部分IP地址出现在分片偏移中而非标准位置,尝试使用ip.version或其他字段辅助确认。

Q5:我想保存所有涉及特定IP的数据包到新的pcap文件,怎么做? A:先应用过滤条件(如ip.addr == 10.0.0.2),然后点击菜单“文件” → “导出特定分组” → 选择“应用显示过滤器” → 保存为独立文件,此操作仅保留可视范围的数据,可极大减小文件体积。


通过以上方法,您已掌握Wireshark过滤指定IP流量的核心技能,从简单的ip.addr到复杂的多条件组合,您可以像外科手术一样精准切出任何感兴趣的通信片段,无论面对千兆流量还是异常攻击溯源。过滤的最终目的是让数据本身说话——当您看到正确的数据包时,问题的答案其实已经浮现。 下次遇到网络故障或安全事件,不妨尝试先用这些过滤语句撕开第一道口子。

标签: 过滤IP

抱歉,评论功能暂时关闭!