温馨提示×

ubuntu sniffer如何过滤

小樊
51
2026-10-21 01:53:31
栏目: 智能运维

在 Ubuntu 上做“抓包 / sniffer”通常指用 tcpdump、tshark(Wireshark 命令行) 或 Wireshark GUI。下面按常见场景给你一份过滤方法速查。


一、tcpdump 过滤(最常用)

1️⃣ 按网卡

sudo tcpdump -i eth0

所有网卡:

sudo tcpdump -i any

2️⃣ 按 IP(host)

# 只抓和 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

3️⃣ 按端口(port)

# 端口 80
sudo tcpdump port 80

# 源端口
sudo tcpdump src port 443

# 目的端口
sudo tcpdump dst port 22

4️⃣ 按协议

sudo tcpdump tcp
sudo tcpdump udp
sudo tcpdump icmp
sudo tcpdump arp

5️⃣ 多条件组合(and / or / not)

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

6️⃣ 抓包数量 & 保存

# 只抓 100 个包
sudo tcpdump -c 100

# 保存到文件
sudo tcpdump -w capture.pcap

# 读取文件
tcpdump -r capture.pcap

二、tshark(Wireshark 命令行)

抓包时过滤(抓之前)

sudo tshark -i eth0 -f "host 192.168.1.10 and tcp port 443"

读包时过滤(抓之后)

tshark -r capture.pcap -Y "http.request"

三、Wireshark 显示过滤(GUI)

在 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

五、如果你说的“sniffer”是特定工具

比如:

  • iftop
  • nload
  • ngrep
  • wireshark
  • 自写 Python / scapy

可以告诉我 你用的是什么 sniffer,我可以给更针对性的过滤语法。

需要我帮你写一条针对你当前问题的过滤命令吗?

0 踩