tcpdump
tcpdump 是一个 网络抓包 工具,用于嗅探经过主机的网络报文,排查问题时非常有用。本文介绍 tcpdump 的 基本用法 ,并提供大量 典型示例 。
基本用法
抓取经过 enp0s3网卡80 端口的报文:
$ tcpdump -ni enp0s3 port 80
其中, -n 表示不将地址转化成名字,这个选项在网络工具中很常见, ip 、 ping 、 ss 等命令也有。-i 选项指定所嗅探的 网络设备 ;port 80 是一个 表达式 ( expression ),用于过滤报文,表示只输出端口为 80 的报文。
注解
网络工具命令一般通过 DNS 反解将 IP 地址转化成域名输出展示。DNS 查询有一定耗时,特别是记录查询失败时,因此命令输出可能会有明显延迟。
例如,运行 ping 命令时, ICMP 回显答复报文已经收到,而命令却还没输出。这种卡顿现象只需指定 -n 选项即可解决。
典型示例
嗅探环回流量, -i 指定环回设备 lo :
$ tcpdump -ni lo
嗅探所有网络流量, -i 指定任意网络设备,为特殊关键字 any :
$ tcpdump -ni any
通过表达式过滤 ICMP 协议流量:
$ tcpdump -ni any icmp
通过表达式过滤给定主机( IP 地址)的流量:
$ tcpdump -ni any host 10.0.1.2
过滤给定主机 80 端口的流量:
$ tcpdump -ni any host 10.0.1.2 and port 80
匹配 TCP 分组标志位,以 SYN 为例:
$ tcpdump -ni any port 443 and "tcp[tcpflags] & tcp-syn != 0"
下一步
订阅更新,获取更多学习资料,请关注我们的 微信公众号 :