温馨提示×

Debian sniffer如何过滤数据包

小樊
42
2026-08-23 21:38:31
栏目: 智能运维

在 Debian 上,“sniffer”通常指 网络抓包/分析工具(如 tcpdumptsharkwireshark 等)。过滤数据包主要通过 捕获过滤器(Capture Filter)显示过滤器(Display Filter) 实现。下面按常用工具说明。


一、tcpdump(命令行最常用)

1️⃣ 基本用法

sudo apt install tcpdump
sudo tcpdump -i eth0

2️⃣ 使用 BPF 捕获过滤器(抓包前过滤)

按 IP 过滤

sudo tcpdump -i eth0 host 192.168.1.10

按网段

sudo tcpdump -i eth0 net 192.168.1.0/24

按端口

sudo tcpdump -i eth0 port 80
sudo tcpdump -i eth0 portrange 80-90

按协议

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

组合条件

sudo tcpdump -i eth0 tcp port 443 and host 10.0.0.5
sudo tcpdump -i eth0 not arp and not icmp

写入文件

sudo tcpdump -i eth0 -w capture.pcap

二、Wireshark(图形界面)

1️⃣ 安装

sudo apt install wireshark
sudo usermod -aG wireshark $USER
# 重新登录

2️⃣ 捕获过滤器(Capture Filter)

开始抓包前 输入,语法类似 tcpdump:

  • 只抓 HTTP:
tcp port 80
  • 只抓某 IP:
host 192.168.1.10

⚠️ 捕获过滤器不能做复杂协议分析。


3️⃣ 显示过滤器(Display Filter)

抓包后使用,功能更强:

按 IP

ip.addr == 192.168.1.10

按端口

tcp.port == 443

按协议

http
dns
tls

组合条件

http and ip.src == 192.168.1.10
tcp.flags.syn == 1 and tcp.flags.ack == 0

三、tshark(Wireshark 命令行版)

sudo apt install tshark

捕获过滤

sudo tshark -i eth0 -f "tcp port 80"

显示过滤

sudo tshark -i eth0 -Y "http.request"

输出到文件

sudo tshark -i eth0 -w out.pcap

四、常见过滤对照表

需求 tcpdump / tshark -f Wireshark 显示过滤器
指定 IP host 1.1.1.1 ip.addr == 1.1.1.1
TCP 80 tcp port 80 tcp.port == 80
DNS udp port 53 dns
SYN 包 tcp[tcpflags] & tcp-syn != 0 tcp.flags.syn == 1

五、注意事项(很重要)

需要 root 权限
✅ 云服务器/虚拟化环境可能需要开启 混杂模式
✅ 生产环境抓包注意:

  • 磁盘空间
  • 性能影响
  • 隐私和合规

如果你愿意,可以告诉我:

  • 用的是 云服务器 / 本地 Debian / Docker
  • 想抓的是 HTTP / HTTPS / DNS / TCP 异常
  • 实时监控 还是 事后分析

我可以给你更精确的过滤命令。

0