台州企业网站东莞找工作求职招聘
tcpdump是一个强大的命令行工具,用于捕获和分析TCP、UDP、ICMP等协议的网络流量。
功能与用途
- 捕获网络流量:tcpdump可以捕获和显示来自本地计算机或通过网络传输的数据包,提供有关数据包的详细信息,如源和目的IP地址、端口号、协议类型、数据长度等。
 - 分析数据包:通过捕获的数据包,tcpdump可以帮助用户分析网络问题,如延迟、丢包、重传等,对于网络调试、安全审计和性能优化等方面非常有用。
 - 过滤功能:tcpdump支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助用户去掉无用的信息,专注于分析特定类型的流量。
 
软件安装
yum install -y tcpdump         #centos系统
apt-get install -y tcpdump     #ubuntu系统 
语法格式及常用选项
tcpdump[ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen] [ -T 类型 ] [ -w 文件名 ] [表达式 ] 
文件操作参数
|   参数  |   描述  | 
|   -nn  |   直接以IP及port号码显示,而非显示主机名与服务名称  | 
|   -w  |   将监听所得到的数据包内容存储下来,输出结果至文件  | 
|   -W  |   指定输出文件的最大数量,到达后会重新覆写第1个文件  | 
|   -r  |   读取一个抓包文件  | 
|   -C  |   限制输入文件的大小,超出以后后缀加1等数字的形式递增,注意单位是1000000字节  | 
|   -G  |   指定每隔N秒就重新输出至新文件,注意-w参数应该基于strftime参数指定文件名  | 
监听及停止条件参数
|   参数  |   描述  | 
|   -D  |   列举所有网卡设备  | 
|   -i  |   后面接要监听的网络接口设备,例如eth0、lo、ppp0等的界面  | 
|   -c  |   监听的数据包数,如果没有这个参数,tcpdump会持续不断监听  | 
|   -s  |   指定每条报文的最大字节数,默认是262144字节,可以设置大小  | 
|   –time-stamp-precision  |   制定捕获时的时间精度,默认是毫秒级micro,可选选择纳秒nano  | 
输出时间戳格式参数
|   参数  |   描述  | 
|   -t  |   不显示时间戳  | 
|   -tt  |   自1970年1月1日0点至今的秒数  | 
|   -ttt  |   显示邻近两行报文间经过的秒数  | 
|   -tttt  |   自第一个监听的报文起经历的秒数  | 
分析信息详情参数据
|   参数  |   描述  | 
|   -e  |   使用数据链路层(OSI第二层)的MAC数据包数据来显示  | 
|   -q  |   仅列出较为简单的数据包信息,每一行的内容比较精简  | 
|   -v  |   显示网络层头部更多的信息,如TTL、id等  | 
|   -n  |   显示IP地址、数字端口代替hostname等  | 
|   -S TCP  |   信息以绝对序列号代替相对序列号  | 
|   -A  |   数据包的内容以ASCII格式显示,通常用来监听WWW网页数据包数据  | 
|   -x  |   以16进制方式显示报文内容,不显示数据链路层  | 
|   -xx  |   以16进制方式显示报文内容,显示数据链路层  | 
|   -X  |   可以列出十六进制(hex)以及ASCII的数据包内容,不显示数据链路层  | 
|   -XX  |   可以列出十六进制(hex)以及ASCII的数据包内容,显示数据链路层  | 
参考例子
1、查看本机全部网卡信息
如果我们想快速查看本机全部网卡设备信息,使用tcpdump代替ifconfig会更加高效,包括网桥设备(br0、docker0)、虚拟机网卡(virbr0)、蓝牙网卡(bluetooth0)、usb总线接口(usbmon1、usbmon2)、本机网卡(ens33)、回环地址(lo)等常见设备信息,系统对查询出的全部网卡接口设备进行编号。
tcpdump -D
2、监听指定网卡的数据包信息
监听ens33网卡上的全部网络数据包,需要显示IP及PORT号码,持续收到6条数据包以后自动停止
tcpdump -i ens33 -nn -c 6
3、将监听的数据包数据保存至文件
使用tcpdump监听经过ens33网卡的数据包,将数据包每隔3秒时长写入一个特定格式文件(文件生成格式定义为def%M-%S),并且读取其中一个生成文件的内容
tcpdump -i ens33 -G 3 -w def%M-%S
ll def*
tcpdump -r def04-11
tcpdump条件表达式详解
主机过滤
host、src host、dst host:设置主机、来源主机、目的主机作为过滤条件,
例如:tcpdump -nn host 192.168.31.101 代表过滤指定主机IP地址的网络数据包。
网络过滤
net、src net、dst net: 设置网段、来源网段、目的网段作为过滤条件,
例如:tcpdump net -nn 192.168.0.0 代表过滤指定网段的网络数据包
端口过滤
port、src port、dst port、portrange:设置端口、来源端口、目的端口、端口范围作为过滤条件,
例如:tcpdump -nn dst port 80 代表过滤从目的端口80发来的网络数据包
协议过滤
可以指定网络协议类型,包括ether、fddi、tr、wlan、ip、ip6、arp、rarp、tcp、udp、icmp、igmp、icmp、igrp、pim、ah、esp、vrrp等,
例如:tcpdump -nn icmp or tcp 代表过滤icmp协议或者tcp协议数据包。
逻辑表达式过滤
and(&&)、or(||)、not(!): 分别代表并且、或者、非逻辑运算,
例如:tcpdump ‘src host 192.168.31.101 and dst port 8080’ 代表监听源IP是192.168.31.101主机发送给目的端口8080的所有数据包。
特定状态过滤
tcp[tcpflas]: 按照tcp指定状态标志位进行过滤,
例如: tcpdump -i eth0 -nn ‘tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack’ 代表希望同时捕获syn类型和ack类型的数据包
综合
如何使用tcpdump命令实现如下监控目标:1.监听来自ens33网卡数据,通信协议为port 22,目标数据包来源为192.168.31.101的数据包,请给出正确答案。
tcpdump -i eth0 -nn ‘port 22 and src 192.168.1.101’
