linux tcpdump,tcpdump抓包命令详解
大家好,感谢邀请,今天来为大家分享一下linux tcpdump的问题,以及和tcpdump抓包命令详解的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
linux抓包命令tcpdump
tcpdump是一个功能强大的命令行数据包分析器,它通过监听服务器的网卡获取数据包,可用于分析所有网络访问的数据。此工具还具有过滤功能,可以获取特定网络、端口或协议的数据包。
程序员在日常问题排查中,常利用过滤功能获取特定端口的数据包,以分析服务器是否收到请求,请求数据是否完整。
tcpdump命令的参数丰富,本文仅介绍常用参数:
参数-c count表示指定数量的数据包,达到count后结束命令;若不使用此参数,程序将持续抓取数据包,直到手动停止。
参数-C file_size在抓取数据包保存到文件时,通过此命令设定文件大小。文件达到指定大小后,将创建以原文件名加序号的新文件,例如 dump.txt, dump.txt1。单位为字节(b)。
参数-D列出服务器的所有网卡,tcpdump默认监听编号最小的网卡(一般为eth0)。在执行抓包时,可通过参数-i interface指定监听的网卡,any表示监听所有网卡。
参数-n输出结果时,不将IP转换为主机名(默认显示主机名)。
参数-q快速输出,仅显示简要的数据包信息。
参数-r file从文件读取数据包,不再从网络获取数据包。
参数-t不输出时间戳。
参数-w file将抓取的数据包保存到指定文件,与参数-r结合使用时,从文件中读取数据包。
参数-W filecount指定文件数量,文件滚动到指定数量后,从第一个文件开始覆盖。
除了上述参数,还存在用于条件过滤的关键字,如:
参数-host过滤主机,例如 tcpdump host 192.168.1.110只抓取经过此IP的数据包。
参数-src用于过滤请求来源方,如 tcpdump src host 192.168.1.110只抓取从此IP过来的数据包。
参数-dst用于过滤请求接收方,例如 tcpdump dst host 192.168.1.110只抓取发送到此IP的数据包。
参数-port过滤端口,如 tcpdump port 8080只抓取经过8080端口的数据包。
参数-net过滤网络,如 tcpdump net 192.168只抓取经过此网段的数据包。
逻辑操作符如-and、not、or用于条件组合,例如 tcpdump net 192.168 and port 8080抓取特定网络和端口的数据包。
数据包分析结果如下:
时间戳:时:分:秒.微秒
IP协议名称
请求发送方IP和端口>请求接收方IP和端口。端口可能显示为协议名,如HTTP、SSH、MySQL等。
Flags [R]
标识和状态,可选状态包括 [S.] [.] [P.] [F.][R]
seq、ack、fin
表示TCP协议的握手和挥手过程。seq表示请求序列号,ack是回答序列号,fin表示完成。序列号显示为相对值,使用参数-S可显示绝对值。
win
当前窗口大小
length
报文体长度,此长度可用于简单分析是否正确接收请求。
利用以上信息可进行基本分析,通过参数-w将数据包写入文件,文件中包含更详细信息,借助分析工具如Wireshark进行进一步分析。
常用命令示例:
抓取8080端口的数据包
抓取从192.168.1.110发送到192.168.1.111的数据包
抓取192.168网段除了192.168.1.110的请求数据包
抓取8080端口的数据包并写入dump.log文件
注意事项:
1.运行tcpdump需要管理员权限,可通过sudo命令或使用root用户。
2.通过length字段只能进行简单判断,欲进行详细分析,需借助数据包分析工具,如Wireshark。
在linux下tcpdump的安装方式有哪些呢
一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。
1。 rpm包的形式安装
这种形式的安装是最简单的安装方法,rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。以超级用户登录,使用命令如下:
这样tcpdump就顺利地安装到你的linux系统中。
怎么样,很简单吧。
2。源程序的安装
既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢?其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。
第一步取得源程序在源程序的安装方式中,我们首先要取得tcpdump的源程序分发包,这种分发包有两种
形式,一种是tar压缩包(tcpdump-3_4a5。tar。Z),另一种是rpm的分发包(tcpdump-3_4a5。src。rpm)。
关于linux tcpdump命令
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
实用命令实例
默认启动
tcpdump
普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。
监视指定网络接口的数据包
tcpdump-i eth1
如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。
监视指定主机的数据包
打印所有进入或离开sundown的数据包.
tcpdump host sundown
也可以指定ip,例如截获所有210.27.48.1的主机收到的和发出的所有的数据包
tcpdump host 210.27.48.1
打印helios与 hot或者与 ace之间通信的数据包
tcpdump host helios and\( hot or ace\)
截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信
tcpdump host 210.27.48.1 and\(210.27.48.2 or 210.27.48.3\)
打印ace与任何其他主机之间通信的IP数据包,但不包括与helios之间的数据包.
tcpdump ip host ace and not helios
如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and! 210.27.48.2
截获主机hostname发送的所有数据
tcpdump-i eth0 src host hostname
监视所有送到主机hostname的数据包
tcpdump-i eth0 dst host hostname
监视指定主机和端口的数据包
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1
对本机的udp 123端口进行监视 123为ntp的服务端口
tcpdump udp port 123
监视指定网络的数据包
打印本地主机与Berkeley网络上的主机之间的所有通信数据包(nt: ucb-ether,此处可理解为'Berkeley网络'的网络地址,此表达式最原始的含义可表达为:打印网络地址为ucb-ether的所有数据包)
tcpdump net ucb-ether
打印所有通过网关snup的ftp数据包(注意,表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析)
tcpdump'gateway snup and(port ftp or ftp-data)'
打印所有源地址或目标地址是本地主机的IP数据包
(如果本地网络通过网关连到了另一网络,则另一网络并不能算作本地网络.(nt:此句翻译曲折,需补充).localnet实际使用时要真正替换成本地网络的名字)
tcpdump ip and not net localnet