flymeteor@Blog



超级详细Tcpdump 的用法ï¼?ï¼?by jeffyan

第一�是关于类型的关键字,主�包括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

第三ç§?是å??议的关键字,主è¦?包括fddi,ip ,arp,rarp,tcp,udp等类型
除了这三�类型的关键字之外,其他��的关键字如下:gateway, broadcast,less,
greater,还有三ç§?逻辑è¿?算,å?–é?žè¿?算是 ‘not ‘ ‘! ‘, 与è¿?算是’and’,'&&’;或è¿?ç®— 是’o
r’ ,’||’ï¼›
第二�是确定传输方�的关键字,主�包括src , dst ,dst or src, dst and src ,
如果我们�需�列出�到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 使用混�模� 系统的日志将会记录

May 7 20:03:46 localhost kernel: eth0: Promiscuous mode enabled.
May 7 20:03:46 localhost kernel: device eth0 entered promiscuous mode
May 7 20:03:57 localhost kernel: device eth0 left promiscuous mode

tcpdump对截获的数æ?®å¹¶æ²¡æœ‰è¿›è¡Œå½»åº•è§£ç ?,数æ?®åŒ…内的大部分内容是使用å??六进制的形å¼?直接打å?°è¾“出的。显然这ä¸?利于分æž?网络故障,通常的解决办法是先使用带-wå?‚æ•°çš„tcpdump 截获数æ?®å¹¶ä¿?存到文件中,然å?Žå†?使用其他程åº?进行解ç ?分æž?。当然也应该定义过滤规则,以é?¿å…?æ?•获的数æ?®åŒ…填满整个硬盘。


Comments

  1. luosfu says:

    哥们行呀,PEIFU

    Posted 3 years, 10 months ago


Leave a Comment

(required)

(required)



Formatting your comment
Back to Top | Textarea: Larger | Smaller