当前位置:首页 > 时尚

域名检测是否被墙

打开一个国外技术文档网站,域名浏览器转了三圈,检测最后蹦出“连接超时”。否被你心里咯噔一下:是域名被墙了,还是检测对方服务器挂了?这两种情况表现一模一样,但处理方式完全不同。否被搞混了,域名你会白白浪费半小时去重启路由器。检测

先分清楚“被墙”到底指什么。否被通常说域名被墙,域名是检测指DNS污染或IP封锁,导致国内网络无法正常访问。否被DNS污染的域名表现很典型:nslookup一个被污染的域名,返回的检测IP地址根本不属于那家网站,可能是否被Facebook的IP,也可能是0.0.0.0。而IP封锁更直接,TCP连接根本建立不起来,ping都ping不通。

用dig和nslookup做第一轮判断

Linux或macOS下直接跑:

dig example.com @8.8.8.8 dig example.com @114.114.114.114

如果8.8.8.8返回的IP和114.114.114.114返回的IP不一致,而且114返回的是一个明显不相关的地址,那大概率是DNS污染。我遇到过最离谱的一次,查询某个技术博客域名,114返回的是127.0.0.1。这明摆着告诉你:别访问了。

Windows用户用nslookup example.com 8.8.8.8,再换成nslookup example.com对比。结果不同,基本坐实污染。

ping和tcping的区别很关键

很多人ping一下不通就喊“被墙了”。但ICMP被禁是常态,很多服务器防火墙直接丢弃ping包。这时候用tcping测443或80端口才有意义。

tcping example.com 443

如果tcping能通,说明IP层没问题,那问题出在DNS或者应用层。如果tcping也不通,再结合DNS结果看。DNS正常但tcping不通,可能是IP封锁。DNS不正常且tcping不通,DNS污染加IP封锁,双重打击。

有个细节:某些域名只是被污染,但IP本身没被封。你手动改hosts指向真实IP,就能访问。这种叫“仅DNS污染”,算轻症。

用在线工具交叉验证

自己测完还不够,得看别人是不是也这样。ping.chinaz.com这种多地ping工具,如果全国节点全部超时,而海外节点正常,那基本就是被墙。如果只是部分地区超时,可能是局部路由问题。

另外,check.spurl.net这类工具会直接告诉你域名是否被墙。但别全信,自己动手测一遍更踏实。

一个容易忽略的点:SNI阻断

HTTPS访问时,TLS握手阶段会明文发送SNI(服务器名称指示)。有些封锁发生在这一层:DNS正常,IP能通,但SNI包含敏感域名时,连接被重置。表现是curl报错“Recv failure: Connection reset by peer”。

测试方法:

curl -v https://example.com

看是在TCP连接阶段就失败,还是在TLS握手阶段被重置。后者更隐蔽,换IP也没用,因为封锁的是域名本身。

我的判断流程

先dig两个DNS对比。不一致,DNS污染。一致但tcping不通,IP封锁。DNS和tcping都正常但HTTPS重置,SNI阻断。三种情况可能叠加。

最后说个真实案例。某次帮朋友查一个设计素材站,DNS返回正常IP,tcping 443通,但浏览器打不开。curl显示TLS握手到一半被RST。换了个非标准端口,立刻能访问。这说明封锁针对的是443端口上的特定SNI。这种封锁最恶心,因为你没法通过改hosts解决,只能换端口或走代理。

别把“被墙”当成一个单一状态。它是一组不同层级的干扰手段,诊断时逐层排除,才能找到真正原因。

分享到: