网络流量分析工具(tcpdump)

Linux 作为网路操作系统提供基础网络服务,在很多情况下需要一款能够进网络数据采集和分析的工具。例如:

  • 在服务器受到网络攻击时,需要分析攻击包的格式和内容,以便采取针对性的封锁手段。
  • 在网络应用程序异常崩溃时,需要确认应用程序收发的数据包格式和内容是否符合之前预期的设计规范。
  • 网络应用程序响应变慢时,需要确认是否存在网络传输问题(如丢包或者延迟过大),或者应用程序对于输入处理慢的情况。
  • 用户无法使用网络应用程序时,需要判断是否由路由网络连通性故障所致。
  • 新接入一种非开源软件提供网络服务时,需要研究其网络通信特点的情况。

基于以上场景的需要Linux 提供了tcpdump 网络数据采集工具。

tcpdump 工作原理

网络流量分析工具(tcpdump)_第1张图片

网络通信收发数据,会通过完整的Linux 网络协议栈(Linux Network Stack),由Linux 操作系统完成数据的封装和解封装。以基于TCP 的客户端和服务器程序为例,调用流程如下:
网络流量分析工具(tcpdump)_第2张图片
此时,应用程序只需要对应用层数据进行读写即可,不需要关心TCP/IP及数据链路层的头部封装和解封装。
tcpdump 是依赖libpcap。 libpcap 是使用一种称为设备层的包接口(packet interface on device level)技术。使用这种技术,应用可以直接读写内核驱动层面的数据,不经过Linux Network Stack

tcpdump 可以抓取对象

  • 可以抓取被iptables 在INPUT 链上DROP 掉的数据包,就是访问的数据包都是可以的。
  • 不能抓取被iptables OUTPUT 链上的DROP 掉的数据包。

tcpdump 安装

这个是tcpdump官网,可以自行去找最新的版本下载。

#下载依赖libpcap
 wget http://www.tcpdump.org/release/libpcap-1.9.1.tar.gz
 wget http://www.tcpdump.org/release/tcpdump-4.9.3.tar.gz
 tar zxf libpcap-1.9.1.tar.gz
 cd libpcap-1.9.1
 ./configure
 make
 make install
 tar zxf tcpdump-4.9.3.tar.gz
 cd tcpdump-4.9.3
 ./configure
 make
 make install
##查看是否安装成功
tcpdump --version

tcpdump 的五个参数

完成过后可以通过 tcpdump -h 查看帮助参数有十个但是一般只要5个参数即可满足大部分的工作需求。

  • -i : 指定需要抓包的网卡。如果未指定,tcpdump 会根据搜索道德系统中状态为UP 的最小数字的网卡确定(ifconfig 可以给查询网卡信息),一般情况下为eth0 。使用-i 参数可以有效的减少抓取的数据包的数量,增加针对性。
  • -nnn :禁止tcpdump 展示时把IP、端口等转换为域名、端口对应的知名服务器名称。
  • -s : 指定抓包的大小。 -s 0 指定抓包数据大小为262 144字节。
  • -c :指定抓包数量
  • -w :指定抓包保存到文件,方便分析。

tcpdump 过滤器

  • host a.b.c.d : 指定仅抓取本机和某主机a.b.c.d 的通信信息。
  • tcp port x: 指定抓取TCP 协议目的端口或者端口源为 x 的数据信息。
  • icmp : 指定抓取ICMP协议通信的数据信息
  • ! : 反向匹配。
    以上四种可以通过or 或者 and 进行组合使用。
 # 抓取 默认的网卡 端口号为8080 并且把文件保存到 /opt/tcpdump.pcap 文件中 可以使用Wireshark 分析
 tcpdump -nnn tcp port 8080 -w /opt/tcpdump.pcap

安装 Wireshark

yum install wireshark* -y

分析网络访问

wireshark /opt/tcpdump.pcap

在Windows 安装 Wires hark

https://www.wireshark.org/#download
只需要把刚刚的文件导入即可

网络流量分析工具(tcpdump)_第3张图片
可以看到tcp 握手和挥手的记录,
在这里插入图片描述

你可能感兴趣的:(Linux)