Tcpdump(linux)下载、安装、使用说明

对于网络管理人员来说,使用嗅探器能够随时掌控网络 的实际情况,在网络性能急剧下降的时候,能够通过嗅探器来分析原因,找出造成网络阻塞的根源。

Tcpdump就是Linux平台下一个以命令行方式运行的网络流量监测工具。他能截获网卡上收到的数据包,并能够协助网络管理员对其中的内容进行相应的分析。

嗅探器能够截获指定接口或任何接口的数据包,这取决于如何对嗅探器进行配置。缺省情况下嗅探器一般会显示任何从网络上截获的数据包,但通常会因为数据量过大而使网络管理员理不清头绪。因此,嗅探器一般都提供有相应的机制来对截获的数据包进行过滤,从而只显示符合特定需要的数据包。

Tcpdump提供了一整套完善的规则来对截获的数据包进 行过滤,由于大多数图像化的嗅探器都使用类似的过滤机制,因此对Linux网络管理员来说,了解如何使用Tcpdump来捕获感兴趣的数据包是一项必须掌控的基本功。 

Tcpdump的安装 

在一些Linux发行版中,Tcpdump通常作为标准的软件包被默认安装,执行“tcpdump”命令能够确定是否已安装了Tcpdump。假如系统中还没有安装Tcpdump

1、下载地址

可到“http://www.tcpdump.org”下载最新的Tcpdump源码包。

注意:

因tcpdump的运行需要pcap的支持,所以最好先行安装pcap软件包,另外还要注意软件的版本问题,建议按照网站上匹配的软件包tcpdump和pcap一同下载。

前期在测试时我使用的yum 安装的pcap包(版本0.9.*),然后在网上下载了tcpdump(版本为4.3.0),在后期编译安装tcpdump时总是出错!!!后来我yum remove pcap  后重新使用源码包安装,一次成功!

2、下面以tcpdump-4.3.0.tar.gz    libpcap-1.3.0.tar.gz为例,讲述如何安装Tcpdump

此处使用的操作系统是 CentOS release 5.5 (Final)

在编译Tcpdump之前,应先确定pcap库(libpcap)已安装完毕。这个库是编译Tcpdump时所必需的。

安装过程非常简单如下示:

tar -zxvf libpcap-1.3.0.tar.gz

cd libpcap-1.3.0

./configure

make

make install

该库已安装完毕,下面执行下面的命令来编译并安装Tcpdump:

tar -zxvf tcpdump-4.3.0.tar.gz

cd tcpdump-4.3.0

./configure

make

make install

Tcpdump的命令行选项 

Tcpdump是个命令行方式的网络嗅探器。他通过使用命令选项来过滤网卡截获的数据包,假如不进行过滤,过多数量的包会使网络管理员很难理清头绪。Tcpdump的命令格式如下:

tcpdump [ -adeflnNOpqRStuvxX ] [ -c 数量 ] [ -C 文档尺寸 ] [ -F 文档名 ] [ -i 网络接口 ] [ -m 文档名 ] [ -r 文档名 ] [ -s 长度 ] [ -T 类型 ] [ -w 文档名 ] [ -E algo:secret ] [ 表达式 ]

表1 Tcpdump常用命令行选项 

-a 将网络地址和广播地址转变成容易识别的名字 
-d 将已截获的数据包的代码以人容易理解的格式输出; 
-dd 将已截获的数据包的代码以C程式的格式输出; 
-ddd 将已截获的数据包的代码以十进制格式输出; 
-e 输出数据链路层的头部信息; 
-f 将internet地址以数字形式输出; 
-l 将标准输出变为行缓冲方式; 
-n 不将网络地址转换成易识别的主机名,只以数字形式列出主机地址(如IP地址),这样能够避免DNS查询; 
-t 不输出时间戳; 
-v 输出较周详的信息,例如IP包中的TTL和服务类型信息; 
-vv 输出详尽的报文信息; 
-c 在捕获指定个数的数据包后退出; 
-F 从指定的文档中读取过滤规则,忽略命令行中指定的其他过滤规则; 
-i 指定监听的网络接口; 
-r 从指定的文档中读取数据包(该文档一般通过-w选项产生); 
-w 将截获的数据包直接写入指定的文档中,不对其进行分析和输出; 
-T 将截获的数据包直接解释为指定类型的报文,现在支持的类型有cnfp、rpc、rtp、snmp、vat和wb。

表1给出了一些常用的Tcpdump命令行选项,使用这些选项能够过滤出真正感兴趣的数据包。

使用Tcpdump的命令行选项能够很方便地过滤出需要的数据包。

例如,要过滤掉任何除ARP请求和应答的通信数据,能够输入“tcpdump arp”命令。该命令只对ARP的请求和应答信息进行截获,在Tcpdump的输出信息中,请求是“arp who-has”这样的条目,而应答则是“arp reply”这样的条目,如图1所示。

图1 ARP过滤

假如要做更多的处理,比如从指定的网络接口截获5个ARP数据包,并且不将网络地址转换成主机名,则能够用命令“tcpdump arp -i eth0 -c 5 -n”。

Tcpdump的过滤表达式 

Tcpdump的过滤表达式是个正则表达式,Tcpdump利用其作为过滤数据包的条件。假如一个数据包满足表达式的条件,则这个数据据包将会被捕获;假如不指定表达式,则在网络上任何两台主机间的任何数据包都将被截获。过滤表达式的作用就是使Tcpdump只输出网络管理员所需要的数据,如一个指定的网络接口和特定主机间的IP数据包。

Tcpdump的过滤表达式中一般有如下几种类型的关键字:

◆ 类型关键字

这类关键字用于指定主机、网络或端口,包括host、net和port三个关键字

例如,能够用“host 9.185.10.57”来标明监听的主机;用“net 9.185.0.0”来标明监听的网络;用“port 23”来标明监听的端口。假如没有在表达式中指明类型,则缺省的类型为host。

◆ 方向关键字

这类关键字用于指定截获的方向,包括dst、src、dst or src、dst and src四个关键字

例如,能够用src 9.185.10.57来指明截获的数据包中的源主机地址;用“dst net 9.185.0.0”来指明截获的数据包中的目标网络地址。假如没有在表达式中指明方向,则缺省的方向为“dst or src”,即两个方向的数据包都将被捕获。对于数据链路层协议(如SLIP和PPP),使用inbound和outbound来定义方向。

◆ 协议关键字

这类关键字用于指定要截获的数据包所属的协议,包括ether、fddi、tr、ip、ip6、arp、rarp、decnet、tcp和udp等关键字。 关键字fddi指明在FDDI(分布式光纤数据接口网络)上的特定网络协议。实际上他是ether的别名。fddi和ether具备类似的源地址和目标地址,所以能够将fddi协议包当作ether的包进行分析和处理。其他几个关键字只是指定了所要截获的协议数据包。假如没有在表达式中指明协议,则 Tcpdump会截获任何协议的数据包。

除了上述三种类型的关键字外,Tcpdump的过滤表达式中还能够指定的一些重要关键字

包括 gateway、broadcast、multicast、less、greater。这些关键字对于监听网络中的广播和多播很有帮助。关于这些关键字的更多信息和用法请参考Tcpdump的man手册。

在Tcpdump的过滤表达式中,各类关键字之间还能够通过布尔运算符来构成组合表达式,以满足实际运用时的需要。
布尔运算符包括取非运算符(not 或!)、和运算符(and或&&)、或运算符(or或||),使用布尔运算符能够将表达式组合起来构成强大的组合条件,从而能够对 Tcpdump的过滤器做进一步细化。

下面给出几个使用Tcpdump过滤数据包的例子,嗅探器提供的过滤表达式对于管理员监测网络运行状况很重要:

1. 假如想要截获主机“9.185.10.57”任何收到和发出的数据包,能够使用如下命令:

# tcpdump host 9.185.10.57

2. 假如想要截获在主机“9.185.10.57”和主机“9.185.10.58”或“9.185.10.59”之间传递的数据包,能够使用如下命令:

# tcpdump host 9.185.10.57 and \(9.185.10.58 or 9.185.10.59\)

需要注意的是,在使用布尔运算符构成组合表达式时,有时需要使用括号来表达复杂的逻辑关系。假如要在命令行中使用括号,一定要用转义字符(“\”)对括号进行转义,否则命令行解释器将给出语法错误的提示。

3. 假如想要截获主机“9.185.10.57”和除主机“9.186.10.58”外任何其他主机之间通信的IP数据包,能够使用如下命令:

# tcpdump ip host 9.185.10.57 and ! 9.185.10.58

4. 假如想要截获主机“9.185.10.57”接收或发出的FTP(端口号为21)数据包,能够使用如下命令:

# tcpdump tcp port 21 and host 9.185.10.57   (注意and的书写,不加and总是提示语法错误)

5. 假如怀疑系统正受到拒绝服务(DoS)攻击,网络管理员能够通过截获发往本机的任何ICMP包,来确定现在是否有大量的ping指令流向服务器,此时就能够使用下面的命令:

# tcpdump icmp -n -i eth0

Tcpdump的输出结果 

在对网络中的数据包进行过滤后,Tcpdump的输出结果中包含网络管理员关心的网络状态信息。由于Tcpdump只是个命令行方式的嗅探器,因而其输出结果不是很直观,下面以几种典型的输出信息为例,介绍如何对Tcpdump的输出结果进行分析。

1. 数据链路层头信息

使用“tcpdump -e host tiger”命令截获主机“tiger”任何发出和收到的数据包,并在输出结果中包含数据链路层的头部信息。

“tiger”是一台装有Linux的主机,其MAC地址是00:D0:59:BF:DA:06;“mag”是一台装有SCO Unix的工作站,其MAC地址是08:90:B0:2F:AF:46,上述命令的输出结果如下:

20:15:20.735429 eth0 
< 08:90:b0:2f:af:46 00:d0:59:bf:da:06 ip 60: mag.36579 > 
tiger.ftp 0:0(0) ack 25565 win 8970 (DF)

在 输出的信息中,“20:15:20”为截获数据包的时间,“735429”是毫秒数,“eth0 <”表示从网络接口eth0接收该数据包(若为“eth0 >”,则表示从网络接口eth0发送数据包)。“08:90:b0:2f:af:46”是主机mag的MAC地址,指明发送该数据包的源主机为 “mag”,“00:d0:59:bf:da:06”是主机tiger的MAC地址,指明该数据包发送的目标主机为“tiger”。“ip”表明该数据包 是IP数据包,“60”是数据包的长度,“mag.36579 > tiger.ftp”表明该数据包是从主机“mag”的36579端口发往主机“tiger”的FTP(21)端口。“ack 25565”表示对序列号为25565的包进行确认,“win 8970”则指明发送窗口的大小为8760。

2. ARP包的输出信息

若使用“tcpdump arp -c 2”命令截获ARP数据包,得到的输出结果可能是:

20:42:22.713502 eth0 
> arp who-has mag tell tiger 
(00:d0:59:bf:da:06) 
20:42:22.713907 eth0 
< arp reply mag is-at 08:90:b0:2f:af:46 
(00:d0:59:bf:da:06)

在 输出的信息中,“20:42:22”为截获数据包的时间;“713502”和“713907”为毫秒数;“eth0 >”表明从主机发出该数据包;“eth0 <”表明从主机接收该数据包。“arp”表明该数据包是ARP请求,“who-has mag tell tiger”表明是主机“tiger”请求主机“mag”的MAC地址,“00:d0:59:bf:da:06”是主机“tiger”的MAC地址。 “reply mag is-at”表明主机“mag”响应“tiger”的ARP请求,“08:90:b0:2f:af:46”是主机“mag”的MAC地址。

3. TCP包的输出信息

用Tcpdump截获的TCP包的一般输出格式如下:

src > dst: flags data-sequno ack window urgent options

“src > dst:”标明从源地址到目的地址;flags是TCP包中的标志信息,包括S(SYN)标志、F(FIN)标志、P(PUSH)标志、R(RST)标志 和“.”(没有标志);data-sequno是数据包中的数据序列号;ack是下次期望的数据序列号;window是接收缓存的窗口大小;urgent 标明数据包中是否有紧急指针;options是可能的选项值。

4. UDP包的输出信息

用Tcpdump截获的UDP包的一般输出格式如下:

src.port1 > dst.port2: udp lenth

UDP中包含的信息很简单。上面的输出结果表明从主机“src”的“port1”端口发出的一个UDP数据包被送到主机“dst”的“port2”端口,数据包的类型是UDP,其长度为“lenth”。

通 过上面的介绍能够知道,Tcpdump是个命令行方式的嗅探器。他能够根据需要显示出经过一个网络接口的任何数据包,供网络管理员对网络进行检测。但由于 采用的是命令行方式,对这些数据包的分析可能会比较困难。利用Tcpdump提供的表达式过滤一些截获的数据包,能够从截获的大量数据包中提取出有用的信 息,从而能够有针对性地对网络进行监测。

由于任何网络嗅探器的原理都大体相似,因而Tcpdump的基本知识能够应用于几乎任何的嗅 探器。Tcpdump是基于命令行方式的嗅探器,其输出结果比较难于分析,因此很多网络管理员都使用图像化的嗅探器来检测网络故障,并处理可能存在的安全 问题。下次将介绍两个图像化的网络嗅探器—Ethereal和EhterApe。同Tcpdump相比,使用这两个嗅探器的分析过程要简单许多。

Tcpdump(linux)下载、安装、使用说明相关推荐

  1. Kali Linux攻防系统(一:攻防系统Kali Linux下载安装与更新)

    任务一:攻防系统Kali Linux下载安装与更新 1.1.安装Kali Linux虚拟机 1.1.1.电脑硬件配置至少达到 CPU 内存 存储 >四核 >4G >20G 1.1.2 ...

  2. 解压安装包linux,Linux 下载安装 rar 并解压rar压缩包(Linux下如何解压.zip和.ra

    Linux 下载安装 rar 并解压rar压缩包(Linux下如何解压.zip和.ra Linux 下载安装 rar 并解压rar压缩包(Linux下如何解压.zip和.rar文件) Linux下如何 ...

  3. Linux下载安装5笔输入法

                       Linux下载安装5笔输入法 一.下载方法 网址:http://www.fcitx.org/main/ 介绍: Fcitx──小企鹅输入法:Free Chines ...

  4. 照着书敲linux下载安装命令?大汇总来咯!!!

    linux下载安装的命令 一. 本地上传 1.1 使用scp命令 1.2 使用xshell工具 1.3 常用方法 二. 网络远程下载 2.1 curl_一种下载文件的工具 2.2 wget_软件下载工 ...

  5. Linux下载安装与网络配置

    本篇文章介绍的是Linux下载安装与网络配置,如有错误或不当之处,还望各位大神批评指教. 一.Linux下载 Linux有很多不同的发行版本,本篇文章介绍的是centos 6.5 64位的下载,地址为 ...

  6. Linux下载安装zookeeper

    安装环境:Linux Cenos64 64位 zookeeper版本:3.4.14 安装要求:Linux本机要已安装JDK 因为我虚拟机已经安装过了JDK,就不在演示如何安装JDK,自行百度一下 下载 ...

  7. 全网最详细的Linux下载安装教程,Windows11 Windows10安装Linux详细教程

    特殊提醒: 如果操作系统为Windows 11,请使用VMware WorkStation 16.1及以上版本,否则容易出现蓝屏,系统重启等情况. Windows 10 .Windows 11 安装有 ...

  8. Linux下载安装和使用SQLite

    Linux安装SQLite 一.SQLite下载 二.SQLite安装 三.SQLite的使用 1.解决无法直接用sqlit3命令 2.解决无法编译的问题 总结 一.SQLite下载 首先,前往SQL ...

  9. Linux 下载安装VSCode 使用编程输出当前时间

    rpm命令使用哪个参数安装软件:-i rpm命令使用哪个参数删除软件:-e yum安装源配置文件所在目录是:/etc/yum.repo.d yum安装源配置文件的后缀名必须是:repo 能够删除软件包 ...

最新文章

  1. 围观各大企业如何活用人工智能,并运用实践?
  2. HGOI20190808 省常中互测1
  3. Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机
  4. idea插件GsonFormat的使用
  5. 终极之战!TensorFlow与PyTorch谁最适合深度学习
  6. HTML下拉菜单去掉点,jQuery点击页面其他部分隐藏下拉菜单功能
  7. png变成矢量图_[PPT]如何将图片背景变成透明
  8. 数据仓库、数据集市、数据湖,这些大数据名词你知道多少?
  9. 常态化防疫加码!防疫健康提示宣传海报设计模板,请收好psd分层格式!
  10. java文件流的操作
  11. Android software RD engineer能力模型
  12. Cockos REAPER for Mac(音轨录制编辑软件)
  13. 网络计算机怎么使用,如何让电脑使用ipv6地址?一文了解清楚
  14. Google Play 上架全流程_2022年谷歌应用商店上架流程
  15. 【分享】如何判断个人电脑是多少位(32位?还是64位系统)
  16. win7 修复计算机步骤,解答win7系统桌面上的计算机不见了的修复步骤
  17. Webots+ROS学习记录(4)——六轮全地形移动机器人
  18. MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下)
  19. java 框架 面试常见题目
  20. html让视频变形不留黑边,视频去黑边画面不变形|视频无损去黑边 去掉视频黑边且画面比例正常人物不变形...

热门文章

  1. IOS客户端Coding项目记录(二)
  2. IOPS、带宽(band width)、吞吐量 (throughput)
  3. NSIS打包软件(一)
  4. TI C64X DSP中断向量表的配置(硬件中断)-- 转自新浪博客
  5. 人人网 6.0 版申请页面随着滚动条拖动背景图片滚动出现,具体使用 JavaScript 和 CSS 原理是什么?...
  6. 关于C#的Main(String[] args)参数输入问题
  7. vb编程软件_原创经验,如何安装vb编程软件
  8. java 正则 子字符串_使用Java正则表达式来查找另一个子字符串中的子字符串
  9. python绘图设置标题出现乱码_解决python2 绘图title,xlabel,ylabel出现中文乱码的问题...
  10. docker容器内无法下载到alpine的资源,报错network error (check Internet connection and firewall)