前些天买了一个新域名 bengcu.com,将它扔到 Cloudflare 解析。所有记录 TTL 都是五分钟,做的都是 DNS only 解析,也就是不使用 Cloudflare 的 CDN 服务。然而在自己的设备上访问时,始终会带上 Cloudflare 的响应头,一天后仍然如此。- Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
- Cf-Cache-Status: DYNAMIC
- Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=UIujKopwcaGtdCogQ7u0I71KJPHHlRZ9xMKCmreeLm5bHJuMbL3sZmVBNRieQYuHti6CBLbPD2GwRnnQLFOF5Rjl%2B3csBvZB93OYgsHFfDWZ4d1epKVzRx8An8sd98%2Bcyg%3D%3D"}]}
- CF-RAY: a0a660290fa32ea8-LAX
复制代码 也就是说,DNS only 没有生效,域名还是解析到了 Cloudflare 的 IP 去了,访问网站时,实际上先访问了 Cloudflare 的服务器,Cloudflare 的服务器再去真正的服务器那里把资源搬过来向真正的访客展示。
起初还怀疑 Cloudflare 又犯病了,只因它确实犯过不少次数的病,后来跑到一台香港服务器上拿 curl 访问了一下网站,一切正常。这说明问题没有出在 Cloudflare 而是出在了我自己的设备上。
于是使用 nslookup 查询了域名解析,发现默认 DNS 服务器是 2400:3200::1,使用 nslookup 的 server 命令修改解析服务器后,好家伙,也变正常了。
后来在另外一台电脑上,bengcu.com 甚至被解析到了 127.0.0.1,阿里公共 DNS 竟然篡改记录值。查了一下,这台电脑使用的也是阿里公共 DNS 解析服务器——并不能怪这台电脑,真正的问题出在路由器上,在路由器里面 DNS 服务器被写死成 2400:3200::1 了。据说域名被解析到 127.0.0.1 通常是因为被判定为违规,但这个域名没有任何违规记录,其他 DNS 服务提供商都正常解析。
到此,阿里公共 DNS 的两个大坑已经明了:
- 它会长时间缓存域名记录,而且忽略 TTL 设定;
- 莫名其妙地将域名记录篡改成 127.0.0.1 或 ::1
气人的是,它还会在旧记录和错误记录之间反复切换。
我,果断地换掉了阿里公共 DNS。 |
|