当前位置: 首页 > news >正文

Linux 抓包入门:tcpdump 如何定位网络问题?

Linux 抓包入门:tcpdump 如何定位网络问题?

1. 前言

pingcurlss都不能完全说明问题时,就需要抓包。
抓包可以直接看到网络数据包有没有到达服务器、有没有返回、端口是否正确、连接是否被重置。

Linux 中最常用的命令行抓包工具是:

tcpdump

它适合在服务器上快速定位网络问题。

本文重点讲解:

  • tcpdump 基本用法;
  • 如何按网卡、主机、端口过滤;
  • 如何保存 pcap 文件;
  • 如何分析 TCP 三次握手;
  • 常见网络问题如何用 tcpdump 判断。

2. 安装 tcpdump

Ubuntu / Debian:

sudo apt install tcpdump

CentOS / RHEL:

sudo yum install tcpdump

查看版本:

tcpdump --version

抓包通常需要 root 权限。


3. 查看网卡

抓包前先查看网卡:

ip addr

常见网卡:

eth0 ens33 ens160 lo

如果不确定抓哪张网卡,可以使用:

sudo tcpdump -D

列出可抓包接口。


4. 基本抓包命令

抓取 eth0 上的数据包:

sudo tcpdump -i eth0

抓取并不解析域名和端口名:

sudo tcpdump -i eth0 -nn

推荐加-nn,输出更清晰。

限制抓 10 个包:

sudo tcpdump -i eth0 -nn -c 10

5. 按主机过滤

只抓某个 IP 相关的数据包:

sudo tcpdump -i eth0 -nn host 192.168.1.10

只抓源 IP:

sudo tcpdump -i eth0 -nn src host 192.168.1.10

只抓目标 IP:

sudo tcpdump -i eth0 -nn dst host 192.168.1.10

6. 按端口过滤

抓取 80 端口:

sudo tcpdump -i eth0 -nn port 80

抓取目标端口 8080:

sudo tcpdump -i eth0 -nn dst port 8080

抓取源端口 8080:

sudo tcpdump -i eth0 -nn src port 8080

抓取 TCP 80:

sudo tcpdump -i eth0 -nn tcp port 80

抓取 UDP 53:

sudo tcpdump -i eth0 -nn udp port 53

7. 组合过滤条件

抓某个客户端访问本机 8080:

sudo tcpdump -i eth0 -nn host 192.168.1.20 and port 8080

抓来自某 IP 且目标端口为 443:

sudo tcpdump -i eth0 -nn src host 192.168.1.20 and dst port 443

抓 80 或 443:

sudo tcpdump -i eth0 -nn 'port 80 or port 443'

复杂表达式建议加引号,避免被 Shell 解析。


8. 显示包内容

以 ASCII 显示数据内容:

sudo tcpdump -i eth0 -nn -A port 80

以十六进制和 ASCII 显示:

sudo tcpdump -i eth0 -nn -X port 80

HTTP 明文请求可以看到部分内容。
HTTPS 是加密的,通常看不到明文请求体。


9. 保存抓包文件

保存为 pcap 文件:

sudo tcpdump -i eth0 -nn port 8080 -w capture.pcap

之后可以用 Wireshark 打开分析。

读取 pcap 文件:

tcpdump -nn -r capture.pcap

抓包文件适合发给其他人协助分析。


10. TCP 三次握手怎么看

TCP 建立连接时会出现三次握手:

SYN SYN, ACK ACK

抓 8080 端口:

sudo tcpdump -i eth0 -nn tcp port 8080

如果看到:

client > server: Flags [S] server > client: Flags [S.] client > server: Flags [.]

说明 TCP 连接建立成功。

Flags 含义:

标志含义
SSYN
.ACK
FFIN
RRST
PPUSH

11. 常见问题判断

11.1 服务器收不到包

客户端访问时,服务器抓包:

sudo tcpdump -i eth0 -nn host 客户端IP and port 8080

如果完全没有包,说明请求没有到达服务器。
可能原因:

  • 客户端没发出;
  • 路由不通;
  • 云安全组拦截;
  • 上游防火墙拦截;
  • 抓错网卡。

11.2 服务器收到 SYN,但没有 SYN ACK

如果只看到客户端发 SYN:

client > server: Flags [S]

但没有服务器返回 SYN ACK,可能原因:

  • 服务没监听端口;
  • 本机防火墙丢包;
  • 内核没有响应;
  • 目标端口不对。

先检查:

ss -lntp | grep ':8080' iptables -L -n firewall-cmd --list-all

11.3 服务器返回 RST

如果看到:

server > client: Flags [R.]

说明连接被重置。

常见原因:

  • 端口没有服务监听;
  • 应用主动拒绝;
  • 中间设备重置连接;
  • 协议不匹配。

11.4 TCP 建立成功,但 HTTP 没响应

能看到三次握手,但 curl 一直等待。
说明网络层通了,问题可能在应用层:

  • 应用线程阻塞;
  • 后端处理慢;
  • 数据库卡住;
  • 反向代理超时;
  • 应用没有返回响应。

这时继续看应用日志和服务状态。


12. 抓 DNS 请求

DNS 通常使用 UDP 53。

sudo tcpdump -i eth0 -nn udp port 53

测试:

nslookup www.baidu.com

如果没有 DNS 请求发出,可能是本机解析配置问题。
如果请求发出但没有响应,可能是 DNS 服务器不可达。


13. 抓 ICMP ping 包

抓 ping:

sudo tcpdump -i eth0 -nn icmp

另一个终端执行:

ping 目标IP

可以看到 ICMP echo request 和 echo reply。


14. tcpdump 常用参数总结

参数作用
-i指定网卡
-nn不解析域名和端口名
-c指定抓包数量
-w保存到文件
-r读取 pcap 文件
-AASCII 显示内容
-X十六进制和 ASCII 显示
host按主机过滤
src源地址
dst目标地址
port按端口过滤
tcpTCP 协议
udpUDP 协议
icmpICMP 协议

15. 小结

tcpdump 的价值在于:

直接看到数据包有没有到达、有没有返回、返回了什么。

常用命令:

sudo tcpdump -i eth0 -nn sudo tcpdump -i eth0 -nn host 192.168.1.10 sudo tcpdump -i eth0 -nn port 8080 sudo tcpdump -i eth0 -nn tcp port 80 sudo tcpdump -i eth0 -nn -w capture.pcap

排查网络问题时,可以这样判断:

抓不到包:请求没到服务器 只看到 SYN:服务或防火墙可能有问题 看到 RST:连接被拒绝或重置 握手成功但无响应:应用层问题

掌握 tcpdump 后,网络排查就不再只能靠猜。

http://www.cnnetsun.cn/news/3608212.html

相关文章:

  • 【抖音AI运营黄金公式】:1套提示词模板+3类智能工具+5类数据看板=ROI提升270%(附实测数据)
  • Coze知识库配置终极checklist(含12个API响应码映射表+5个Webhook触发边界条件),错过=生产环境知识断连风险↑300%
  • 洛谷 P4994 终于结束的起点
  • 2026 年教师评职称论文:别让假文献与 Word 格式拖慢材料准备
  • 智能摘要技术:从信息抽取到文本压缩的NLP实践
  • 电路的参考方向怎么看
  • TI DCAN寄存器实战:从配置到Bus-Off恢复的嵌入式CAN总线调试指南
  • 从工具到队友:Gitee DevSecOps 与 AI Agent 全链路落地实践
  • AI Agent 面试题 611:RAG系统中的查询扩展(Query Expansion)技术
  • 嵌入式系统数据完整性保障:HTU奇偶校验机制原理与应用
  • 基于OCSSA优化VMD与CNN-BiLSTM的轴承故障诊断方法
  • 深入解析ADC寄存器:中断、FIFO与通道选择模式实战指南
  • 紧急预警!3款热门AI音乐工具正悄悄修改用户协议:你的生成音频版权可能已不属于你(附2024年7月最新条款逐条比对)
  • 基础三⼤查找
  • 嵌入式EMIF寄存器配置实战:从时序计算到SDRAM与NOR Flash驱动
  • AI-Native 云原生架构实战:从 Kubernetes 容器编排到 AI Agent 智能体编排
  • 2026 年企业体系认证咨询服务深度评测与选型指南
  • OpenWrt/LEDE软路由AP模式配置实战:无缝融入现有网络
  • 《Claude Code工程化实践》加课5 -Context Engineering :给模型正确的上下文,而不是更多的上下文
  • 【CTF-MISC-压缩包】脚本实现批量提取压缩包数据
  • GEO优化别买排名神话:广拓时代谈AI搜索真正优化什么
  • 【CTF-MISC-流量】从HTTP流中,根据图片头标识,提取图片,放到CyberChef中解析
  • 深入解析C2000 ePWM寄存器:从原理到电机控制与数字电源实战
  • HarmonyOS应用实战-启示散页-19-空态不是一句暂无数据:给题库、收藏和历史分别设计可恢复入口
  • 技术海报/博文封面没质感?5款艺术字体+配色排版实战技巧!职场人导航还有更多惊喜!
  • C语言-字符函数和字符串函数
  • 园区除雪设备分类
  • 嵌入式系统硬件CRC控制器:原理、模式与应用实战
  • RSA非对称加密在软件授权验证中的原理与应用:以Beyond Compare为例
  • 【单片机毕业设计推荐】 基于 STM32 的智能恒温除湿消毒柜控制系统设计与实现,基于 STM32 的物联网智能柜体环境监测与调控系统设计(013003)