如何借助Sniffer来诊断Linux网络故障?

运维 系统运维
Sniffer在网络安全领域是一把双刃剑、或被黑客作为网络攻击工具、或协助运维诊断网络故障,本文以Linux平台下三个常用的网络嗅探器Tcpdump、Ethereal和EtherApe为例,介绍如何借助Sniffer来诊断网络故障,从而保障网络高效安全地运行。

  夫运维者、善假于物也、形如 Sniffer(嗅探器)。Sniffer 在网络安全领域是一把双刃剑、或被黑客作为网络攻击工具、或协助运维诊断网络故障,本文以 Linux 平台下三个常用的网络嗅探器 Tcpdump、Ethereal 和 EtherApe 为例,介绍如何借助 Sniffer 来诊断网络故障,从而保障网络高效安全地运行,但由于 Sniffer 实在太强大、本文也只是入门性的做些介绍、有兴趣的朋友可进一步学习。

  ● Tcpdump是一个命令行方式的网络流量监测工具。它诞生的时间较早,是许多图形化嗅探器的雏形

  ● Ethereal是一个图形化的网络流量监测工具,比命令行方式的Tcpdump友好很多,可以实时地观看捕获过程

  ● EtherApe也是一个图形化的网络流量监测工具、与Ethereal不同,EtherApe可以通过对主机间的连接进行检测

  ㈠ Tcpdump

  在网络性能急剧下降的时候,可以通过 Tcpdump 来分析原因,找出造成网络阻塞的根源,Tcpdump 能截获网卡上收到的数据包,并能够协助网络管理员对其中的内容进行相应的分析。

  对于运维人员、了解如何使用 Tcpdump 来捕获感兴趣的数据包是一项必须掌握的基本功。

  ⑴ Tcpdump 安装

  GNU/Linux 发行版缺省都会安装、如果没有可到:http://www.tcpdump.org 下载。

⑵ Tcpdump 命令行选项

  Tcpdump是一个命令行方式的网络嗅探器、如果不进行过滤,过多数量的包会使运维人员很难理清头绪。

  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  : 将截获的数据包直接解释为指定类型的报文

  ⑶ 例子

  ① 从指定的网络接口截获5个 ARP 数据包,并且不将网络地址转换成主机名

  [plain] view plaincopy
  [root@Rocky ~]# tcpdump arp -i eth0 -c 5 -n
  tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
  10:59:46.728425 arp who-has 192.168.1.1 tell 192.168.1.110
  11:00:17.315719 arp who-has 192.168.1.1 tell 192.168.1.111
  11:00:17.317911 arp who-has 192.168.1.1 tell 192.168.1.111
  11:00:17.418271 arp who-has 192.168.1.1 tell 192.168.1.111
  11:00:17.418980 arp who-has 192.168.1.1 tell 192.168.1.111
  5 packets captured
  5 packets received by filter
  0 packets dropped by kernel

  10:59:46:为截获数据包的时间

  728425  :为毫秒数

  arp:表明该数据包时 ARP 请求

  who-has 192.168.1.1 tell 192.168.1.110:表示 110 请求 1 的 MAC 地址

  ② 截获主机“9.185.10.57”所有收到和发出的数据包

  tcpdump host 9.185.10.57

  ③ 截获在主机“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\)

  ④ 截获主机“9.185.10.57”和除主机“9.186.10.58”外所有其它主机之间通信的IP数据包

  tcpdump ip host 9.185.10.57 and ! 9.185.10.58

  ⑤ 截获主机“9.185.10.57”接收或发出的FTP(端口号为21)数据包

  tcpdump tcp port 21 host 9.185.10.57

  ⑥ 如果怀疑系统正受到(DoS)攻击,可通过截获发往本机的所有ICMP包,确定目前是否有大量的ping流向服务器

  tcpdump icmp -n -i eth0

  ㈡ Ethereal

  ⑴ 下载并安装

  ***请确认 libpcap 包已经安装****

  # cp ethereal-0.9.9.tar.bz2 /usr/local/src/
  # cd /usr/local/src/
  # bzip2 -d ethereal-0.9.9.tar.bz2
  # tar xvf ethereal-0.9.9.tar
  # cd ethereal-0.9.9
  # ./configure
  # make
  # make install

⑵ 简单的捕获过程

  大概可分 2 步:

  Ⅰ 点击 "filter":可直接在预置的条件里选择、也可自己新建、比如:

  Filter name:Rocky

  Filter string: host 124.127.185.106

 

  Ⅱ 点击 "capture "、在 "capture filter"选项框里面填上过滤条件

 

  ㈢ EtherApe

  ⑴ 安装

  # gunzip etherape-0.9.11.tar.gz
  # tar vxf etherape-0.9.11.tar
  # cd etherape-0.9.11
  # ./configure
  # make
  # make install

⑵ 简单的捕获过程

  大致如下:

  Ⅰ 单击“Pref.”按钮,打开“Preferences”,在“Capture”属性页中“Capture filter”

  Ⅱ 如果对IP数据包感兴趣,这时可以将EtherApe切换到IP模式。单击“Capture”菜单,选择“Mode”菜单项

责任编辑:黄丹 来源: 博客
相关推荐

2009-05-19 16:40:41

TTL网络故障科来软件

2013-05-22 17:18:13

2009-06-25 09:58:03

2009-11-17 18:44:44

2009-11-24 18:34:23

网络故障诊断路由器

2009-09-11 03:21:00

网络故障诊断

2011-01-24 13:42:27

网络故障网络故障修复

2009-12-23 10:50:51

网络故障诊断

2017-03-24 09:50:00

2012-02-08 15:54:40

IP网络故障

2009-11-17 17:45:59

2010-08-16 13:43:40

路由器网络诊断

2010-08-18 08:59:00

路由器网络诊断

2018-11-26 10:23:51

网络故障路由器

2009-02-12 10:17:00

系统网络故障

2011-09-09 13:42:12

网络故障路由器

2009-12-23 10:37:24

网络故障诊断

2009-09-17 12:55:28

WSUS服务器

2009-12-25 10:31:31

Linux网络故障

2019-11-14 11:05:32

ARP命令故障
点赞
收藏

51CTO技术栈公众号