我有一个域名 example.com。现在这个域名绑定到了 cloudflare cdn(并且启用了代理设置),并且有 ns1.smth.cloudflare.com、ns2.smth.cloudflare.com 等 dns 记录。用户在访问我的网站时,将连接到 cloudflare 的一些 ip 地址。
我想保留 cloudflare cdn,但同时我希望用户不要连接到 cloudflare 的某些 ip 地址(因为它们经常被我国的提供商屏蔽 - 这就是问题所在)。
所以最后我想在某些 Linux 发行版(如 centos 等)上运行一个 dns 服务器,将对我的域的请求重定向到 cloudlfare dns。这可能吗?
目标是将我的域名绑定到此个人 DNS 服务器,并且显示的域名 IP 必须是我的个人 DNS 服务器的 IP,而不是 cloudlfare。并保持 cloudflare 正常运行,因为它可以加快我的网站速度。
这是可能的,但对于您所述的目标来说可能毫无用处。
可以使用大多数 DNS 服务器(例如 BIND9 或 Unbound 或 Dnsmasq)来实现权威 DNS 请求的代理(从根本上讲,它与 DNS“缓存”所做的并没有太大区别),甚至可以在紧急情况下使用原始 TCP/UDP 中继(rinetd 或 iptables DNAT+SNAT)。
该计划的问题在于 DNS 名称服务器并不是您的访问者必须联系的唯一 CloudFlare 服务器。您说您想保留 CDN 功能,但实际上 CDN 功能的全部意义在于它应该将您客户的实际 HTTP 请求重定向到 CloudFlare CDN 的代理服务器而不是您的代理服务器 - 而且由于这些 CDN 服务器与 DNS 名称服务器属于同一个 CloudFlare 网络,因此它们的 IP 地址与 DNS 地址一样可能被阻止。