Ubuntu 下 Sniffer 的设置指南
一、先明确你的目标与工具选择
- 抓有线/本地回环流量:优先用tcpdump(轻量、稳定)或Wireshark(图形界面、分析强)。
- 抓Wi‑Fi 管理/控制帧或按信道分析:需将网卡切到Monitor 模式,再配合抓包工具。
- 抓包通常需要管理员权限或对抓包设备做授权(如将用户加入特定组、设置 capabilities 或启用非 root 抓包)。
二、快速上手方案(适合大多数场景)
- 方案A|tcpdump 最小可用配置
- 安装:sudo apt update && sudo apt install -y tcpdump
- 查看网卡:ip a(常见如eth0、ens33、wlp2s0)
- 实时抓包:sudo tcpdump -i eth0 -nn -v
- 保存为文件:sudo tcpdump -i eth0 -w capture.pcap
- 读取文件:tcpdump -r capture.pcap -nn -vv
- 常用过滤:
- 仅 HTTP:port 80
- 某主机:host 192.168.1.100
- 某网段:net 192.168.1.0/24
- 方案B|Wireshark 图形化抓包
- 安装:sudo add-apt-repository universe && sudo apt install -y wireshark
- 安装时选择Yes允许非超级用户抓包;或事后执行:sudo dpkg-reconfigure wireshark-common,再执行:sudo usermod -aG wireshark $USER,并重启或重新登录。
- 启动后在界面选择网卡开始捕获;如需长期非 root 抓包,可设置 capabilities:sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap(仅对 dumpcap 授权,更安全)。
三、Wi‑Fi 802.11 抓包设置(Monitor 模式)
- 查看并准备网卡:ip a(确认无线接口名,如wlp0s20f3)
- 关闭干扰进程并启用监听:
- sudo airmon-ng check kill
- sudo airmon-ng start wlp0s20f3
- 监听接口通常变为wlp0s20f3mon
- 指定信道与带宽(示例):
- 固定到信道 100:sudo airmon-ng start wlp0s20f3 100
- 40 MHz:sudo iw dev wlp0s20f3mon set freq 5500 HT40+
- 80 MHz:sudo iw dev wlp0s20f3mon set freq 5500 80MHz
- 抓包:
- 命令行:sudo tcpdump -i wlp0s20f3mon -nn -vv
- 或 Wireshark:选择wlp0s20f3mon开始捕获
- 结束监听并恢复:sudo airmon-ng stop wlp0s20f3mon
- 提示:进入Monitor 模式后通常无法上网,这是正常现象;抓完务必切回Station 模式。
四、进阶与常见问题
- 权限与安全
- 抓包本质需要访问网卡底层,建议使用sudo或按上文为Wireshark/dumpcap配置wireshark 组或capabilities,避免长期以 root 运行 GUI。
- 混杂模式与接口选择
- 有线抓包如需看到经过本网卡的所有流量,可开启混杂模式(如 ifconfig eth0 promisc);但在很多现代接口/驱动上,抓包库会按需启用,不一定必须手动设置。
- 过滤器语法
- 使用BPF语法:host、net、port、tcp/udp、icmp、vlan、and/or/not 等组合,能显著降低负载、提升分析效率。
- 性能与存储
- 长时间抓包请写入文件并合理设置snaplen(抓取长度),必要时按时间/大小分段;高吞吐场景优先在服务器本机抓包并使用远程分析。
五、合规与安全提示
- 仅在自有网络或取得明确授权的主机上抓包;不要拦截、篡改或注入流量。
- 抓包可能触及隐私与合规要求,请遵守当地法律法规及单位安全策略。