[LINUX]tcpdump命令详解
最后,特别要注意,使用tcpdump命令的时候,建议加上-c命令,因为如果不加任何过滤的话,就会无限制的抓取数据包,直到磁盘存满为止,很可怕的,有些时候我们需要触发抓包的时候,可不用-c,触发完之后停止抓包,就OK了。tcpdump是Linux系统下的一款抓包命令集,工作原理是基于网卡抓取流动在网卡上的数据包。lo //指的是该主机的回环地址(127.0.0.1),一般用来测试网络专用,一般
tcpdump是Linux系统下的一款抓包命令集,工作原理是基于网卡抓取流动在网卡上的数据包。在Linux系统中由于tcpdump命令的简单和强大,我们一般直接使用tcpdump命令来抓取数据包。保存之后,拖下来在wireshark中分析。
怎样判断你的Linux系统中是否有tcpdump呢?很简单输入一下命令:
tcpdump -h
若出现如下信息,则表示安装有tcpdump
如果没有那么得先在Linux安装这个软件了
yum install -y tcpdump
看看tcpdump命令的一些参数说明
tcpdump -D #列出可用于tcpdump抓取数据包的网卡列表
ens33 //表示该服务器的第一块网卡,一般我们tcpdump抓包都使用这块网卡来抓取。可能有eth1,eth2等等 lo //指的是该主机的回环地址(127.0.0.1),一般用来测试网络专用,一般的数据都不通过这块网卡,所以我们用tcpdump抓包的时候也不使用这块网卡。 any //任何网卡接口 nflog //Linux下的网络过滤网卡,一般我们不使用它 nfqueue //Linux网络过滤队列接口,一般不使用它 bluetooth-monitor、bluetooth //蓝牙相关数据回环
看下服务器下有哪些网卡,输入:
ifconfig //不是Windows下的ipconfig
系统有两块网卡ens33和lo,我们使用第一块
使用tcpdump的第一个命令
tcpdump //抓取通过第一个网卡的数据包,并将信息打印在屏幕上实时显示出来
抓取指定网卡的数据包
tcpdump -i ens33 //抓取通过ens33网卡的数据包,信息实时打印在屏幕上。-i表示指定哪个网卡接口,后面跟网卡名字,比如ens33
eth0网卡会话的目的地址很多,只关心并找到和某一个IP地址之间会话的数据
tcpdump -i ens33 host 192.39.45.66 //抓取该网卡和该IP地址会话的数据包,实时打印在屏幕上,host后面跟IP地址或者域名,比如也可以写成host www.baidu.com
只想查看所有192.39.45.66发送给服务器的数据包(我的服务器接收的数据)【src】
tcpdump -i ens33 src host 192.39.45.66 //抓取所有该网卡和该IP之间,收到的数据,src表示服务器收到的数据,如果该参数缺省,默认抓取所有数据
查看服务器网卡eth0发送给192.39.45.66的所有数据包(我的服务器发出的数据)【dst】
tcpdump -i ens33 dst host 192.39.45.66 //抓取所有该网卡和该IP之间,收到的数据,dst表示服务器发出去的数据,如果该参数缺省,默认抓取所有数据
想查看这个网卡下,某个端口号和目的IP会话的数据包,比如8080端口。如果端口和IP地址同时存在的话,需要加and
tcpdump -n -i ens33 port 8080 and host 192.39.45.66 //查看8080端口号的会话数据包,port表示端口号,后面比如跟8080。-n表示不对具体ip地址做域名解析,直接显示会话两边的具体ip地址
只需要抓取某种协议的数据包,其他类型不关心.。例如tcp或者udp协议的数据包
注:如果没有标明抓取哪种协议类型的数据包,默认抓取全部协议类型的数据
tcpdump -n -i ens33 port 8080 and host 192.39.45.66 and tcp
//-n 表示不对 IP 地址和端口号进行反向解析,这可以加快抓包的速度。
//-i ens33 指定要监听的网络接口,这里是 eth0。
//port 8080 表示只捕获目标端口号为 8080 的数据包。
//and 用于连接条件,指示同时满足这条件。
//host 192.39.45.66 表示只捕获与目标 IP 地址为 192.39.45.66 相关的数据包。
Linux用tcpdump,Windows下用wireshark来分析吗?这打印在屏幕上,怎么分析嘛,应该有个保存成某个文件的命令,下载到windows中用wireshark打开才对吧?😀😀,没错,接下来讲的这几个参数,还是工作中很常用的,由于参数过多,不列举例子了:
-c:表示要抓取的包数量,比如-c 100表示我要抓取100个满足条件的包。 -i:表示指定对哪个网卡接口进行抓包,比如-i eth0,表示对eth0这个网卡进行抓包 -n:不对具体ip地址进行域名解析,直接显示ip地址 -nn:不对具体ip进行域名解析,并且端口号也不显示服务的名称,直接显示数字 -D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。 -w:将抓包数据输出到文件中而不是打印到屏幕上。 以下这两个参数:可作抓包的时候打印出信息,作为参考,毕竟我们要在wireshark分析的😀 -XX:输出数据包的头部数据。 -vvv:打印和分析的时候,产生非常详细的输出。
写一个工作中很常用的抓包命令
tcpdump -c 10 -nn -i ens33 tcp dst port 8080 and host 192.39.45.66 -w /home/qvchenz
/MyTest1.pcap
最后的路径,为绝对路径,如果只有文件名,保存在当前文件夹下,pcap格式可被wireshark打开,抓包完成后,就可以在保存的路劲下看到那个包啦!最后,特别要注意,使用tcpdump命令的时候,建议加上-c命令,因为如果不加任何过滤的话,就会无限制的抓取数据包,直到磁盘存满为止,很可怕的,有些时候我们需要触发抓包的时候,可不用-c,触发完之后停止抓包,就OK了。
逐个解释命令中的各个部分:
tcpdump
: 这是执行网络数据包捕获的命令。
-c 10
: 这个选项告诉tcpdump
只捕获前面的 10 个数据包,然后停止捕获。这可以用来限制捕获的数据包数量。
-nn
: 这个选项禁用了 IP 和端口号的反向解析,这样可以提高捕获的速度。IP 地址和端口号会以数字格式显示。
-i ens33
: 这个选项指定了要监听的网络接口,这里是ens33
。你可以将ens33
替换为实际的网络接口名称。
tcp
: 这个关键字指示只捕获 TCP 协议的数据包。
dst port 8080
: 这个条件表示只捕获目标端口号为 8080 的数据包。
and host 192.39.45.66
: 这个条件表示只捕获与目标主机 IP 地址为 192.39.45.66 相关的数据包。
-w /home/qvchenz/MyTest1.pcap
: 这个选项将捕获的数据包写入一个文件。文件路径为/home/qvchenz/MyTest1.pcap
,这里你可以将路径替换为你希望的文件位置和名称。这个命令会在网络接口
ens33
上捕获前 10 个与目标主机 IP 为 192.39.45.66,目标端口号为 8080 的 TCP 数据包,并将这些数据包写入指定的文件
更多推荐
所有评论(0)