tcpdump 可直接抓指定网段流量,核心是用 net 关键字写 BPF 表达式,如 sudo tcpdump -i eth0 net 192.168.1.0/24;支持 src net 或 dst net 限定方向,配合 -G、-c、-W 实现轮转保存,并可叠加 port、not port 等条件精细化过滤。

直接用 tcpdump 抓指定网段的流量,核心是写对 BPF 过滤表达式,并配合合理参数控制输出。不需要额外脚本或中间工具,原生命令就能完成批量抓取任务。
用 net 关键字精准匹配整个网段
这是最简洁、最常用的方式。比如要抓 192.168.1.0/24 所有进出流量:
sudo tcpdump -i eth0 net 192.168.1.0/24- 该表达式自动匹配源地址或目的地址落在该网段内的所有包(含 ARP、ICMP、TCP、UDP 等)
- 支持 CIDR(如
/24)和传统子网掩码写法(如net 192.168.1.0 mask 255.255.255.0),推荐用 CIDR
限定方向:只抓源或只抓目的流量
若只需分析某一方行为(例如排查内网主机对外发起的异常连接),可进一步缩小范围:
- 只抓源地址属于该网段:
sudo tcpdump -i eth0 src net 192.168.1.0/24 - 只抓目的地址属于该网段:
sudo tcpdump -i eth0 dst net 192.168.1.0/24 - 注意:不能写成
src 192.168.1.0/24—— 缺少net关键字会导致语法错误
批量保存为多个文件(按时间或数量轮转)
长时间抓包易导致单文件过大,可用内置轮转机制实现“批量”效果:
- 按时间轮转(每小时一个文件):
sudo tcpdump -i eth0 -G 3600 -w "capture_%Y-%m-%d_%H.pcap" net 192.168.1.0/24 - 按数量轮转(每 1000 个包一个文件):
sudo tcpdump -i eth0 -c 1000 -W 10 -w "batch_%d.pcap" net 192.168.1.0/24(最多保留 10 个文件) - 加
-s 0确保捕获完整数据包,避免截断影响后续分析
结合其他条件做精细化批量过滤
生产环境中常需叠加协议、端口等条件,避免噪音干扰:
- 只抓该网段的 HTTP 流量:
sudo tcpdump -i eth0 net 192.168.1.0/24 and port 80 - 排除 DNS 查询(减少干扰):
sudo tcpdump -i eth0 net 192.168.1.0/24 and not port 53 - 同时限定源和目的都在该网段(纯内网通信):
sudo tcpdump -i eth0 src net 192.168.1.0/24 and dst net 192.168.1.0/24

















