开启Cloudflare代理后域名解析出两个IP地址,不同用户查询结果不一致,求助原因
最近碰到个挺困惑的问题,跟大家分享下我的排查和解决过程:
我给域名davidzhu.xyz用Cloudflare做DNS解析,还开了代理(主要是冲着免费SSL去的),但自己用dig davidzhu.xyz +short查询时,居然返回了两个IP:
172.67.210.8 104.21.50.195
可明明我在Cloudflare后台只设置了一条A记录啊!更奇怪的是,另一个朋友查询我的主域名和www.davidzhu.xyz子域名,返回的却是同一个IP:144.202.12.32。
一开始我以为是自己Mac的DNS缓存搞的鬼,赶紧试了sudo killall -HUP mDNSResponder刷新缓存,结果完全没用。
先给大伙贴些关键信息:
- 我的Cloudflare域名服务器(NS)信息:
$ dig chin.ns.cloudflare.com +short 172.64.32.84 173.245.58.84 108.162.192.84 $ dig noel.ns.cloudflare.com +short 108.162.193.216 172.64.33.216 173.245.59.216 - 用
dig www.davidzhu.xyz +trace追踪解析过程,最后从Cloudflare的NS服务器返回的是两条A记录:www.davidzhu.xyz. 300 IN A 104.21.50.195 www.davidzhu.xyz. 300 IN A 172.67.210.8
后来多亏@YisroelTech的提示,我试着把Cloudflare上对应域名的代理功能关掉了(就是把橙色云朵改成灰色),结果立刻正常了!再查询域名就只返回我原本设置的源站IP 144.202.12.32,dig +trace的结果也显示只有单条A记录了。
现在终于搞清楚原因了:当开启Cloudflare的代理后,Cloudflare会把你的域名解析到它自己的CDN节点IP上,这些节点IP通常是多个的,用来做负载均衡和就近访问调度。所以不同地区、不同网络环境的用户查询到的IP可能不一样,甚至同一用户多次查询也可能得到不同的节点IP,这都是Cloudflare CDN的正常运作机制。
如果想要所有用户都解析到你自己设置的源站IP,只需要关闭Cloudflare的代理功能就行,但这样就没法享受Cloudflare的免费SSL和CDN加速服务了,得根据自己的实际需求来权衡~
备注:内容来源于stack exchange,提问作者Shaowen Zhu




