从事后端开发与运维工作的朋友,一定经历过这样的场景:服务部署上线后,本地测试一切正常,监控指标也全部绿灯,然而用户却反馈“网站打不开”“时好时坏”“我们这边访问不了”。

最令人头疼的回复莫过于:“在我这是好的啊。”
实际上,问题往往并非出在服务器自身,而是隐藏在用户与服务器之间那条漫长而复杂的网络链路中。本文梳理了一套分层定位的排查思路,同时介绍每一层应使用的工具及结果解读方法,希望能帮你减少许多不必要的沟通成本。
排查的核心思路:分层定位
遇到网络问题,切忌盲目猜测。建议按照层级从下至上逐层排查,每确认一层就排除一种可能:
网络可达吗? —— 基础连通性(Ping)
端口通吗? —— 业务端口连通性(TCPing)
路径正常吗? —— 数据包传输路径是否存在异常(Traceroute)
域名解析对吗? —— DNS 是否返回了正确的 IP 地址
IP 干净吗? —— IP 是否被屏蔽或列入黑名单
下面逐层展开说明。
第一层:Ping —— 基础可达性
ping 命令利用 ICMP 协议探测目标主机是否可达,同时能提供延迟与丢包率信息。
ping www.example.com
重点关注三项指标:
- 是否连通:完全不通则表示网络层已经中断;
- 延迟(time):数值过高说明链路质量较差或物理距离较远;
- 丢包率:丢包往往是用户体验“时好时坏”的常见元凶。
不过这里有一个常见陷阱:许多云服务器的安全组或防火墙默认会屏蔽 ICMP 请求。此时 Ping 不通并不代表服务不可用——可能只是主机拒绝响应 Ping 而已。因此,Ping 通算是好消息,Ping 不通则不要急于下结论,应继续向下检测端口。
第二层:TCPing —— 业务端口才是真相
用户访问网站时,实际走的是 TCP 协议的 80 或 443 端口,而非 ICMP。因此,端口能否建立连接比能否 Ping 通更具实际意义。
在禁 Ping 的环境下,使用 TCPing(向指定端口发起 TCP 连接探测)才能反映业务的真实可用性:
# Linux 下用 nc 检测端口
nc -zv www.example.com 443
# 或者使用 telnet
telnet www.example.com 443
如果 Ping 不通但 443 端口可以连通,说明服务是正常的,只是禁用了 ICMP;如果端口也无法连接,则问题比较严重——可能是服务崩溃、端口未监听或防火墙拦截。
第三层:Traceroute —— 定位是哪一跳出问题
当确认“通或不通”之后,如果出现延迟高或丢包的情况,就需要找出问题出现在链路的哪一段。traceroute(Windows 下为 tracert)能够列出数据包经过的每一跳路由:
traceroute www.example.com
逐跳观察延迟,若在某跳之后延迟突然飙升或开始丢包,大概率是那个节点(可能是骨干网节点或跨网互联交换点)出现了拥塞。这对于判断“是我服务器的问题,还是中间运营商的问题”非常关键——如果卡在中间某一跳,责任并不在你方。
第四层:DNS —— 解析对了吗
服务正常、网络也通,但用户依然访问异常?这时需要检查 DNS。
# 查询解析结果
dig www.example.com
# 或者
nslookup www.example.com
DNS 层面常见的陷阱包括:
- 解析未生效:刚修改了解析记录,但旧记录仍在 TTL 缓存期内,各地生效时间有先后;
- 不同地区解析到不同 IP:使用了智能解析或 GeoDNS,某个地区被解析到了有问题的节点;
- DNS 污染或劫持:某些网络环境下域名被解析到了错误的地址。
这些问题的共同特征是具有地域性。你在 A 地解析正常,B 地的用户可能获取的是另一个结果。
第五层:IP 信誉 —— 是不是被拉黑了
如果遇到邮件服务发不出去,或者 IP 突然被某些网络拒绝访问,需要检查 IP 信誉(IP Reputation):该 IP 是否被列入 RBL(实时黑名单),是否被标记为垃圾来源。共享 IP 或曾被前任使用者破坏过的 IP,都有可能背上这种“黑历史”。
中国网络的特殊性:三网与南北互通
上面的方法在单机上都可执行,但中国网络环境存在一个绕不开的复杂度——电信、联通、移动三大运营商之间的互联互通。
跨网访问(例如电信用户访问联通机房)需要经过运营商之间的互联节点,这些节点一旦拥塞,就会出现典型的“南北互通”问题:同一服务,电信用户飞快,联通用户卡顿,移动用户时好时坏。
这就带来了一个根本性的限制:在单台机器上测试,只能代表你所在地区、一家运营商的视角。用户反馈的“有人能访问、有人不能”,本质上往往是不同地域、不同运营商之间的差异,而这一点恰恰是坐在公司里一台机器上永远无法复现的。
怎么看到全貌:多节点同时测
要复现并定位具有地域性的网络问题,需要从全国各地、各家运营商的多个节点同时发起探测,将不同视角的结果放在一起对比。
自建一套多地域探测节点成本很高,日常排查更实用的方法是借助现成的在线工具。例如 BiuPing 多节点网络诊断这类平台,聚合了全国电信、联通、移动以及海外多个节点,Ping、TCPing、网站测速、路由追踪、DNS 查询、IP 信誉黑名单等功能都能一站式完成,而且免费、无需注册。
它的价值正好弥补了单机排查的盲区:当用户反馈“我们这边访问不了”时,你可以直接从对应地区、对应运营商的节点发起一次 TCPing 和路由追踪,几秒钟就能确认到底是你的服务问题,还是中间某一跳、某个运营商的互联问题——把“在我这是好的”这种扯皮,变成有节点、有数据的结论。
一份排查 Checklist
下次再遇到“有的用户访问不了”,按照以下流程走一遍:
- 先确认服务本身:进程是否在运行、端口是否在监听、应用日志有无报错;
- 从用户所在地区/运营商的节点做 TCPing,确认业务端口是否连通(不要仅依赖 Ping,需注意 ICMP 可能被禁);
- 端口不通或延迟高,执行路由追踪,看是哪一跳出问题,区分责任归属(自身还是中间链路);
- 怀疑地域性异常,检查 DNS 在各地的解析结果是否一致、是否生效;
- 邮件或访问被拒类问题,查询 IP 信誉,确认是否被列入黑名单;
- 全程采用多节点视角交叉验证,不要仅凭单机视角下结论。
小结
网络连通性排查的核心在于分层定位与多视角验证。Ping 用于检查可达性,TCPing 用于确认端口,Traceroute 用于分析路径,DNS 用于验证解析,IP 信誉用于排查封禁——每一层对应一类问题,排查时可以精准打击。面对中国三网互联的复杂环境,单机视角天然存在盲区,借助多节点工具从用户真实所在的地区和运营商进行测试,才能真正把“在我这是好的”还原为可定位、可甩锅(或可背锅)的事实。
下次用户再说“打不开”,你就有一套不靠猜测的标准化流程了。
