在 Ubuntu 上做“抓包 / sniffer”通常指用 tcpdump、tshark(Wireshark 命令行) 或 Wireshark GUI。下面按常见场景给你一份过滤方法速查。
sudo tcpdump -i eth0
所有网卡:
sudo tcpdump -i any
# 只抓和 192.168.1.10 有关的包
sudo tcpdump host 192.168.1.10
# 源 IP
sudo tcpdump src host 192.168.1.10
# 目的 IP
sudo tcpdump dst host 192.168.1.10
# 端口 80
sudo tcpdump port 80
# 源端口
sudo tcpdump src port 443
# 目的端口
sudo tcpdump dst port 22
sudo tcpdump tcp
sudo tcpdump udp
sudo tcpdump icmp
sudo tcpdump arp
sudo tcpdump host 192.168.1.10 and port 443
sudo tcpdump src 192.168.1.10 and not port 22
sudo tcpdump port 80 or port 443
# 只抓 100 个包
sudo tcpdump -c 100
# 保存到文件
sudo tcpdump -w capture.pcap
# 读取文件
tcpdump -r capture.pcap
sudo tshark -i eth0 -f "host 192.168.1.10 and tcp port 443"
tshark -r capture.pcap -Y "http.request"
在 Wireshark 顶部 Filter 框中输入:
ip.addr == 192.168.1.10
tcp.port == 443
http.request.method == "GET"
dns.qry.name contains "google"
常用:
tcp.flags.syn == 1
tcp.analysis.retransmission
icmp
udp
✅ 只看 HTTP:
sudo tcpdump -A -s0 port 80
✅ 只看 HTTPS 握手:
sudo tcpdump -i any port 443 and tcp[tcpflags] & tcp-syn != 0
✅ 排查 SSH 卡顿:
sudo tcpdump -i any port 22
比如:
iftopnloadngrepwireshark可以告诉我 你用的是什么 sniffer,我可以给更针对性的过滤语法。
需要我帮你写一条针对你当前问题的过滤命令吗?