温馨提示×

ubuntu sniffer怎么过滤包

小樊
46
2026-10-24 02:43:40
栏目: 智能运维

在 Ubuntu 上做“包过滤 / 抓包过滤”通常分两种情况:
1)抓包时过滤(capture filter)
2)抓包后过滤(display filter)

下面以最常见的工具 tcpdump 和 Wireshark / tshark 来说明。


一、tcpdump(命令行抓包 + 过滤)

1️⃣ 基本抓包

sudo tcpdump -i eth0

2️⃣ 抓包时过滤(BPF 语法)

tcpdump 使用的是 BPF(Berkeley Packet Filter)

按 IP 过滤

# 只抓某个 IP
sudo tcpdump -i eth0 host 192.168.1.10

# 源 IP
sudo tcpdump -i eth0 src 192.168.1.10

# 目的 IP
sudo tcpdump -i eth0 dst 192.168.1.10

按端口过滤

# 端口 80
sudo tcpdump -i eth0 port 80

# 源端口
sudo tcpdump -i eth0 src port 443

# 目的端口
sudo tcpdump -i eth0 dst port 22

按协议过滤

sudo tcpdump -i eth0 icmp
sudo tcpdump -i eth0 tcp
sudo tcpdump -i eth0 udp

组合条件

# TCP 且端口 443
sudo tcpdump -i eth0 tcp port 443

# IP 且端口
sudo tcpdump -i eth0 host 192.168.1.10 and port 80

# 排除 SSH
sudo tcpdump -i eth0 not port 22

保存到文件

sudo tcpdump -i eth0 -w capture.pcap

二、Wireshark / tshark(图形 + 命令行)

1️⃣ tshark(终端版 Wireshark)

抓包时过滤

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

抓包后过滤(显示过滤)

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

2️⃣ Wireshark 显示过滤器(Display Filter)

在 Wireshark 顶部输入框使用:

ip.addr == 192.168.1.10
tcp.port == 443
http
dns
tcp.flags.syn == 1

三、用 iptables / nftables 做“软过滤”(不算 sniffer)

如果你只是想丢弃或观察特定包:

sudo iptables -A INPUT -p tcp --dport 80 -j LOG

四、常见实用示例

✅ 只抓 HTTP 请求

sudo tcpdump -i eth0 tcp port 80 -A

✅ 抓 HTTPS 握手

sudo tcpdump -i eth0 tcp port 443 and 'tcp[tcpflags] & tcp-syn != 0'

✅ 抓 ARP

sudo tcpdump -i eth0 arp

如果你能告诉我:

  • 用的是 tcpdump / Wireshark / 其他工具
  • 想过滤什么(IP、端口、协议、应用层)

我可以给你精确的一条命令。

0 踩