做后端和运维的,大概都经历过这个场景:服务部署上线,自己测一切正常,监控也绿着,结果用户那边反馈"打不开""时好时坏""我们这边访问不了你们网站"。
最折磨人的一句话就是:"在我这是好的啊。"
问题往往不在你的服务器本身,而在你和用户之间那条又长又复杂的网络链路上。这篇文章梳理一套分层定位的排查思路,以及每一层该用什么工具、怎么读结果。
排查的核心思路:分层定位
网络问题不要一上来就猜,按层从下往上排,逐层确认,能排除一个是一个:
- 网络可达吗? —— 基础连通性(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 信誉看封禁——每一层对应一类问题。而面对中国三网互联的复杂环境,单机视角天然有盲区,借助多节点工具从用户真实所在的地区和运营商去测,才能真正把"在我这是好的"还原成可定位、可甩锅(或可背锅)的事实。
下次用户再说"打不开",你就有一套不靠猜的流程了。