1. 离线安装
下载安装包 https://pkgs.org/search/?q=libpcap
#安装包
libpcap-1.5.3-12.el7.x86_64.rpm
libpcap-devel-1.5.3-12.el7.x86_64.rpm
tcpdump-4.9.2-4.el7_7.1.x86_64.rpm
#顺序安装
rpm -ivh libpcap-1.5.3-12.el7.x86_64.rpm
rpm -ivh libpcap-devel-1.5.3-12.el7.x86_64.rpm
rpm -ivh tcpdump-4.9.2-4.el7_7.1.x86_64.rpm
外网环境下使用yum install tcpdump 进行安装
2.使用
命令行格式:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ]
常用的参数:
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-c 在收到指定的包的数目后,tcpdump就会停止;
-i 指定监听的网络接口;(如果没有指定可能在默认网卡上监听,需要指定绑定了特定IP的网卡)
-w 直接将包写入文件中,并不分析和打印出来;
-s 指定记录package的大小,常见 -s 0 ,代表最大值65535,一半linux传输最小单元MTU为1500,足够了
-X 直接输出package data数据,默认不设置,只能通过-w指定文件进行输出
常用表达式:
关于类型的关键字,主要包括host,net,port
传输方向的关键字,主要包括src , dst ,dst or src, dst and src
协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型
逻辑运算,取非运算是 ‘not ’ ‘! ‘, 与运算是’and’,’&&’;或运算 是’or’ ,’||’
其他重要的关键字如下:gateway, broadcast,less,greater
ype:指定ID的类型。
可以给定的值有host/net/port/portrange。例如"host foo",“net 128.3”,“port 20”,“portrange 6000-6008”。默认的type为host。
dir:指定ID的方向。
可以给定的值包括src/dst/src or dst/src and dst,默认为src or dst。例如,"src foo"表示源主机为foo的数据包,"dst net 128.3"表示目标网络为128.3的数据包,"src or dst port 22"表示源或目的端口为22的数据包。
proto:通过给定协议限定匹配的数据包类型。
常用的协议有tcp/udp/arp/ip/ether/icmp等,若未给定协议类型,则匹配所有可能的类型。例如"tcp port 21",“udp portrange 7000-7009”。
所以,一个基本的表达式单元格式为"proto dir type ID"
监听指定的主机
# 监听指定的主机192.168.2.7,接收到的包和发送的包
tcpdump -i ens33 -nn 'host 192.168.2.7'
# 抓取192.168.2.7主机发送的包
tcpdump -i ens33 -nn 'src host 192.168.2.7'
#抓取192.168.2.7主机接收的包
tcpdump -i ens33 -nn 'dst host 192.168.2.7
监听指定端口
# 用来监听主机的80端口收到和发送的所有数据包,结合-A参数,在web开发中,真是非常有用
tcpdump -i ens33 -nnA 'port 80'
监听指定主机和端口
# 监听192.168.2.7主机通过80端口发送的数据包
tcpdump -i ens33 -nnA 'port 80 and src host 192.168.2.7'
监听除某个端口外的其它端口
tcpdump -i ens33 -nnA '!port 22'