一、什么是tcpdump
tcpdump是Linux系统上最常用的抓包工具,用来抓取网络通信中的数据包,并进行分析。
另外,因为大多数网络安全设备(如防火墙)底层系统也是Linux,所以各种网络安全设备一般也内置tcpdump。
二、什么时候会用到tcpdump
1、当业务系统发生故障,比如客户端app无法连接服务器端,那么可以在服务器端进行tcpdump抓包,看客户端的连接请求是否到达了服务器。这样来排除是网络故障,还是软件上的bug。
2、tcpdump抓包是针对接口的,有时因为网络安全设备(如防火墙)配置错误,会导致数据报文误过滤。这个时候,则可以在防火墙的2个接口分别使用tcpdump进行抓包,如果发现进口有包,出口没了,那一定是被防火墙拦截了。
这样排错,比在防火墙一大堆过滤规则中进行排查要快速的多。
3、当然,tcpdump抓取各种协议报文,可以用来分析和学习。
三、tcpdump使用举例
1、抓取ens33接口所有报文,慎用。
这个在生产环境中,因为有大量报文产生,所以可能瞬间导致服务器资源耗尽,所以一定要慎用。
即使在实验环境,也很短的时间产生了19019个包
2、抓取和主机1.1.1.1之间的包
这里的host 1.1.1.1是指定和哪个主机相关,-n是不进行ip和域名的解析
3、抓取和主机1.1.1.1之间的telnet包
这里用到了and,就是并且的条件,然后指定端口号为23
4、抓取和1.1.1.1之间,端口号不是23的包
这里用到!,也就是非的意思,排除23端口的包,所以能看到25(smtp),67(dhcp)以及没端口的icmp,但是看不到23。其实已经做了telnet的操作,只是tcpdump在这里不捕获。
5、抓取和192.168.0.0/24网段相关的dns包
6、抓取的报文不需要在屏幕显示,而是写入一个文件
可以通过scp将文件下载到windows,然后通过wirshark打开(当然也可以直接用tcpdump -r直接打开)