当前位置: 首页 > news >正文

linux 抓包工具tcpdump使用小记(使用时注意权限和系统资源)

tcpdump 是一款强大的网络数据包捕获和分析工具,常用于网络故障排查、协议分析、安全审计等场景。以下是其核心功能、使用方法及常见场景的详细介绍:

   1. 基本功能

  • 数据包捕获:监听网络接口,实时捕获传输的数据包。
  • 过滤规则:基于协议、IP 地址、端口号等条件精确筛选数据包。
  • 输出格式:支持多种输出格式(ASCII、十六进制),可保存到文件。
  • 协议支持:几乎支持所有网络协议(TCP、UDP、ICMP、HTTP 等)

    2. 常用命令参数

    bash

    tcpdump [选项] [过滤表达式]
    
     
    选项功能示例
    -i <接口>指定监听的网络接口(如 eth0wlan0),-i any 表示所有接口。

    tcpdump -i eth0:监听以太网接口 eth0 的数据包;

    tcpdump -i any:监听所有网络接口的数据包。

    -n不解析 IP 地址和端口号的域名,直接显示数字(提升性能)。tcpdump -n:在输出中,IP 地址和端口号以数字形式显示,例如 192.168.1.1:80 而非 example.com:http
    -nn同时不解析域名和端口名(如 80 而非 http)。tcpdump -nn:输出中不仅 IP 地址以数字显示,端口也以数字形式呈现,如 tcp dst port 80 显示为具体数字 80,而不是 http
    -s <字节数>设置捕获数据包的最大长度,-s 0 表示捕获完整数据包。tcpdump -s 68:每个数据包最多捕获 68 字节;tcpdump -s 0:尝试捕获每个数据包的全部内容。
    -c <数量>捕获指定数量的数据包后停止。tcpdump -c 10:捕获 10 个数据包后,tcpdump 工具停止运行。
    -w <文件名>将数据包保存到文件(.pcap 格式)。tcpdump -w capture.pcap:将捕获的数据包保存到名为 capture.pcap 的文件中,后续可使用 tcpdump -r 或其他工具(如 Wireshark)进行分析。
    -r <文件名>从文件中读取数据包进行分析。tcpdump -r saved_traffic.pcap:读取名为 saved_traffic.pcap 的文件,并对其中的数据包进行分析和显示。
    -X以 ASCII 和十六进制形式显示数据包内容(适合分析协议细节)。tcpdump -X:在输出中,除了显示数据包的协议信息外,还会展示数据包的 ASCII 和十六进制内容,帮助分析协议数据,如 HTTP 头部信息等。
    -vvv显示详细的协议信息(如 TCP 标志位、TTL 值)。tcpdump -vvv:输出中会包含更详细的协议信息,如 TCP 连接的标志位(SYN、ACK、FIN 等)、IP 数据包的生存时间(TTL)值等,便于深入分析网络连接状态。
    `--direction={inoutinout}`只捕获入站、出站或所有方向的数据包。tcpdump --direction=in:仅捕获进入指定网络接口的数据包;tcpdump --direction=out:仅捕获从指定网络接口发出的数据包;tcpdump --direction=inout:捕获进出指定网络接口的所有数据包。
  • 3. 过滤表达式

    过滤表达式用于精确筛选感兴趣的数据包,支持三种类型的限定词:

    (1) 类型限定词
    类型示例说明
    hosthost 192.168.1.1过滤指定主机的数据包。
    netnet 192.168.1.0/24过滤指定网络段的数据包。
    portport 80过滤指定端口的数据包。
    portrangeportrange 8000-8100过滤指定端口范围的数据包。
    (2) 方向限定词
    方向示例说明
    srcsrc 192.168.1.1过滤源地址为指定值的数据包。
    dstdst port 443过滤目标端口为指定值的数据包。
    (3) 协议限定词
    协议示例说明
    tcptcp and port 80过滤 TCP 协议且端口为 80 的数据包。
    udpudp src port 53过滤 UDP 协议且源端口为 53 的数据包。
    icmpicmp过滤 ICMP 协议的数据包(如 ping 请求)。

    4. 常见使用场景

    (1) 监控特定主机的 HTTP 流量

    bash

    tcpdump -i eth0 -nn -s 0 'host 192.168.1.100 and (port 80 or port 443)'
    
  • 说明:监听eth0接口,捕获与192.168.1.100主机的 HTTP/HTTPS 通信。
  • (2) 捕获 DNS 查询请求

    bash

    tcpdump -i any -nn -s 0 'udp port 53'
    
  • 说明:捕获所有接口上的 UDP 53 端口(DNS)流量。
  • (3) 保存数据包到文件

    bash

    tcpdump -i wlan0 -w wifi_traffic.pcap
    
  • 说明:将wlan0接口的所有流量保存到wifi_traffic.pcap文件。
  • (4) 分析 TCP 连接建立过程(三次握手)

    bash

    tcpdump -i eth0 -nn -vvv -s 0 'tcp port 80 and host 192.168.1.1'
    
  • 说明:详细显示与192.168.1.1的 TCP 80 端口通信过程(SYN、SYN+ACK、ACK)。
  • (5) 统计特定 IP 的流量

    bash

    tcpdump -i eth0 -nn 'host 192.168.1.5' | wc -l
    
  • 说明:统计与192.168.1.5通信的数据包数量。
  • 5. 高级技巧

    (1) 组合过滤条件

    使用逻辑运算符组合多个条件:

     

    bash

    # 捕获源IP为192.168.1.1且目标端口不是22的TCP数据包
    tcpdump -i eth0 'src 192.168.1.1 and tcp and not dst port 22'
    
    (2) 实时分析 HTTP 请求内容

    bash

    tcpdump -i eth0 -A 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
    
  • 说明-A 选项以 ASCII 显示数据包内容,过滤条件确保只显示包含数据的 HTTP 包。
  • (3) 按时间范围捕获

    bash

    # 捕获10分钟内的数据包
    tcpdump -i eth0 -w capture.pcap -G 600 -W 1
    
  • 说明-G 600 每 10 分钟(600 秒)生成一个新文件,-W 1 只保留最新的 1 个文件。
  • (4) 与 Wireshark 协同

    将 tcpdump 捕获的文件用 Wireshark 打开进行可视化分析:

     

    bash

    # 捕获并保存到文件
    tcpdump -i eth0 -w analysis.pcap# 用Wireshark打开(需预先安装)
    wireshark analysis.pcap &
    

    6. 注意事项

  • 权限要求:需要 root 权限才能捕获网络数据包。
  • 性能影响:长时间捕获可能占用大量磁盘空间或系统资源。
  • 若需要抓取本地进程发送的UDP包数据,可指定lo 接口(本地回环接口)tcpdump -i lo udp
  • 隐私问题:捕获的数据包可能包含敏感信息(如密码、会话 ID)。
  • 大文件处理:对于大型 pcap 文件,可使用editcap分割或过滤:

    bash

    # 提取包含特定IP的数据包到新文件
    editcap -F pcap -i 'ip.addr == 192.168.1.1' input.pcap output.pcap

相关文章:

  • OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——mqtt库
  • 时间序列预测建模的完整流程以及数据分析【学习记录】
  • 从零开始了解数据采集(二十七)——什么IIOT平台
  • 源码分析之Leaflet中GeoJSON模块
  • 信息学奥赛一本通 1535:【例 1】数列操作
  • 信奥赛-刷题笔记-队列篇-T2-P1540机器翻译和P2952Cow Line S
  • 品种亮相!贵州金桥药业筑牢市场竞争护城河
  • MATLAB语音情感识别神经网络方法
  • 从零开始:使用 Vue-ECharts 实现数据可视化图表功能
  • INT202 Complexity of Algroithms 算法的复杂度 Pt.7 NP-Completeness NP完全性
  • SwarmUI 基于.NET开发的开源AI图像生成WEB用户界面系统
  • 市政务服务技能竞赛流程策划方案
  • 【计算机视觉】OpenCV实战项目:基于Tesseract与OpenCV的字符识别系统深度解析
  • 第十七章:Llama Factory 深度剖析:易用性背后的微调框架设计
  • flutter Stream 有哪两种订阅模式。
  • 工作常用的git命令
  • Node.js中的洋葱模型
  • C++中的volatile有什么用?
  • PostgreSQL 恢复信息函数
  • flea-cache使用之Redis哨兵模式接入
  • 受美关税影响,本田预计新财年净利下降七成,并推迟加拿大建厂计划
  • 香港根据《维护国家安全条例》订立附属法例
  • 第四届长三角国际应急博览会开幕,超3000件前沿装备技术亮相
  • 演员黄晓明、金世佳进入上海戏剧学院2025年博士研究生复试名单
  • 多家中小银行存款利率迈入“1时代”
  • 刘国中:持续加强护士队伍建设,更好保障人民身体健康