超级详细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 截获数æ?®å¹¶ä¿?å˜åˆ°æ–‡ä»¶ä¸ï¼Œç„¶å?Žå†?使用其他程åº?进行解ç ?分æž?。当然也应该定义过滤规则,以é?¿å…?æ?•获的数æ?®åŒ…填满整个硬盘。
哥们行呀,PEIFU
Posted 3 years, 10 months ago