`

linux下Tcpdump 的详细用法

 
阅读更多

昨天碰见一个问题,项目部署到服务器上之后发现有一个JSP文件访问不了,报500的错误~~~

一时抑郁了,一开始以为是代码的问题,优化了一下代码,发现依然是报500的错误,然后copy了一份改了个名字就可以访问了~_~!原因不明~

开始怀疑网络的问题了~

根据同事的帮助和linux高手的指导,完成了以下动作

在linux中root用户下运行以下命令

抓包方法:
tcpdump -i bond0 host 172.29.10.56 -x -s0 -w ZTE.cap
172.29.10.56 是数据流相关的IP地址
ZTE.cap 是抓包文件的命名,需要为".cap"

抓取到cap文件后使用wireshark对抓取的数据包进行分析

而关于linux下tcpdump 用法如下:

关于类型的关键字

主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.

确定传输方向的关键字

主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。

协议的关键字

主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和 分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。


除了以上三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'││';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。
# tcpdump
tcpdump: listening on fxp0
11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50
11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43
0000 0000 0080 0000 1007 cf08 0900 0000
0e80 0000 902b 4695 0980 8701 0014 0002
000f 0000 902b 4695 0008 00
11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97
ffff 0060 0004 ffff ffff ffff ffff ffff
0452 ffff ffff 0000 e85b 6d85 4008 0002
0640 4d41 5354 4552 5f57 4542 0000 0000
0000 00
使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,
使用-c参数指定要监听的数据包数量,
使用-w参数指定将监听到的数据包写入文件中保存
A 想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
#tcpdump host 210.27.48.1
B 想要截获主机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 \)
C 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
D 如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
E 对本机的udp 123 端口进行监视 123 为ntp的服务端口
# tcpdump udp port 123
F 系统将只对名为hostname的主机的通信数据包进行监视。主机名可以是本地主机,也可以是网络上的任何一台计算机。下面的命令可以读取主机hostname发送的所有数据:
#tcpdump -i eth0 src host hostname
G 下面的命令可以监视所有送到主机hostname的数据包:
#tcpdump -i eth0 dst host hostname
H我们还可以监视通过指定网关的数据包:
#tcpdump -i eth0 gateway Gatewayname
I 如果你还想监视编址到指定端口的TCP或UDP数据包,那么执行以下命令:
#tcpdump -i eth0 host hostname and port 80

J 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
K 想要截获主机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 \)
L 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
 #tcpdump ip host 210.27.48.1 and ! 210.27.48.2
M 如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
 #tcpdump tcp port 23 host 210.27.48.1

补充:

如果我们只需要列出送到80端口的数据包,用dst port;如果我们只希望看到返回80端口的数据包,用src port。
#tcpdump –i eth0 host hostname and dst port 80目的端口是80
或者
#tcpdump –i eth0 host hostname and src port 80源端口是80一般是提供http的服务的主机
如果条件很多的话要在条件之前加and 或 or 或 not
#tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80
如果在ethernet 使用混杂模式 系统的日志将会记录
May7 20:03:46 localhost kernel: eth0: Promiscuous mode enabled.
May7 20:03:46 localhost kernel: device eth0 entered promiscuous mode
May7 20:03:57 localhost kernel: device eth0 left promiscuous mode
tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。

分享到:
评论

相关推荐

    Linux tcpdump命令用法详解

    Linux tcpdump命令 Linux tcpdump命令用于倾倒网络传输数据。 执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。 语法tcpdump [-adeflnNOpqStvx][-c][-dd][-ddd][-F]...

    Linux下使用tcpdump抓包的实现方法

    很多时候我们的系统部署在Linux系统上面,在一些情况下定位问题就需要查看各个系统之间发送数据报文是否正常,下面我就简单讲解一下如何使用tcpdump抓包 tcpdump是Linux下面的一个开源的抓包工具,和Windows下面的...

    Linux tcpdump命令的用法详细解析

    以下是对Linux中tcpdump命令的用法进行了详细的介绍,需要的朋友可以过来参考下

    TCPDump使用方法小结

    在进行网络测试的时候,我们经常需要进行抓包的工作,当然有许多测试工具可以使用,比如,sniffer, ethreal等.但最为方便和简单得就非TCPDump莫属. Linux的发行版里基本都包括了这个工具. TCPDump将网络接口设置成混杂...

    arm路由系统下可用的tcpdump抓包工具

    支持在Tomato DualWAN 等系统下使用的tcpdump工具. chmod +x tcpdump 简单用法: a. 抓取所有与192.168.1.3通讯的数据包,并且显示在命令行下 /tmp/tcpdump -i br0 -f "host 192.168.1.3" -vv b. 抓取所有与192....

    linux使用tcpdump命令监视指定网络数据包的方法

    linux使用tcpdump命令监视指定网络数据包的方法,大家参考使用吧

    tcpdump命令的使用与示例 - linux 下的网络分析

    tcpdump支持相当多的不同参数,如使用 参数指定 监听的网络界面,这在计算机具有多个网络界面时非常有用,使用 参数指定要监听的数据包 量,使用 参数指定将监听到的数据包写入文件中保存,等等。 然而更复杂的 参数...

    嗅探器tcpdump的使用教程

    自己做的PPT,还有视频教程,有tcpdump的使用方法,命令格式,输出各种协议包结果的分析,有一个抓取telnet包后用wireshark分析的示例

    linux系统下使用tcpdump进行抓包方法

    我先看下实例代码: 1.常见参数 tcpdump -i eth0 -nn -s0 -v port 80 -i 选择监控的网卡 -nn 不解析主机名和端口号,捕获大量数据,名称解析会降低解析速度 -s0 捕获长度无限制 -v 增加输出中显示的详细信息量 port...

    Linux tcpdump命令详解大全

    主要介绍了Linux tcpdump命令详解大全的相关资料,需要的朋友可以参考下

    Linux命令模板 licote 1.3.2

    用于快速编写一个linux环境的命令程序,Licote的主要任务是帮助你解析linux环境下的常用命令选项,让你快速编写命令程序的同时,为用户提供灵活而强大的使用方法;通过Licote框架你可以开发类似tcpdump,date等选项...

    Linux下三种网络管理工具功能及使用

    本文是介绍管理Linux系统网络性能技巧的文章,主要介绍了route、netstat、tcpdump三种网络管理测试工具的使用方法及其可实现的功能。

    RED HAT LINUX 6大全

    本书内容翔实、涉及领域广泛,并且提供了详细的例子和大量的参考资料(包括书籍、电子文档和Internet站点),是一本学习、使用和管理Linux不可多得的好书。 目 录 译者序 前言 第一部分 Red Hat Linux的介绍与安装 ...

    Linux高性能服务器编程

    1.5.2 ARP高速缓存的查看和修改 1.5.3 使用tcpdump观察ARP通信过程 1.6 DNS工作原理 1.6.1 DNS查询和应答报文详解 1.6.2 Linux下访问DNS服务 1.6.3 使用tcpdump观察DNS通信过程 1.7 socket和TCPIP协议族的...

    以前不知道的Linux 命令.doc

    tcpdump -i eth0 即使是在一个相对平静的网络上,也有很多的通信,所以我们可能只需要...如果我们关心的只是我们本地主机的通信情况,一种方法是使用“-p”参数禁止promiscuous模式,还有一种方法就是指定主机名:

    Linux命令模板 licote 1.3.0

    用于快速编写一个linux环境的命令程序,Licote的主要任务是帮助你解析linux环境下的常用命令选项,让你快速编写命令程序的同时,为用户提供灵活而强大的使用方法;通过Licote框架你可以开发类似tcpdump,date等选项...

    linux全志R16的linux系统编译的资料_20170502_1655.7z

    (编译请使用编译android的lichee的选项编译生成的.config文件,不然直接编译会报错!!!!) rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ tar zxvf lichee_parrotv1.1_20161202.tar.gz rootroot@cm-...

    各品牌防火墙及负载均衡抓包手册

    Juniper Netscreen OS抓包方法 2 天融信防火墙 抓包方法 3 Hillstone山石防火墙抓包方法 4 华为防火墙 抓包方法 5 A10 负载均衡抓包方法 6 F5 抓包方法 7 FortiGate飞塔防火墙抓包方法 11 Linux tcpdump使用方法 15

Global site tag (gtag.js) - Google Analytics