tcpdump是Linux下实时捕获分析网络数据包的核心工具,支持基础抓包保存、协议/主机/子网过滤、实时显示限制、管道动态分析五类实战场景。

如果您需要在Linux系统中实时捕获和分析网络数据包,tcpdump是最常用且功能强大的命令行工具之一。以下是针对不同分析场景的多种tcpdump实战应用方法:
一、基础抓包与保存
该方法用于捕获指定接口上的原始流量并保存为文件,便于后续用Wireshark等工具深入分析。默认情况下tcpdump仅显示简略摘要,保存为pcap格式可保留完整帧结构。
1、执行sudo tcpdump -i eth0 -w capture.pcap,以root权限在eth0接口上持续捕获所有流量并写入本地文件。
2、按Ctrl+C中断捕获过程。
3、使用file capture.pcap验证文件格式是否为PCAP。
4、将capture.pcap复制至图形界面环境,用Wireshark打开进行协议层级解析。
二、按协议类型过滤抓包
通过表达式语法限制捕获范围,减少无关数据干扰,提升分析效率。tcpdump支持基于协议名、端口号、方向等条件组合过滤。
1、执行sudo tcpdump -i any port 80 -w http.pcap,捕获所有经过80端口的流量(含HTTP请求与响应)。
2、执行sudo tcpdump -i any icmp -w ping.pcap,仅捕获ICMP协议数据包,适用于诊断连通性问题。
3、执行sudo tcpdump -i any 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0' -w syn_ack.pcap,捕获TCP三次握手阶段的SYN或ACK标志位置位的数据包。
4、确认tcpflags字段在tcpdump中需配合方括号引用,避免shell解析错误。
三、按主机或子网范围过滤抓包
该方法聚焦于特定通信节点,适用于排查某台服务器异常外联、内部主机横向移动等安全分析任务。支持IPv4和IPv6地址匹配。
1、执行sudo tcpdump -i eth0 host 192.168.1.100 -w target_host.pcap,仅捕获与192.168.1.100双向交互的所有流量。
2、执行sudo tcpdump -i eth0 net 10.0.0.0/8 -w internal_net.pcap,捕获目标或源属于10.0.0.0/8网段的所有数据包。
客客出品专业威客系统英文名称KPPW,也是keke produced professional witkey的缩写。KPPW是一款基于PHP+MYSQL技术构架的威客系统,积客客团队多年实践和对威客模式商业化运作的大量调查分析而精心策划研发,是您轻松搭建威客网站的首选利器。KPPW针对威客任务和商品交易模式进行了细致的分析,提供完善威客任务流程控制解决方案,并将逐步分享威客系统专业化应用作为我们的
3、执行sudo tcpdump -i eth0 src host 172.16.5.20 and dst port 443,筛选出源IP为172.16.5.20且目的端口为443的出向HTTPS流量。
4、注意host关键字同时匹配源和目的,如需单向限定须显式使用src或dst前缀。
四、实时显示并限制输出长度
当无需保存文件而仅需快速查看流量特征时,可启用实时打印模式,并控制每包显示字节数,避免终端刷屏过快影响观察。
1、执行sudo tcpdump -i lo -nn -X -s 128 port 53,监听回环接口,禁用域名与端口解析(-nn),以十六进制+ASCII混合格式显示前128字节(-s 128),聚焦DNS查询内容。
2、执行sudo tcpdump -i eth0 -A -c 10 port 22,以ASCII文本方式(-A)显示前10个(-c 10)SSH连接的数据包载荷。
3、执行sudo tcpdump -i any -tttt port 3306,添加微秒级绝对时间戳(-tttt),便于比对MySQL客户端与服务端交互时序。
4、确保-s 0参数用于捕获完整数据包(非截断),但在高吞吐场景下可能显著增加CPU开销。
五、结合管道进行动态分析
利用Linux管道机制将tcpdump输出直接传递给其他命令,实现不落地的流式处理,适用于日志聚合、关键词提取、异常行为告警等轻量级分析需求。
1、执行sudo tcpdump -i eth0 -n -q -t port 53 2>/dev/null | head -20,静默输出DNS查询摘要(-q),去除时间戳(-t),取前20行快速识别高频域名请求。
2、执行sudo tcpdump -i any -n -l port 80 | grep -E 'GET|POST' | awk '{print $3,$5}',实时提取HTTP请求行中的源IP与目标URL路径片段。
3、执行sudo tcpdump -i eth0 -n -l icmp | cut -d' ' -f3,5 | sort | uniq -c | sort -nr | head -5,统计最近ICMP会话中访问最频繁的源-目的IP对。
4、注意-l参数启用行缓冲,确保管道下游命令能即时接收到逐行输出,否则默认全缓冲会导致延迟。









