号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
说到抓包,很多网工第一反应就是 Wireshark,但真正在线上服务器、纯命令行环境下搞事的,还是得靠 tcpdump。
别看它界面朴素,其实功能强得很,过滤表达式一套一套的,不管你是想抓某个 IP、某个端口,还是指定协议的流量,都能精准拿下。
用熟了之后,排查问题、定位异常,那叫一个快准狠。
这篇案例给你讲讲tcpdump常见的使用场景和命令。
今日文章阅读福利:《 2025网工必备60个好用工具下载包 》
添加好友,发送暗号“工具60”,俱乐部精心整理的60个好用工具,全部分享给你。
01 tcpdump简介
tcpdump是一个抓包工具,可以运行在Linux、Windows主机上。通过指定所要过滤报文的条件,捕获满足表达式的报文,则这个报文将会被捕获。
如果没有给出任何条件,则会捕获主机上所有的报文。
表达式中一般有如下几种类型的关键字:
1. 关于主机和端口的关键字:
包括host、port、net,例如host 192.168.1.1表示这是一台主机,net 192.168.0.0表示这是一个网络地址,port 22指明端口号是22,如果没有指明类型,则默认的类型是host
2. 数据传输方向的关键字:
包括src、dst、dst or src、dst and src,这些关键字指明了传输的方向,比如src 192.168.1.1说明数据包源地址是192.168.1.1,dst net 192.168.0.0指明目的网络地址是192.168.0.0,默认是监控主机对主机的src和dst,即默认监听本机和目标主机的所有数据。
3. 协议关键字:
ip、arp、rarp、tcp、udp等。
4. 运算类型关键字:
or、and、not、!
5. 辅助功能型关键字:
gateway、less、broadcast、greater
02 tcpdump使用场景和命令
1. 查看主机全部网卡
tcpdump -D 或者 tcpdump --list-interfaces
2. 监听指定网卡
tcpdump -i eth0 #-i 后面跟端口名称,指定捕获eth0上的数据包;如果不指定,默认抓取tcpdump -D 查询到的第一个网卡。
3. 捕获指定流经网卡上指定主机的数据包
tcpdump -i eth0 host 192.168.10.xx #过滤和主机192.168.10.xx有关的数据包; -c 指定抓包的个数
如果要同时抓取多台主机相关的数据包,可以使用or 连接多个不同的主机。
4. 捕获指定源和目标IP的报文
1) tcpdump -i eth0 src host 192.168.10.xx #捕获eth0上源主机为192.168.10.xx的所有数据包
2) tcpdump -i eth0 dst host 192.168.20.xx #捕获eth0所有发往主机192.168.20.xx 的数据包
5. 捕获指定端口的报文
tcpdump -i eth0 dst 192.168.70.xx and port 22 -c 10 # 捕获eth0上目标为192.168.70.xx 端口为22的报文
6. 捕获指定协议的报文
tcpdump icmp # 捕获icmp协议报文
tcpdump icmp and host 172.16.xx.xx # 捕获和172.16.xx.xx 相关的icmp协议报文
7. 保存抓包文件
tcpdump -i eno3 icmp -w xxx.pcap # 参数-w ,将抓包结果保存到xxx.pcap
整理:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部