centos 命令行 抓包工具_端口号


一、什么是tcpdump

tcpdump是Linux系统上最常用的抓包工具,用来抓取网络通信中的数据包,并进行分析。

另外,因为大多数网络安全设备(如防火墙)底层系统也是Linux,所以各种网络安全设备一般也内置tcpdump。

二、什么时候会用到tcpdump

1、当业务系统发生故障,比如客户端app无法连接服务器端,那么可以在服务器端进行tcpdump抓包,看客户端的连接请求是否到达了服务器。这样来排除是网络故障,还是软件上的bug。

2、tcpdump抓包是针对接口的,有时因为网络安全设备(如防火墙)配置错误,会导致数据报文误过滤。这个时候,则可以在防火墙的2个接口分别使用tcpdump进行抓包,如果发现进口有包,出口没了,那一定是被防火墙拦截了。

这样排错,比在防火墙一大堆过滤规则中进行排查要快速的多。

3、当然,tcpdump抓取各种协议报文,可以用来分析和学习。

三、tcpdump使用举例

1、抓取ens33接口所有报文,慎用。

这个在生产环境中,因为有大量报文产生,所以可能瞬间导致服务器资源耗尽,所以一定要慎用。

[root@ServerA ~]# tcpdump -i ens33


centos 命令行 抓包工具_tcpdump rpm包 下载_02

即使在实验环境,也很短的时间产生了19019个包


2、抓取和主机1.1.1.1之间的包

[root@ServerA ~]# tcpdump -i ens33 host 1.1.1.1 -n

这里的host 1.1.1.1是指定和哪个主机相关,-n是不进行ip和域名的解析


centos 命令行 抓包工具_服务器端_03


3、抓取和主机1.1.1.1之间的telnet包

[root@ServerA ~]# tcpdump -i ens33 host 1.1.1.1 and port 23 -n

这里用到了and,就是并且的条件,然后指定端口号为23


centos 命令行 抓包工具_tcpdump rpm包 下载_04


4、抓取和1.1.1.1之间,端口号不是23的包

这里用到!,也就是非的意思,排除23端口的包,所以能看到25(smtp),67(dhcp)以及没端口的icmp,但是看不到23。其实已经做了telnet的操作,只是tcpdump在这里不捕获。


centos 命令行 抓包工具_端口号_05


5、抓取和192.168.0.0/24网段相关的dns包

[root@ServerA ~]# tcpdump -i ens33 net 192.168.0 and port 53 -n


centos 命令行 抓包工具_tcpdump rpm包 下载_06


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直接打开)

centos 命令行 抓包工具_端口号_07