← 返回题目列表

一个网站打不开,你会怎么系统地排查?

高频 中等 第 9 / 26 题 更新于 2026/07/28
故障排查分层排查网络诊断

简化版

别一上来乱试,用分层排查法:按「本机 → DNS → 网络连通 → 端口/TCP → 应用层」一层层往上定位。快速链路是:先 ping 网关和公网 IP(如 8.8.8.8)看基础网络通不通 → 再 nslookup/dig 看域名能不能解析 → 再 telnet/nc 测目标 80/443 端口通不通 → 最后 curl -v 看 HTTP 层返回什么。核心思想是从底层往上、逐段缩小范围,每一步都能排除一大类原因,避免瞎猜。

详细版

网络请求要经过很多环节,任何一环断了网站都打不开。系统排查就是沿着数据流的路径,逐层验证

第 1 层·本机与本地网络

  • ipconfig(Win)/ ip addr(Linux):本机有没有拿到 IP?
  • ping 网关:到路由器通不通(排除本机/网线/WiFi 问题)。
  • ping 8.8.8.8(直接 ping 公网 IP,绕过 DNS):能出公网吗

第 2 层·DNS 解析

  • nslookup example.com / dig example.com域名能不能解析成 IP
  • 如果 ping IP 通、但 ping 域名不通 → DNS 问题(DNS 服务器挂了/配错/污染)。

第 3 层·到目标主机的连通性

  • ping 目标IP:到服务器主机通不通(注意有些服务器禁 ping,不通不代表挂)。
  • traceroute/tracert 目标:路径在哪一跳断的(定位中间网络问题)。

第 4 层·端口 / TCP 连接

  • telnet 目标 443 / nc -vz 目标 443目标端口开着吗、TCP 能不能建连
  • 连不上 → 服务没启动、端口没监听、或防火墙拦了

第 5 层·应用层(HTTP)

  • curl -v https://example.com:看 TLS 握手、HTTP 状态码、响应头
  • 4xx/5xx、证书错误、重定向循环等,都是应用层问题。

口诀:能 ping IP 不能 ping 域名 → DNS;能 ping 通不能连端口 → 服务/防火墙;端口通但 curl 报错 → 应用层。

完整版教学

一、为什么要「分层排查」而不是瞎试

一个网站打不开,背后可能是几十种原因:网线松了、WiFi 断了、DNS 挂了、域名过期、服务器宕机、端口没开、防火墙拦截、证书过期、程序 500…… 如果没有章法地一个个试,效率极低还容易漏。

分层排查的价值在于:网络请求是一条有固定顺序的链路(本机 → 出网 → 解析域名 → 连到主机 → 建立 TCP → 发 HTTP → 拿到页面),你从链路底层往上逐段验证,每验证通过一层,就排除掉一整类原因,范围不断缩小,最终锁定到具体某一环。这套方法对应着网络分层模型(物理/链路 → 网络 → 传输 → 应用),是排障的通用思维框架。

核心原则:从下往上、逐层缩小。下层不通,上层一定不通,所以先确认下层。

二、第一步:先确认「本机能不能出网」

排障要先排除自己这端的问题,从最底层开始:

  • 本机有 IP 吗ip addr(Linux)/ ipconfig(Windows)。如果 IP 是 169.254.x.x(Windows)或根本没 IP,说明 DHCP 没拿到地址,是本地网络问题。
  • 能到网关吗ping 网关IP(网关地址用 ip route / ipconfig 查)。ping 不通网关 → 问题在本机到路由器之间(网线、WiFi、网卡)。
  • 能出公网吗ping 8.8.8.8——故意 ping 一个 IP 而不是域名,这样能绕过 DNS,单独验证「纯网络连通」。

这一步最关键的技巧是 ping IP 而非域名:如果 ping 8.8.8.8 通、但 ping google.com 不通,就一步锁定是 DNS 问题,而不是网络不通。这个对比是排障里最实用的分流点。

三、第二步:DNS——域名能变成 IP 吗

浏览器访问网站,第一件事是把域名解析成 IP。DNS 一出问题,后面全免谈。用工具验证:

nslookup example.com        # 简单直接,看解析出的 IP
dig example.com             # 更详细,看完整解析过程和记录
  • 解析不出 IP → DNS 服务器不可用、域名配置错误、或本地 DNS 缓存/hosts 有问题。可换一个 DNS(如 nslookup example.com 8.8.8.8)对比:换了能解析 → 本机默认 DNS 的问题。
  • 解析出的 IP 不对(被指到奇怪的地址)→ 可能 DNS 污染 / 劫持,或 hosts 文件被改。
  • 解析正常但网站还是打不开 → DNS 没问题,往下一层查。

四、第三步:到目标主机通不通、路径断在哪

DNS 拿到 IP 后,验证「能不能到达那台服务器」:

  • ping 目标IP:通 → 主机在线、网络可达。但要注意:很多服务器出于安全禁用了 ICMP(禁 ping),ping 不通不代表服务器挂了,这是常见误判。
  • traceroute 目标(Windows 是 tracert:如果 ping 不通或很慢,用它看数据包走到第几跳断了 / 变慢了。若在中间某跳开始全是 * * *,说明问题在那段中间网络(可能不归你管,是运营商链路)。

易错点:ping 不通 ≠ 服务器故障。服务器可能只是禁了 ICMP。这时要靠「测端口」来判断服务到底通不通。

五、第四步:端口 / TCP——服务在监听吗、被墙了吗

主机可达,还得看目标端口上的服务是否可连。这是 ping 查不了的(ping 只到网络层,不测端口):

telnet example.com 443        # 能连上 = 端口开着、TCP 能建连
nc -vz example.com 443        # 同样测端口,更现代

结果分三种,对应不同原因:

  • 连接成功 → 端口开着、服务在监听,问题在更上层(应用/HTTP)。
  • Connection refused(拒绝) → 能到主机,但目标端口没有程序在监听(服务没启动 / 挂了 / 端口配错)——主机明确回了 RST。
  • Connection timed out(超时,一直卡住) → 大概率是防火墙 / 安全组把包丢弃了,或主机不可达——没有任何回应。

「拒绝」和「超时」的区分极其重要,它直接指向不同方向(服务问题 vs 防火墙问题)。

六、第五步:应用层——HTTP 到底返回了什么

TCP 能连上,最后看**应用层(HTTP/HTTPS)**发生了什么,主力工具是 curl -v

curl -v https://example.com

-v(verbose)会打印全过程,逐项看:

  • TLS 握手失败 / 证书错误certificate has expired)→ HTTPS 证书过期或不匹配。
  • HTTP 状态码
    • 301/302 无限重定向 → 重定向配置错。
    • 403 → 权限/防盗链/被 WAF 拦。
    • 404 → 路径/路由不对。
    • 502/503/504 → 后端服务挂了 / 网关连不到后端 / 超时。
  • 响应很慢 → 后端处理慢、数据库慢等,配合 curl -w 看各阶段耗时(DNS/连接/TLS/首字节)。

到这一层,问题已经从「网络」缩小到「具体是证书、还是路由、还是后端服务」了。

七、把方法论串成一条决策链

面试答这题,最好给出一条清晰的决策链,体现体系:

本机有 IP? ──否→ DHCP/本地网络问题
   │是
ping 网关通? ──否→ 本机到路由器(网线/WiFi/网卡)
   │是
ping 8.8.8.8 通? ──否→ 出网/运营商问题
   │是
ping 域名 / nslookup 通? ──否→ DNS 问题
   │是
telnet 目标端口通? ──拒绝→ 服务没起/端口错
   │              └─超时→ 防火墙/安全组
   │是
curl -v 正常? ──否→ 应用层(证书/状态码/后端)
   │是
问题可能在浏览器缓存/前端

八、常见误区与追问

考点正确口径
解析阶段域名是否解析到预期 IP
连接阶段TCP 端口是否可达、TLS 是否成功
应用阶段HTTP 状态码、反向代理、后端服务和日志
dig domain
curl -v https://domain
nc -vz domain 443
traceroute domain
check LB/backend logs

网站打不开不要只说“网络问题”,要按 DNS、TCP、TLS、HTTP、应用后端分层切开。

  • 误区:浏览器打不开就是服务器宕机。 DNS、证书、CDN、LB、防火墙、浏览器缓存和本地代理都可能导致不可达。
  • 误区:能 ping 通就说明网站正常。 ping 只测 ICMP,HTTP 端口、TLS 和应用状态仍可能异常。
  • 误区:只从自己电脑测一次就能定性。 要多地域、多网络、直连 IP、绕 CDN 对比,排除本地和运营商问题。
  • 追问:如何判断 DNS 问题? 比较本地解析、公共 DNS、权威 DNS 的结果和 TTL。
  • 追问:TLS 错误常见原因? 证书过期、域名不匹配、中间证书缺失、协议/套件不兼容。
  • 追问:HTTP 502/504 往哪查? 优先查反向代理到上游服务的连接、超时、健康检查和后端日志。

九、加强记忆

网站打不开用分层排查、从下往上逐段缩小本机有 IP?→ ping 网关 → ping 8.8.8.8(绕 DNS 验出网)→ nslookup/dig 验解析 → telnet/nc 测端口 → curl -v 看 HTTP。关键分流点:能 ping IP 不能 ping 域名 = DNSping 不通不等于服务器挂(可能禁 ICMP)端口 refused = 服务没监听,timeout = 防火墙丢包端口通但 curl 报错 = 应用层(证书/状态码/后端)