引
阿里云公共 DNS,主要 IP 为 223.5.5.5,属于递归解析服务。终端设备可以自行配置来替代运营商 DNS 做域名查询,支持 UDP/TCP/DoT/DoH/DoQ 等多种查询方式。最重要的一点,223.5.5.5 支持 ECS 模式,可以携带你的客户端子网信息一起做递归解析,使得解析出来的结果和你的实际位置更匹配,延迟更低。
异常
一年前,我发现无法正常打开 ieeexplore.ieee.org 这个网站。分析过后发现,我当时用的阿里云的 DNS 服务器 223.5.5.5 居然把这个域名解析到了 221.228.32.13,也就是江苏省反诈中心的 IP。阿里云作为国内权威的 DNS 服务器,竟然把一个学术界常用的查论文网站 IEEE 解析到江苏省反诈中心,属实是不应该。
细究
切换到我的家宽的 DNS 服务器后,发现 ieeexplore.ieee.org 的解析结果就是正常的了,而我人就在江苏,说明这个网站绝对不是应该列入江苏省反诈中心黑名单的,那问题只能出现在阿里云了。
经初步测试,ieeexplore.ieee.org 托管在亚马逊云的 CloudFront 上,域名本身只有一个 CNAME 记录,指向 d34ow7epij5zhk.cloudfront.net,并没有 A 记录。
随后,我在 itdog 上分别测试了江苏地区使用 223.5.5.5 / 119.29.29.29 / 运营商 DNS、直接查询 ieeexplore.ieee.org 域名 / 查询 d34ow7epij5zhk.cloudfront.net 域名,这六种组合的 A 记录解析情况是这样的:
| DNS | 域名 | 解析结果 |
|---|---|---|
| 223.5.5.5 | ieeexplore.ieee.org |
CNAME d34ow7epij5zhk.cloudfront.net |
| 运营商 DNS | ieeexplore.ieee.org |
CNAME d34ow7epij5zhk.cloudfront.net |
| 119.29.29.29 | ieeexplore.ieee.org |
CNAME d34ow7epij5zhk.cloudfront.netA (CloudFront 的 IP 地址) |
| 223.5.5.5 | d34ow7epij5zhk.cloudfront.net |
A (江苏反诈中心) |
| 运营商 DNS | d34ow7epij5zhk.cloudfront.net |
A (江苏反诈中心) |
| 119.29.29.29 | d34ow7epij5zhk.cloudfront.net |
A (CloudFront 的 IP 地址) |
也就是说,119.29.29.29 解析 ieeexplore.ieee.org 时,不仅会返回 CNAME 记录,同时会返回正确的 A 记录;而阿里云 DNS 服务器解析 ieeexplore.ieee.org 时,只返回了 CNAME 记录,但没有返回任何 A 记录。随后浏览器会尝试解析 d34ow7epij5zhk.cloudfront.net,阿里云 DNS 服务器解析这个域名时,直接返回了和上游运营商 DNS 一样的错误的 A 记录。119.29.29.29 没有 ECS 功能,所以它不会受到江苏上游运营商 DNS 的影响。
扯皮
当时,我就此现象向阿里云发起工单。多轮扯皮后,最终阿里云工作人员告知我,「运营商反馈该网站被公安部门研判为涉嫌诈骗网站,执行网络侧拦截。建议联系当地公安部门反诈中心申请解封。」也就是说,这是属于上游问题,除非我自己和公安部门沟通,否则阿里云是不会也无法处理的。
确实挺搞笑的,江苏上游 DNS 因为配置的失误把一个学术界常用的查论文网站给拦截到了江苏反诈中心,而江苏家宽的 DNS 却又可以正常解析访问,应该是家宽 DNS 没有完全走那个运营商的上游 DNS。阿里云 DNS 虽然支持 ECS,但是其细粒度却又只以省为单位,且无条件信任上游结果。所以江苏的用户在默认情况下可以正常访问 IEEE,而使用了阿里云 DNS 后反而不能了。
再探
一年后的今天,我再次测试了这个问题,发现阿里云 DNS 服务器已经可以正常解析 ieeexplore.ieee.org 了,解析结果同时返回 CNAME 记录和正确的 A 记录,直接解析 d34ow7epij5zhk.cloudfront.net 也可以正常返回 CloudFront 的 IP 地址了。又测试了江苏运营商 DNS 的解析结果,发现已经不再返回江苏反诈中心的 IP 地址了,而是同时返回 CNAME 记录和正确的 A 记录了。看来这个问题已经被上游运营商 DNS 解决了,阿里云 DNS 服务器也自然就恢复正常了。