Linux下如何抓指定IP的包

2 02 2 年,我在某个城市的电脑前,对着屏幕,当时也懵,不知道怎么用tcpdump。
后来,我查阅了《Linux就该这么学》这本书,里面详细介绍了tcpdump。
我试着输入了那条命令:tcpdump-vv-iethN-s1 02 4 0-w/root/abc.caphostip。
我一看,这命令里头,ethN,我当时想,这网卡名儿怎么这么复杂,我后来才反应过来,原来这表示你要抓包的网卡,比如我的电脑是eth0。
然后-s参数,我一开始以为这数字越小越好,后来才知道,这代表数据链路层头部长度,1 02 4 0是个例子。
我那时候想,这数字太大了吧,可能我偏激了。
然后-w参数,我指定了保存抓包文件的位置,就是那个/root/abc.cap。
再然后,hostip,我输入了需要抓取的IP地址。
我一看,这命令竟然能抓取所有发送到或来自指定IP地址的数据包,我当时心里那个激动啊。
后来,我学会了怎么过滤数据包,怎么监控网络流量,这对我排查故障,分析网络安全非常有帮助。
总之,tcpdump,这工具,强大,灵活,我在Linux系统里头,用它分析网络行为,感觉就像拥有了透视眼一样。

dumpcap在Linux中如何使用

Dumpcap是Wireshark命令行工具,Linux系统用apt装。

Debian/Ubuntu装Wireshark: sudo apt update sudo apt install wireshark
Dumpcap通常随Wireshark装,没装用: sudo apt install tcpdump
指定接口抓包: sudo dumpcap -i eth0
保存到文件: sudo dumpcap -i eth0 -w capture.pcap
抓1 00个包: sudo dumpcap -i eth0 -w capture.pcap -c 1 00
抓端口8 0流量: sudo dumpcap -i eth0 -w capture.pcap -f "port 8 0"
实时显示: sudo dumpcap -i eth0 -w capture.pcap -l
读pcap文件: sudo dumpcap -r capture.pcap
禁用解析: sudo dumpcap -n -i eth0
详细模式: sudo dumpcap -v -i eth0
抓TCP 8 0流量: sudo dumpcap -i eth0 -w http_traffic.pcap -f "tcp port 8 0"
必须root权限,用sudo。
用户得有权限用目标接口,比如eth0。
大量包快占磁盘,用-c限数量,定期删文件。
BPF语法要标准,错字抓包失败,man pcap-filter看规则。

抓特定IP流量: sudo dumpcap -i eth0 -w filter_ip.pcap -f "host 1 9 2 .1 6 8 .1 .1 "
排除DNS流量: sudo dumpcap -i eth0 -w exclude_dns.pcap -f "not port 5 3 "
组合条件抓包: sudo dumpcap -i eth0 -w complex_filter.pcap -f "(port 8 0) and (host 1 9 2 .1 6 8 .1 .1 00)"
复杂功能参考man dumpcap。