tcpdump×¥°ü·ÖÎöÏê½â ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/8/31 20:28:49ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

tcpdump×¥°ü·ÖÎöÏê½â

[root@linux ~]# tcpdump [-nn] [-i ½Ó¿Ú] [-w ´¢´æµµÃû] [-c ´ÎÊý] [-Ae][-qX] [-r µµ°¸] [ËùÓûߢȡµÄÊý¾ÝÄÚÈÝ] ²ÎÊý£º

-nn£ºÖ±½ÓÒÔ IP ¼° port number ÏÔʾ£¬¶ø·ÇÖ÷»úÃûÓë·þÎñÃû³Æ

-i £ººóÃæ½ÓÒª¡º¼àÌý¡»µÄÍøÂç½Ó¿Ú£¬ÀýÈç eth0, lo, ppp0 µÈµÈµÄ½çÃæ£»

-w £ºÈç¹ûÄãÒª½«¼àÌýËùµÃµÄ·â°üÊý¾Ý´¢´æÏÂÀ´£¬ÓÃÕâ¸ö²ÎÊý¾Í¶ÔÁË£¡ºóÃæ½ÓµµÃû

-c £º¼àÌýµÄ·â°üÊý£¬Èç¹ûûÓÐÕâ¸ö²ÎÊý£¬ tcpdump »á³ÖÐø²»¶ÏµÄ¼àÌý£¬ Ö±µ½Ê¹ÓÃÕßÊäÈë [ctrl]-c Ϊֹ¡£

-A £º·â°üµÄÄÚÈÝÒÔ ASCII ÏÔʾ£¬Í¨³£ÓÃÀ´×½È¡ WWW µÄÍøÒ³·â°ü×ÊÁÏ¡£ -e £ºÊ¹ÓÃ×ÊÁÏÁ¬½Ó²ã (OSI µÚ¶þ²ã) µÄ MAC ·â°üÊý¾ÝÀ´ÏÔʾ£» -q £º½öÁгö½ÏΪ¼ò¶ÌµÄ·â°üÐÅÏ¢£¬Ã¿Ò»ÐеÄÄÚÈݱȽϾ«¼ò

-X £º¿ÉÒÔÁгöÊ®Áù½øÖÆ (hex) ÒÔ¼° ASCII µÄ·â°üÄÚÈÝ£¬¶ÔÓÚ¼àÌý·â°üÄÚÈݺÜÓÐÓÃ

-r £º´ÓºóÃæ½ÓµÄµµ°¸½«·â°üÊý¾Ý¶Á³öÀ´¡£ÄǸö¡ºµµ°¸¡»ÊÇÒѾ­´æÔڵĵµ°¸£¬ ²¢ÇÒÕâ¸ö¡ºµµ°¸¡»ÊÇÓÉ -w ËùÖÆ×÷³öÀ´µÄ¡£ ËùÓûߢȡµÄÊý¾ÝÄÚÈÝ£ºÎÒÃÇ¿ÉÒÔרÃÅÕë¶ÔijЩͨѶЭÒé»òÕßÊÇ IP À´Ô´½øÐзâ°üߢȡ£¬

ÄǾͿÉÒÔ¼ò»¯Êä³öµÄ½á¹û£¬²¢È¡µÃ×îÓÐÓõÄÐÅÏ¢¡£³£¼ûµÄ±íʾ·½·¨ÓУº 'host foo', 'host 127.0.0.1' £ºÕë¶Ôµ¥²¿Ö÷»úÀ´½øÐзâ°üߢȡ 'net 192.168' £ºÕë¶Ôij¸öÍøÓòÀ´½øÐзâ°üµÄߢȡ£»

'src host 127.0.0.1' 'dst net 192.168'£ºÍ¬Ê±¼ÓÉÏÀ´Ô´(src)»òÄ¿±ê(dst)ÏÞÖÆ 'tcp port 21'£º»¹¿ÉÒÔÕë¶ÔͨѶЭÒéÕì²â£¬Èç tcp, udp, arp, ether µÈ »¹¿ÉÒÔÀûÓà and Óë or À´½øÐзâ°üÊý¾ÝµÄÕûºÏÏÔÊ¾ÄØ£¡

·¶ÀýÒ»£ºÒÔ IP Óë port number ׽Ϡeth0 Õâ¸öÍøÂ翨Éϵķâ°ü£¬³ÖÐø 3 Ãë [root@linux ~]# tcpdump -i eth0 -nn

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 116:232(116) ack 1 win 9648

01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 232:364(132) ack 1 win 9648

<==°´Ï [ctrl]-c Ö®ºó½áÊø

6680 packets captured <==×½ÏÂÀ´µÄ·â°üÊýÁ¿ 14250 packets received by filter <==ÓɹýÂËËùµÃµÄ×Ü·â°üÊýÁ¿ 7512 packets dropped by kernel <==±»ºËÐÄËù¶ªÆúµÄ·â°ü Èç¹ûÄãÊǵÚÒ»´Î¿´ tcpdump µÄ man page ʱ£¬¿Ï¶¨Ò»¸öÍ·Á½¸ö´ó£¬ÒòΪ tcpdump ¼¸ºõ¶¼ÊÇ·ÖÎö·â°üµÄ±íÍ·Êý¾Ý£¬Óû§Èç¹ûûÓмòÒ×µÄÍøÂç·â°ü»ù´¡£¬Òª¿´¶®·ÛÄÑ…È£¡ ËùÒÔ£¬ÖÁÉÙÄúµÃÒª»Øµ½ÍøÂç»ù´¡ÀïÃæÈ¥½« TCP ·â°üµÄ±íÍ·Êý¾ÝÀí½âÀí½â²ÅºÃ°¡£¡ ^_^£¡ÖÁÓÚÄǸö·¶ÀýÒ»Ëù²úÉúµÄÊä³ö·¶ÀýÖУ¬ÎÒÃÇ¿ÉÒÔÔ¼ÂÔÇø·ÖΪÊý¸ö×ֶΣ¬ ÎÒÃÇÒÔ·¶ÀýÒ»µ±ÖÐÄǸöÌØÊâ×ÖÌåÐÐÀ´ËµÃ÷һϣº 01:33:40.41£ºÕâ¸öÊÇ´Ë·â°ü±»ß¢È¡µÄʱ¼ä£¬¡ºÊ±:·Ö:Ãë¡»µÄµ¥Î»£» IP£ºÍ¸¹ýµÄͨѶЭÒéÊÇ IP £»

192.168.1.100.22 > £º´«ËͶËÊÇ 192.168.1.100 Õâ¸ö IP£¬¶ø´«Ë굀 port number Ϊ 22£¬Äú±ØÐëÒªÁ˽âµÄÊÇ£¬ÄǸö´óÓÚ (>) µÄ·ûºÅÖ¸µÄÊÇ·â°üµÄ´«Êä·½Ïòร¡ 192.168.1.11.1190£º½ÓÊͦ赀 IP ÊÇ 192.168.1.11£¬ ÇÒ¸ÃÖ÷»ú¿ªÆô port 1190 À´½ÓÊÕ£»

P 116:232(116)£ºÕâ¸ö·â°ü´øÓÐ PUSH µÄÊý¾Ý´«Êä±êÖ¾£¬ ÇÒ´«ÊäµÄÊý¾ÝΪÕûÌåÊý¾ÝµÄ 116~232 byte£¬ËùÒÔÕâ¸ö·â°ü´øÓÐ 116 bytes µÄÊý¾ÝÁ¿£» ack 1 win 9648£ºACKÓë Window size µÄÏà¹Ø×ÊÁÏ¡£

×î¼òµ¥µÄ˵·¨£¬¾ÍÊǸ÷â°üÊÇÓÉ 192.168.1.100 ´«µ½ 192.168.1.11£¬Í¸¹ýµÄ port ÊÇÓÉ 22 µ½ 1190 £¬ ÇÒ´øÓÐ 116 bytes µÄÊý¾ÝÁ¿£¬Ê¹ÓõÄÊÇ PUSH µÄÆì±ê£¬¶ø²»ÊÇ SYN Ö®ÀàµÄÖ÷¶¯Áª»ú±êÖ¾¡£ ºÇºÇ£¡²»ÈÝÒ׿´µÄ¶®°É£¡ËùÒÔ˵£¬ÉÏÍ·²Å½²ÇëÎñ±Øµ½ TCP ±íÍ·Êý¾ÝµÄ²¿·ÖÈ¥ÇÆÒ»ÇÆµÄ°¡£¡ ÔÙÀ´£¬Ò»¸öÍøÂç״̬ºÜæµÄÖ÷»úÉÏÃæ£¬ÄãÏëҪȡµÃij²¿Ö÷»ú¶ÔÄãÁª»úµÄ·â°üÊý¾Ý¶øÒÑʱ£¬ ʹÓà tcpdump ÅäºÏ¹ÜÏßÃüÁîÓëÕý¹æ±íʾ·¨Ò²¿ÉÒÔ£¬²»¹ý£¬±Ï¾¹²»ºÃ׽ȡ£¡ ÎÒÃÇ¿ÉÒÔ͸¹ý tcpdump µÄ±íʾ·¨¹¦ÄÜ£¬¾ÍÄܹ»ÇáÒ׵Ľ«ËùÐèÒªµÄÊý¾Ý¶ÀÁ¢µÄÈ¡³öÀ´¡£ ÔÚÉÏÃæµÄ·¶ÀýÒ»µ±ÖУ¬ÎÒÃǽöÕë¶Ô eth0 ×ö¼àÌý£¬ËùÒÔÕû¸ö eth0 ½Ó¿ÚÉÏÃæµÄÊý¾Ý¶¼»á±»ÏÔʾµ½ÆÁÄ»ÉÏ£¬ ²»ºÃ·ÖÎö°¡£¡ÄÇôÎÒÃÇ¿ÉÒÔ¼ò»¯Âð£¿ÀýÈçֻȡ³ö port 21 µÄÁª»ú·â°ü£¬¿ÉÒÔÕâÑù×ö£º [root@linux ~]# tcpdump -i eth0 -nn port 21

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 01:54:37.96 IP 192.168.1.11.1240 > 192.168.1.100.21: . ack 1 win 65535

01:54:37.96 IP 192.168.1.100.21 > 192.168.1.11.1240: P 1:21(20) ack 1 win 5840 01:54:38.12 IP 192.168.1.11.1240 > 192.168.1.100.21: . ack 21 win 65515

01:54:42.79 IP 192.168.1.11.1240 > 192.168.1.100.21: P 1:17(16) ack 21 win 65515 01:54:42.79 IP 192.168.1.100.21 > 192.168.1.11.1240: . ack 17 win 5840

01:54:42.79 IP 192.168.1.100.21 > 192.168.1.11.1240: P 21:55(34) ack 17 win 5840 ÕâÑù¾Í½öÌá³ö port 21 µÄÐÅÏ¢¶øÒÑ£¬ÇÒ×Ðϸ¿´µÄ»°£¬Äã»á·¢ÏÖ·â°üµÄ´«µÝ¶¼ÊÇË«ÏòµÄ£¬ client ¶Ë·¢³ö¡ºÒªÇó¡»¶ø server ¶ËÔòÓèÒÔ¡ºÏìÓ¦¡»£¬ËùÒÔ£¬µ±È»ÊÇÓÐÈ¥Óлذ¡£¡ ¶øÎÒÃÇÒ²¾Í¿ÉÒÔ¾­¹ýÕâ¸ö·â°üµÄÁ÷ÏòÀ´Á˽⵽·â°üÔË×÷µÄ¹ý³Ì¡£ ¾ÙÀýÀ´Ëµ£º

ÎÒÃÇÏÈÔÚÒ»¸öÖÕ¶Ë»ú´°¿ÚÊäÈ롺 tcpdump -i lo -nn ¡» µÄ¼àÌý£¬ ÔÙÁí¿ªÒ»¸öÖÕ¶Ë»ú´°¿ÚÀ´¶Ô±¾»ú (127.0.0.1) µÇÈ롺ssh localhost¡» ÄÇôÊä³öµÄ½á¹û»áÊÇÈçºÎ£¿ [root@linux ~]# tcpdump -i lo -nn

1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 2 listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes

3 11:02:54.253777 IP 127.0.0.1.32936 > 127.0.0.1.22: S 933696132:933696132(0) win 32767

4 11:02:54.253831 IP 127.0.0.1.22 > 127.0.0.1.32936: S 920046702:920046702(0) ack 933696133 win 32767

5 11:02:54.253871 IP 127.0.0.1.32936 > 127.0.0.1.22: . ack 1 win 8192

6 11:02:54.272124 IP 127.0.0.1.22 > 127.0.0.1.32936: P 1:23(22) ack 1 win 8192

7 11:02:54.272375 IP 127.0.0.1.32936 > 127.0.0.1.22: . ack 23 win 8192

ÉϱíÏÔʾµÄÍ·Á½ÐÐÊÇ tcpdump µÄ»ù±¾ËµÃ÷£¬È»ºó£º

µÚ 3 ÐÐÏÔʾµÄÊÇ¡ºÀ´×Ô client ¶Ë£¬´øÓÐ SYN Ö÷¶¯Áª»úµÄ·â°ü¡»£¬ µÚ 4 ÐÐÏÔʾµÄÊÇ¡ºÀ´×Ô server ¶Ë£¬³ýÁËÏìÓ¦ client ¶ËÖ®Íâ(ACK)£¬»¹´øÓÐ SYN Ö÷¶¯Áª»úµÄ±êÖ¾£»

µÚ 5 ÐÐÔòÏÔʾ client ¶ËÏìÓ¦ server È·¶¨Áª»ú½¨Á¢ (ACK) µÚ 6 ÐÐÒÔºóÔò¿ªÊ¼½øÈëÊý¾Ý´«ÊäµÄ²½Öè¡£

Èç¹ûÎÒÃÇʹÓà tcpdump ÔÚ router ÉϼàÌý¡ºÃ÷Âë¡»µÄ´«ÊäÊý¾Ý£¬ ÀýÈç FTP ´«ÊäЭÒ飬ÎÒÃÇÏÈÔÚÖ÷»ú¶ËÏ´ tcpdump -i lo port 21 -nn -X ¡»È»ºóÔÙÒÔ ftp µÇÈë±¾»ú£¬²¢ÊäÈëÕ˺ÅÓëÃÜÂ룬 ½á¹ûÄã¾Í¿ÉÒÔ·¢ÏÖÈçϵÄ×´¿ö£º [root@linux ~]# tcpdump -i lo -nn -X 'port 21'

0x0030: 0e2e 0b61 3232 3020 2876 7346 5450 6420 ...a220.(vsFTPd. 0x0030: 0e2e 0b67 5553 4552 2064 6d74 7361 690d ...gUSER.dmtsai. 0x0030: 0e2e 1b38 5041 5353 206d 7970 6173 7377 ...8PASS.mypassw

ÉÏÃæµÄÊä³ö½á¹ûFTP Èí¼þʹÓõÄÊÇ vsftpd £¬²¢ÇÒʹÓÃÕßÊäÈë dmtsai Õâ¸öÕ˺ÅÃû³Æ£¬ÇÒÃÜÂëÊÇ mypasswordisyou

ΪÁËÈÃÍøÂç½Ó¿Ú¿ÉÒÔÈà tcpdump ¼àÌý£¬ËùÒÔÖ´ÐÐ tcpdump Ê±ÍøÂç½Ó¿Ú»áÆô¶¯ÔÚ ¡º´íÂÒģʽ (promiscuous)¡»£¬ËùÒÔÄã»áÔÚ /var/log/messages ÀïÃæ¿´µ½ºÜ¶àµÄ¾¯¸æÑ¶Ï¢£¬ ֪ͨÄã˵ÄãµÄÍøÂ翨±»É趨³ÉΪ´íÂÒģʽ£¡±ðµ£ÐÄ£¬ÄÇÊÇÕý³£µÄ¡£ ÖÁÓÚ¸ü¶àµÄÓ¦Óã¬Çë²Î¿¼ man tcpdump ÀýÌ⣺ÈçºÎʹÓà tcpdump ¼àÌý (1)À´×Ô eth0 ÊÊÅ俨ÇÒ (2)ͨѶЭÒéΪ port 22 £¬(3)Ä¿±êÀ´Ô´Îª 192.168.1.100 µÄ·â°ü×ÊÁÏ£¿

´ð£º tcpdump -i eth0 -nn 'port 22 and src host 192.168.1.100'

arp¹ÊÕÏ

¹ÊÕÏÏÖÏ󣺾ÖÓòÍøÖеÄһ̨²ÉÓÃsolaris²Ù×÷ϵͳµÄ·þÎñÆ÷A-SERVERÍøÂçÁ¬½Ó²»Õý³££¬´ÓÈÎÒâÖ÷»úÉ϶¼ÎÞ·¨pingͨ¸Ã·þÎñÆ÷¡£

ÅŲ飺Ê×Ïȼì²éϵͳ£¬ÏµÍ³±¾Éí¹¤×÷Õý³££¬ÎÞÌØÊâ½ø³ÌÔËÐУ¬cpu£¬ÄÚ´æÀûÓÃÂÊÕý³££¬ÎÞ¹Ò½ÓÈκÎÐÎʽµÄ·À»ðǽ£¬ÍøÏßÕý³£¡£

´ËʱÎÒÃǽèÖútcpdumpÀ´½øÐйÊÕ϶¨Î»£¬Ê×ÏÈÎÒÃǽ«´ÓB-CLIENTÖ÷»úÉÏÖ´ÐÐpingÃüÁ·¢ËÍicmpÊý¾Ý°ü¸øA-SERVER£¬ÈçÏ£º [root@redhat log]# ping A-SERVER

PING A-SERVER from B-CLIENT : 56(84) bytes of data.

´ËʱÔÚA-SERVERÆô¶¯tcpdump£¬¶ÔÀ´×ÔÖ÷»úB-CLIENTµÄÊý¾Ý°ü½øÐв¶»ñ¡£ A-SERVER# tcpdump host B-CLIENT tcpdump: listening on hme0

16:32:32.611251 arp who-has A-SERVER tell B-CLIENT 16:32:33.611425 arp who-has A-SERVER tell B-CLIENT 16:32:34.611623 arp who-has A-SERVER tell B-CLIENT

ÎÒÃÇ¿´µ½£¬Ã»ÓÐÊÕµ½Ô¤ÁÏÖеÄICMP±¨ÎÄ£¬·´¶ø²¶»ñµ½ÁËB-CLIENT·¢Ë͵Äarp¹ã²¥°ü£¬ÓÉÓÚÖ÷»úB-CLIENTÎÞ·¨ÀûÓÃarpµÃµ½·þÎñÆ÷A-SERVERµÄµØÖ·£¬Òò