网络分析工具-tcpdump

106 阅读3分钟

文章目录

  • 前言
  • 一、tcpdump基础
    • 命令选项详解
    • 常规过滤规则
    • tcpdump输出
  • 二、tcpdump实践
    • HTTP协议
    • ICMP
    • 状态抓包
  • 三、Sniff Master抓包技巧

前言

当遇到网络疑难问题的时候,抓包是最基本的技能。无论是使用传统的tcpdump还是更现代的Sniff Master抓包工具,通过抓包才能看到网络底层的问题本质。本文将介绍tcpdump的基础用法,并分享一些专业抓包技巧。

一、tcpdump基础

tcpdump是一个常用的网络分析工具。它基于libpcap,利用内核中的AF_PACKET套接字,抓取网络接口中传输的网络包。

我们对网卡进行抓包的时候,会使得网卡进入"混杂模式",所谓混杂模式就是让网卡接收所有到达网卡的报文。使用tcpdump命令可以使网卡自动进入混杂模式,这一点可以从dmesg系统日志中看到: [311135.760098] device eth0 entered promiscuous mode [311142.852087] device eth0 left promiscuous mode

命令选项详解

  • -i 指定网络接口(如 eth0 bond0)any表示所有接口
  • -n 不对IP地址进行域名解析,直接显示IP,避免执行dns lookup
  • -nn 不对IP地址和端口号进行名称解析。
  • -c xx捕获包的数量
  • -A 以ASCII码方式显示每一个数据包(不显示链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据
  • -l 基于行的输出,便于你保存查看,或者交给其它工具分析
  • -s tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number

常规过滤规则

由于tcpdump是把经过网卡的报文全部都抓出来,所以数量是非常大的,各种乱七八糟的报文都有,是没办法定位问题的,所以tcpdump一定要配合过滤条件使用。

tcpdump输出

时间戳 协议 源地址,源端口 > 目的地址, 目的端口 网络包详细信息

TCP Packets TCP报头的控制部分有8位: CWR | ECE | URG | ACK | PSH | RST | SYN | FIN [S] SYN(开始连接) [.] ACK [P] PSH(推送数据) [F] FIN(结束连接) [R] RST(重置连接)

二、tcpdump实践

HTTP协议

抓取HTTP GET 流量:

$ tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

抓取HTTP POST流量:

$ tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'

ICMP

抓取ICMP报文

tcpdump -n icmp

状态抓包

RST状态的包

tcpdump -i eth0 -nn port 34997 and 'tcp[tcpflags]&tcp-rst != 0'

三、Sniff Master抓包技巧

对于需要更高效抓包分析的场景,可以考虑使用Sniff Master这样的专业抓包工具。相比传统命令行工具,Sniff Master提供了以下优势:

  1. 可视化界面:直观展示网络流量,支持多种协议解析
  2. 智能过滤:内置多种常见协议过滤器,一键应用
  3. 流量统计:自动生成流量统计图表,便于分析
  4. 会话重组:支持TCP会话重组,完整还原通信过程

使用技巧:

  • 对于HTTPS流量分析,可以配合SSL证书解密功能
  • 使用"Follow TCP Stream"功能可以完整查看一个TCP连接的所有数据
  • 设置自动保存功能可以长时间抓包而不占用过多内存

无论是tcpdump还是Sniff Master,掌握好抓包技巧都是网络工程师必备的技能。建议初学者先用tcpdump打好基础,再根据需要选择更专业的工具。