本文目录导读:

排查云网络故障是一个系统工程,关键在于分层定位,常见的工具和方法可以分为命令行基础工具、云平台自有工具和高级抓包/流日志工具。
下面按排查思路(从简单到复杂、从本地到远端)来介绍:
第一阶段:基础连通性排查(用命令行工具)
这些是任何操作系统下都有的工具,用于快速判断问题范围。
-
ping(ICMP协议)- 用途:测试目标IP是否存活,检查基础网络延迟和丢包。
- 适用场景:判断云服务器、负载均衡、数据库等是否在线。
- 注意:云平台的安全组/防火墙可能禁止ICMP协议,导致
ping不通但业务正常。如果ping不通,记得检查安全组入方向是否放行了ICMP。
-
telnet/nc(TCP端口探测)- 用途:测试指定IP的指定端口是否开放并能建立TCP连接。
- 命令:
telnet <目标IP> <端口号>:连接成功会显示空白或欢迎信息;失败会提示“无法打开连接”。nc -zv <目标IP> <端口号>:更现代,-z只扫描不发送数据,-v显示详情。
- 适用场景:验证Web服务(80/443端口)、数据库(3306/5432端口)、SSH(22端口)是否可达。
- 这是排查“能ping通但业务连不上”问题的关键工具。
-
traceroute/tracert(路由追踪)- 用途:显示数据包从源到目标经过的每一跳路由器。
- 适用场景:判断故障发生在哪一段。
- 在云服务器内
traceroute公网IP -> 如果前几跳(云网关)正常,但跳到了公网后就断了,说明问题在公网或对端。 - 如果第一跳(网关)就超时,可能是VPC(虚拟私有云)路由表或子网配置问题。
- 在云服务器内
- 注意:云基础设施可能会丢弃超过TTL(生存时间)的包,导致中间跳显示为,这是正常的。
-
dig/nslookup(DNS解析)- 用途:测试域名解析是否正确。
- 命令:
dig <域名>或nslookup <域名> - 适用场景:客户端用域名访问服务失败时,检查解析到的IP是否正确,是否是CDN(内容分发网络)或域名劫持问题。
-
curl(HTTP/HTTPS协议测试)- 用途:模拟HTTP请求,查看返回状态码和响应头。
- 命令:
curl -v http://<目标IP或域名>(-v显示详细过程) - 适用场景:Web服务返回403(权限拒绝)、502(网关错误)、504(网关超时)等,它比浏览器更纯粹,能看到TLS握手详情。
第二阶段:利用云平台内置工具(核心手段)
云平台通常提供远比传统工具强大的排查能力。
-
安全组/网络ACL(访问控制列表)监控
- 操作:登录云控制台,检查安全组(实例级别防火墙)和网络ACL(子网级别防火墙)的入站/出站规则。
- 排查技巧:检查是否放行了源IP、端口、协议,很多时候,配置了“所有流量”但优先级或方向搞反了,注意:安全组是白名单机制,没有显式允许就是拒绝。
- 高级功能:部分云平台(如AWS)提供安全组流日志(VPC Flow Logs),能记录谁拒绝/接受了你的流量,这是排障的“杀手锏”。
-
VPC Flow Logs(虚拟私有云流日志)
- 用途:记录VPC中网络接口的IP流量元数据(源IP、目标IP、端口、协议、动作:ACCEPT/REJECT)。
- 适用场景:
- 怀疑“网络到底通不通”时。
- 安全组/ACL规则复杂,查不清谁拒绝了流量时。
- 云服务器内抓包不方便时(直接查日志)。
- 操作:启用后,日志会发送到日志服务(如AWS CloudWatch Logs、阿里云SLS)或对象存储中,可以查询
action = REJECT的记录。
-
云平台网络诊断工具
- 阿里云:网络智能服务(可发起
ping、telnet、MTR诊断)。 - 腾讯云:网络探测。
- 华为云:网络智能分析服务。
- AWS:Reachability Analyzer(可达性分析器)——非常强大,可以自动分析VPC内EC2、负载均衡、网关间的路径是否可达,并指出哪条安全组/ACL规则导致了不通。
- 阿里云:网络智能服务(可发起
-
负载均衡/API网关日志
- 用途:查看负载均衡器的7层访问日志或健康检查日志。
- 适用场景:客户端能连上负载均衡但后端服务器返回错误,查看日志确认负载均衡是否将请求转发给了后端、后端是否响应了5xx(服务器端错误状态码)或超时。
第三阶段:高级抓包与流式排查(终极手段)
当上述工具都无法定位时,需要对数据包进行深度分析。
-
tcpdump/tshark(抓包工具)- 用途:在云服务器上捕获网络接口上的原始数据包。
- 场景:
- 怀疑数据包被云平台网关丢弃(配置了DNAT(目标网络地址转换)但回程路由不对)。
- 检查TLS握手失败的具体阶段(Client Hello -> Server Hello的问题所在)。
- 分析应用层协议(如MySQL、Redis)的具体请求内容。
- 简单命令:
# 在服务器A上抓取来自特定IP的包,保存到文件 tcpdump -i eth0 host <客户端IP> -w /tmp/cap.pcap
- 分析:将
pcap文件下载到本地,用Wireshark(图形化网络协议分析工具)进行可视化分析,Wireshark自带强大的过滤器和专家分析功能。
-
Wireshark (图形化分析)
- 用途:可视化分析抓包文件。
- 关键过滤器:
tcp.analysis.flags:显示TCP重传、快速重传、零窗口等异常。http.response.code >= 400:显示所有HTTP错误响应。ip.addr == X.X.X.X:过滤特定IP的流量。
快速排查路径图
假设用户反馈 “无法从我的电脑访问云上的Web服务”:
- 用户端检查:
ping云服务器公网IP或域名(不通 -> 侧重网络层,通 -> 侧重应用层)。 - DNS检查:
dig域名,看解析到的IP是否是你云服务器的公网IP或负载均衡IP。 - 端口检查:
telnet云服务器公网IP 80 (不通 -> 问题在云平台网络或防火墙)。 - 云平台排查:
- 检查安全组入方向:是否放行了
0.0.0/0或你的电脑公网IP 的80端口。 - 检查网络ACL:子网级别是否放行80端口。
- 如果服务在负载均衡后面,检查负载均衡器的监听器配置和后端服务器健康状态。
- 检查安全组入方向:是否放行了
- 云平台工具:使用VPC Flow Logs 查看
action = REJECT的记录,或使用云平台网络诊断工具在云服务器侧向你的电脑IP发起ping和telnet(以确认回程路径是否可达)。 - 服务器内部:登录云服务器,
curl localhost:80看服务是否正常启动;netstat -tlnp | grep 80看服务监听在哪个IP上(是否只监听了127.0.0.1?)。 - 终极方案:在云服务器上用
tcpdump抓包,分析是否收到了SYN包,以及是否回复了RST(连接重置,说明服务拒绝了)或SYN-ACK(连接正常建立)。
最重要的一点
先看云平台的“监控”和“告警”,很多网络问题(如流量突发打满带宽、遭受DDoS攻击——分布式拒绝服务攻击)会直接被云平台的安全告警记录,先看这些,可以帮你节省大量手动排查的时间。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。