tcpdump功能
tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具
tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息
抓包选项
-c:指定要抓取的包数量。
-i interface:指定tcpdump需要监听的接口。默认会抓取第一个网络接口
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-Q:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、“out"和"inout”,默认为"inout"。
dst port ! 22 : 不抓取目标端口是22的数据包
-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,
:输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,
:从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。
抓取给本机ens33 发送的10个icmp包
[root@docker ~]# tcpdump icmp -i ens33 -c 10 -Q in
截获主机ens33网卡上所有的ssh包
[root@docker ~]# tcpdump port 22 -i ens33
打印所有192.168.174.137的主机收到和发出的所有的数据包
[root@docker ~]# tcpdump host 192.168.174.137 -i ens33