本文目录导读:

使用 tcpdump 过滤指定端口非常简单,最常用的参数是 port。
基本语法
# 抓取 80 端口(HTTP)的所有流量 tcpdump port 80 # 抓取 22 端口(SSH)的流量 tcpdump port 22
常见场景详解
只抓取源端口或目的端口
如果你只想抓取从某个端口发出的包,或者发往某个端口的包,加上 src 或 dst:
# 抓取源端口是 80 的包(从服务器发出的响应) tcpdump src port 80 # 抓取目的端口是 80 的包(发往服务器的请求) tcpdump dst port 80
抓取多个端口
使用 or 或 组合:
# 同时抓取 80 和 443 端口 tcpdump port 80 or port 443 # 或者简写为: tcpdump port 80 or 443 # 抓取常见服务端口范围 tcpdump port 22 or port 443 or port 3306
抓取端口范围
使用 portrange(注意不是 ports):
# 抓取 8000 到 8100 之间的所有端口 tcpdump portrange 8000-8100
常用增强选项
单独用 port 可能信息太多,建议加上以下选项:
# -i eth0 指定网卡(避免抓错接口) # -n 不解析域名(更快、更清晰) # -nn 不解析端口名称(显示数字而不是"http") # -v 显示更多详细信息 # 示例:抓取 eth0 网卡上的 80 端口,显示数字端口 sudo tcpdump -i eth0 -nn port 80 # 只显示前 10 个包,然后退出 sudo tcpdump -c 10 -nn port 443
结合 IP 过滤
更精确地过滤,可以同时指定 IP 和端口:
# 抓取源 IP 为 192.168.1.100,目标端口 443 的包 tcpdump src host 192.168.1.100 and dst port 443 # 抓取从客户端的随机端口发往服务器 3306 的包 tcpdump host 10.0.0.5 and dst port 3306
实战示例:排查 HTTP 问题
# 实时查看发往本机 80 端口的 HTTP 请求内容 sudo tcpdump -i any -nn -A dst port 80 # -A 以 ASCII 格式显示包内容(可以看到 HTTP 头部) # -i any 监听所有网卡
注意事项
- 大多数情况下需要
sudo或 root 权限。 - 端口过滤是基于传输层(TCP/UDP)的,
port匹配的是 TCP 和 UDP 两种协议,如果需要只抓 TCP,可以加tcp:tcpdump tcp port 443
- 如果需要更复杂的过滤(比如基于数据包内容),可以结合
tcpdump的表达式语法,或改用 Wireshark(图形化)或 tshark(命令行版 Wireshark)。
tcpdump port <端口号> 是最常用的写法,配合 src/dst 和 -nn 选项就能满足大多数日常抓包需求。
标签: tcpdump端口过滤
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。