介绍
我已经设置了一个 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 指向不同服务器的行为非常不同。
我认为如何解决
因为我的提供商的光纤调制解调器有其内部 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
};
};