游客发表

wireshark采集指定网段

发帖时间:2026-10-17 05:11:36

Wireshark 默认抓取的定网段是经过本机网卡的所有流量,但很多时候我们只关心某个网段的定网段数据——比如排查 192.168.1.0/24 里某台设备为什么老掉线,或者盯着 10.0.0.0/8 里有没有异常外联。定网段直接抓全量再肉眼过滤,定网段数据量能把你逼疯。定网段用对捕获过滤器,定网段事情会简单很多。定网段

先搞清楚一个区别:Wireshark 有两层过滤。定网段一层是定网段捕获过滤器(Capture Filter),在抓包之前就生效,定网段底层用的定网段是 BPF 语法,不匹配的定网段包直接丢掉,不进内存。定网段另一层是定网段显示过滤器(Display Filter),抓完之后在界面上筛。定网段采集指定网段,最好在捕获过滤器里就写好,省得抓了一堆无关流量再慢慢删。

捕获过滤器怎么写网段

BPF 语法里表示网段用 net 关键字。比如只抓 192.168.1.0/24:

net 192.168.1.0/24

注意这里不能写成 net 192.168.1.0 mask 255.255.255.0 虽然也能用,但斜杠写法更干净。Wireshark 的捕获过滤器输入框里直接敲这行就行,点开始,网卡上只放行这个网段的包。

有人会问:那 192.168.1.0/24 到底包含哪些地址?从 192.168.1.0 到 192.168.1.255,共 256 个。但实际可分配给主机的通常是 .1 到 .254。Wireshark 不关心这些,它只做位运算匹配。

几个实际场景的写法

抓两个网段怎么办?用 or 连接:

net 192.168.1.0/24 or net 10.0.0.0/8

只想看某个网段和另一个网段之间的流量,加 and:

net 192.168.1.0/24 and net 172.16.0.0/16

如果只想抓某个网段里发往 80 端口的 HTTP 请求:

net 192.168.1.0/24 and tcp port 80

这里有个细节:net 192.168.1.0/24 会匹配源或目的地址在这个网段里的所有包。如果你只想看“源地址属于该网段”的包,得写成 src net 192.168.1.0/24;同理 dst net 只匹配目的地址。

容易踩的坑

第一个坑:捕获过滤器里的 net 后面跟的网段,如果写成 192.168.1.0/24 没问题,但写成 192.168.1.1/24 会怎样?BPF 会把它当成 192.168.1.0/24 来处理,因为位运算会自动归零主机位。但别依赖这个,老老实实写网络地址。

第二个坑:IPv6 网段。net 关键字对 IPv6 也适用,比如 net 2001:db8::/32。但如果你混用 IPv4 和 IPv6,得写清楚 ip net 或 ip6 net,否则可能报语法错误。

第三个坑:VLAN 环境。如果网卡上带 VLAN tag,捕获过滤器里的 net 可能匹配不到——因为 BPF 看到的包结构里多了 4 字节 VLAN 头。这时候要么在网卡属性里关掉 VLAN offload,要么用 vlan and net 192.168.1.0/24 试试。

抓完之后的显示过滤器

万一忘了设捕获过滤器,或者中途想改条件,显示过滤器里写 ip.addr == 192.168.1.0/24 也能筛。但注意显示过滤器语法不同,网段要写成 CIDR 形式,且必须用 ip.addr 或 ip.src/ip.dst。比如:

ip.addr == 192.168.1.0/24

这行会显示所有源或目的 IP 在 192.168.1.0/24 里的包。但数据已经抓上来了,内存和磁盘该占还是占。所以能提前过滤就别偷懒。

我自己的习惯是:只要目标明确是某个网段,一定在捕获过滤器里写死 net x.x.x.x/y。有一次帮人查 10.10.0.0/16 里的广播风暴,没设捕获过滤器,抓了 30 秒,文件 2.3 GB,Wireshark 直接卡死。后来改成 net 10.10.0.0/16 and not port 22,同样 30 秒,文件 40 MB,流畅得很。这个教训值得记住。

    热门排行

    友情链接