绑定 - 仅为特定域 CDN 配置不同的转发器(例如 Wetransfer、Cloudflare、Amazon AWS)

绑定 - 仅为特定域 CDN 配置不同的转发器(例如 Wetransfer、Cloudflare、Amazon AWS)

介绍

我已经设置了一个 linux 盒子,其中有一个 BIND 为我提供本地 dns。

基本上,通过利用 RPZ,我可以限制某些主机,同时使用 DNSCRYPT,我将所有内容转发到 OpenDNS 以获取我的 DNS 结果。

这工作得相当不错..

在我里面/etc/bind/named.conf.options我有:

 forwarders {
                127.0.0.1 port 5353;    };

5353 上的守护进程基本上是 DNSCRYPT 监听转发到 OpenDNS 我的请求。


问题所在

然而,我似乎对使用任播 IP 地址或利用地理定位来加速其功能的 CDN/服务器存在一些大问题。

列出一些:

  • wetransfer(最近使用亚马逊 aws)
  • 云耀
  • 亚马逊AWS

与我将计算机直接连接到光纤调制解调器时相比,所有这些服务(storage.googleapis.com 除外)在带宽方面都显着降低了速度。


我猜

我开始相信造成这个问题的原因是最终发出请求的 OpenDNS 位于其他地方并尊重我的位置,因此如果我们要求选播。

使用 Amazon AWS S3 存储(例如 Wetransfer)的服务仍然有效,但我最终可能会使用正常对等范围之外的服务器,并且如果您在美国,则倾向于使用欧盟或亚洲服务器;如果您在欧盟或亚洲,则倾向于使用美国服务器,等等在。

这会增加 ping 值,但您也会采用更长的路径并授予较低的带宽。

在我的例子中我测试了s3-us-west-1.amazonaws.com使用 OpenDNS 检查工具。正如您所看到的,根据您所在的位置,DNS 指向不同服务器的行为非常不同。

OpenDNS DNS 检查


我认为如何解决

因为我的提供商的光纤调制解调器有其内部 DNS 服务器并解析类似 s3-us-west-1.amazonaws.com 的 cname,根据地理距离的带宽选择最佳服务器,所以我想转发所有 *.amazonaws .com 查询 192.168.0.1 而不是 DNSCRYPT。

对于我想使用的每个其他域:

forwarders {
                127.0.0.1 port 5353;    };

但如果域名位于 *.amazonaws.com、*.cloudflare.com、*.wetransfer.com .. 内部,请改为使用:

forwarders {
                192.168.0.1 port 53;    };

所以问题是:

这可以在 RPZ 文件中以某种方式指定吗?如何 ?

谢谢!

编辑:也许我在 Reddit 线程上找到了解决方案 - 我把它放在这里以便稍后检查

   options {
            // ... lots of other stuffs

            // forward all queries to google dns
            forward only;
            forwarders {
                    8.8.8.8; // google-public-dns-a.google.com.
                    8.8.4.4; // google-public-dns-b.google.com.
            };

            // ... lots of other stuffs
    };

    zone "akamai.com" IN {
            type forward;
            forward only;
            forwarders {
                    75.75.75.75; // comcast ISP DNS
            };
    };

相关内容