tcpdump命令

tcpdump是一款强大的网络数据包分析工具,用于在网络层截获和分析数据包。本文详细介绍了tcpdump的安装、常用命令及过滤技巧,包括捕获特定网卡、数量、协议、端口和IP的数据包,以及如何利用逻辑语句进行高级过滤。此外,还展示了如何在Docker环境下抓包,帮助读者深入理解网络流量监控和故障排查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大脑是用来思考的,不应该用来存储。CPU不应该用来做存储。因此工具多记笔记,多完善笔记。重要的是具备逻辑思维。逻辑思维加上笔记,你就是大牛。

用简单的话来定义tcpdump,就是:dump the traffic on a network,对网络上的数据包进行截获的包分析工具。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

命令格式

tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
        [ -s snaplen ] [ -w file ] [ expression ]

常见命令

1、安装tcpdump

yum install tcpdump


2、列出本机所有的网卡接口

tcpdump -D


3、捕获特定网卡的数据包

tcpdump -i eth0


4、捕获具体数量的数据包

tcpdump -c 5 -i eth0


5、捕获的数据包保存到指定的文件

tcpdump -w 0001.pcap -i eth0


6、捕获的数据包显示IP而不是域名

tcpdump -n -i eth0


7、捕获指定协议的数据包

tcpdump -i eth0 tcp


8、捕获特定端口的数据包

tcpdump -i eth0 port 22

        dst port  22为目的端口为22;src port为源接口;port两目的和源接口。


9、捕获从指定IP过来的数据包

tcpdump -i eth0 src 192.168.0.2


10、捕获去往目的IP数据包

tcpdump -i eth0 dst 50.116.66.139


11、捕获HTTP请求的URL

tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"


12、捕获HTTP的POST请求的密码

tcpdump -s 0 -A -n -l | egrep -i "POST /|pwd=|passwd=|password=|Host:"


13、以ASCII码的格式打印

tcpdump -A -i eth0


14、以ASCII码和十六进制打印

tcpdump -XX -i eth0


15、读取捕获的数据包文件

tcpdump -r 0001.pcap

16、抓取本地环路数据包

tcpdump -i lo udp    // 抓取UDP数据
tcpdump -i lo udp port 1234 // 抓取端口1234的UDP数据
tcpdump -i lo port 1234  // 抓取端口1234的数据

17、抓取特定类型的数据包:

tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'

        抓取所有经过网卡1的SYN类型数据包

tcpdump -i eth1 udp dst port 53

        抓取经过网卡1的所有DNS数据包(默认端口)

18、逻辑语句过滤

tcpdump -i eth0 '(( tcp) and ((dst net 172.16) and (not dst host 192.268.1.200)))'

        抓取所有经过网卡1,目的网络是172.16,但目的主机不是192.168.1.200的TCP数据

19、宿主机抓包docker实例

        在宿主机上监听指定Docker 实例的网络流量,需要首先找到在宿主机上与实例配对的网卡。再使用tcpdump 命令进行监听。

(1)进入到Docker实例中。

docker exec ‐it 1a /bin/bash 

(2)容器中执行查看参数的命令。

cat /sys/class/net/eth0/iflink 135

(3)退出容器,在宿主机上找到对应数字的网卡

 bridge link show

133: veth54e9e5c state UP @(null): <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master docker0 state forwarding priority 32 cost 2 
135: veth98165f5 state UP @(null): <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master docker0 state forwarding priority 32 cost 2

也可以得到网卡名称: veth98165f5 , @if134 的意思是与134号网卡通过 Veth pair 技术连通网络。

(4)对docker网卡进行抓包,并将抓包结果写入到文件中,该文件可以在Windows上的wireshark解析。

# 将抓包写入文件后,控制台上将不再显示抓包数据。 
sudo tcpdump ‐i veth98165f5 ‐w veth98165f5.pcap

# 读入抓包的文件并解析显示 
sudo tcpdump ‐r veth98165f5.pcap

 # 通过组合键,将抓包写入到文件,同时控制台显示出来。 
 # tcpdump抓包,写入标准输出;tee获取标准输出的内容,写入文件,并输出到标准 输出;tcpdump从标准输入中获取数据并解析。
sudo tcpdump ‐i veth98165f5 ‐w ‐ | tee veth98165f5.pcap | tcpdump ‐r ‐


 # 带有过滤条件的抓包
sudo tcpdump ‐i veth98165f5 port not 13506 and port not 5391 and port not 1883

参考

超级实用的tcpdump抓包命令,赶紧收藏吧!

抓包一张tcpdump小抄就够了 - Captain_Li - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fang·up·ad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值