[LINUX]tcpdump命令详解

        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 数据包,并将这些数据包写入指定的文件 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值