Linux抓包工具tcpdump最常用使用案例

发表于:2023-4-27 09:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:百哥    来源:知乎

  一、什么是tcpdump
  tcpdump是Linux系统上最常用的抓包工具,用来抓取网络通信中的数据包,并进行分析。
  另外,因为大多数网络安全设备(如防火墙)底层系统也是Linux,所以各种网络安全设备一般也内置tcpdump。
  二、什么时候会用到tcpdump
  1、当业务系统发生故障,比如客户端app无法连接服务器端,那么可以在服务器端进行tcpdump抓包,看客户端的连接请求是否到达了服务器。这样来排除是网络故障,还是软件上的bug。
  2、tcpdump抓包是针对接口的,有时因为网络安全设备(如防火墙)配置错误,会导致数据报文误过滤。这个时候,则可以在防火墙的2个接口分别使用tcpdump进行抓包,如果发现进口有包,出口没了,那一定是被防火墙拦截了。
  这样排错,比在防火墙一大堆过滤规则中进行排查要快速的多。
  3、当然,tcpdump抓取各种协议报文,可以用来分析和学习。
  三、tcpdump使用举例
  1、抓取ens33接口所有报文,慎用。
  这个在生产环境中,因为有大量报文产生,所以可能瞬间导致服务器资源耗尽,所以一定要慎用。
  [root@ServerA ~]# tcpdump -i ens33
即使在实验环境,也很短的时间产生了19019个包
  2、抓取和主机1.1.1.1之间的包
  [root@ServerA ~]# tcpdump -i ens33 host 1.1.1.1 -n
  这里的host 1.1.1.1是指定和哪个主机相关,-n是不进行ip和域名的解析。
  3、抓取和主机1.1.1.1之间的telnet包
  [root@ServerA ~]# tcpdump -i ens33 host 1.1.1.1 and port 23 -n
  这里用到了and,就是并且的条件,然后指定端口号为23
  4、抓取和1.1.1.1之间,端口号不是23的包
  这里用到!,也就是非的意思,排除23端口的包,所以能看到25(smtp),67(dhcp)以及没端口的icmp,但是看不到23。其实已经做了telnet的操作,只是tcpdump在这里不捕获。
  5、抓取和192.168.0.0/24网段相关的dns包
  [root@ServerA ~]# tcpdump -i ens33 net 192.168.0 and port 53 -n
  6、抓取的报文不需要在屏幕显示,而是写入一个文件
  [root@ServerA ~]# tcpdump -i ens33 net 192.168.0 and port 53 -n -w /root/dns.pcap
  tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
  ^C23 packets captured
  23 packets received by filter
  0 packets dropped by kernel
  [root@ServerA ~]# ls -l /root/dns.pcap
  -rw-r--r-- 1 tcpdump tcpdump 2991 Apr 2 16:04 /root/dns.pcap
  [root@ServerA ~]#
  可以通过scp将文件下载到windows,然后通过wirshark打开(当然也可以直接用tcpdump -r直接打开)
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号