Debian 上设置抓包过滤器的实用指南
工具选择与说明
- Debian 并没有一个官方名为 “Debian Sniffer” 的单一工具,常见做法是使用抓包/分析工具(如 tcpdump、Wireshark、或 netsniff-ng 套件)并为其设置过滤器。若你指的是 netsniff-ng 的命令行抓包工具 sniff,可直接在启动参数或配置文件中写入 BPF 过滤表达式;若你使用 tcpdump/Wireshark,则分别使用 BPF 与 显示过滤 语法。
使用 sniff 设置过滤器(netsniff-ng 套件)
- 配置文件方式:编辑 /etc/netsniff/netsniff.conf,在参数中写入 BPF 表达式,例如:
- FILTER=“tcp and src host 192.168.1.100”
- 可同时设置接口(如 INTERFACE=eth0)与模式(如 MODE=promisc)
- 命令行方式:直接在启动命令后追加过滤表达式,例如:
- sudo sniff -i eth0 ‘tcp and src host 192.168.1.100 and port 80’
- 说明:捕获通常需要 root 权限;上述配置文件路径与参数名以 netsniff-ng 的默认布局为准。
使用 tcpdump 设置过滤器(BPF 语法)
- 基本语法:sudo tcpdump -i <接口> <BPF表达式>
- 常用示例:
- 按主机:sudo tcpdump -i eth0 host 192.168.1.1
- 按源/目的:sudo tcpdump -i eth0 src host 192.168.1.1;sudo tcpdump -i eth0 dst host 192.168.1.1
- 按端口/范围:sudo tcpdump -i eth0 port 80;sudo tcpdump -i eth0 tcp portrange 1-1024
- 按协议:sudo tcpdump -i eth0 tcp;sudo tcpdump -i eth0 udp;sudo tcpdump -i eth0 icmp
- 组合条件:sudo tcpdump -i eth0 ‘tcp and port 80 and (src host 192.168.1.1 or src host 192.168.1.2)’
- 写入文件与读取:sudo tcpdump -i eth0 -w capture.pcap;sudo tcpdump -r capture.pcap -nn
- 提示:使用 -n/-nn 禁止解析主机名/端口名,输出更干净;复杂条件请使用引号与括号。
使用 Wireshark 设置显示过滤器
- 显示过滤器语法与 BPF 不同,常见用法:
- 按 IP:ip.src == 192.168.1.1;ip.dst == 192.168.1.1;ip.addr == 192.168.1.1
- 按端口:tcp.port == 80;udp.port == 53
- 按协议:直接输入 http、dns、tls 等
- 说明:显示过滤器仅影响图形界面中显示的内容;若需减少捕获量,仍应在抓包接口上使用 捕获过滤器(BPF)。
实用建议与注意事项
- 选择网卡:用 tcpdump -D 列出可用接口,抓包时明确指定 -i <接口>。
- 减少噪声:远程抓包时排除 SSH 流量,例如:sudo tcpdump -i eth0 ‘not tcp port 22’ -nn
- 保存与回放:抓到文件后用 -r 读取分析,便于离线排查。
- 权限与合规:抓包需要 root 或具备 CAP_NET_RAW 能力;请确保对目标网络具备合法授权,避免侵犯隐私或违反法规。