如何在结分解器中随机选择DNS分解器

节DNS解析程序允许您在TLS服务器上配置最多四个转发DNS,自动选择最快的服务器。然而,结解析程序是高度可配置的,您也可以将其配置为执行更奇特的操作,例如在一系列DNS解析程序中随机展开您的DNS查询。

请参考如何用结分解器获得更快更安全的DNS解析介绍结分解器和一些基本设置和配置。本文从上一篇文章的结尾开始,在这里我们将设置通过TLS解析程序转发到外部DNS。

节点解析器中的配置文件是Lua脚本,也就是说,您已经掌握了Lua语言的全部功能。我希望证明这比其他DNS服务器更灵活。这也为你提供了很多机会,当你要打破一切的时候,向自己的脚开枪,降低稳定性和性能。据说,这个设置应该可以正常工作,除非您正在运行一个真正大规模的结分解器部署。

为什么随机DNS解析程序

DNS转发器可以获得很多关于你访问的网站和你的习惯的信息。您将您访问的每个网站的地址发送给他们,您的应用程序和设备将与您的DNS转发器共享自己的详细信息。

您可以通过使用多个提供商来降低DNS提供商构建Internet活动完整配置文件的能力。使用多个提供商还鼓励DNS市场的创新和竞争。

Quad9和CloudFlare(本文稍后将在示例配置中使用的两个基于TLS的DNS提供程序)在.然而,两者都比以前提供更好的服务。双方承诺不收集任何数据,存储任何日志,并免费向互联网社区提供服务。

我们也没有通过TLS提供额外的安全和隐私,因为没有任何人提供实现和服务。

配置

随便做什么,你需要一个熵源。以下配置示例加载数学在Lua中进行模块化,并用当前时间对生成器进行种子设定。我们不需要高度的熵来进行随机服务器选择,所以这就足够了。

需要“math”math.randomseed(os.time())

下一步,我们需要克服一些结分解器的限制。这个策略.tls_转发操作限制为不超过4个到DNS解析程序的IP地址。我们还是要用这个动作,但是从一个表中填充它,该表包含我们将要使用的公共DNS解析程序的最多四个主和辅助IPv4和IPv6地址表。

下面的配置示例显示了这样一个带有Quad9和CloudFlare解析器的表表:

tls bundle='/etc/pki/ca trust/extracted/pem/tls ca bundle.pem'dns--quad9'9.9.9.9',hostname='dns.quad9.net',ca_file=tls_包,'149.112.112.112',hostname='dns.quad9.net',ca_file=tls_包,{2620:Fe::Fe,hostname='dns.quad9.net',ca_file=tls_包,}--CloudFlare解析器'1.1.1.1',hostname='cloudflare-dns.com',ca_file=tls_包,{1.0.0.1’,hostname='cloudflare-dns.com',ca_file=tls_包,'2606:4700:4700::1111',hostname='cloudflare-dns.com',ca_file=tls_包,'2606:4700:4700::1001',hostname='cloudflare-dns.com',ca_file=tls_包,}

通过TLS连接建立DNS所需的所有根证书都存储在系统提供的TLS CA包中。我把它存储在一个变量中以减少重复。请参见上一个配置示例了解更多详细信息。

您可以在DNS隐私项目wiki如果要配置其他DNS解析程序。

如果您喜欢一个提供商而不是另一个提供商,您可以复制它的行,并将其插入到表的末尾,以增加被选择的机会。下面的示例复制了第一行(Quad9),使其使用的可能性是第二行(CloudFlare解析器)的两倍。注意,lua中的索引从1开始,而不是从0开始。

表.insert(DNS_提供程序,DNS_提供程序[1])

既然我们有了随机性的来源和一个DNS解析程序表,剩下的就是从表中进行随机选择,并使用选择来解析DNS。

下面的函数添加一个使用自定义筛选器的策略,该筛选器从表中选择一个随机DNS解析程序,并返回策略.tls_转发使用所述分解器的操作。

policy.add(功能(请求,查询)返回policy.tls_forward(dns_providers[math.random(1,#dns_providers)结束)

此策略将替换所有的警察我们使用的过滤器上一个配置示例.如果您不希望选择完全随机,你可以找到一个例子基于查询调整自定义筛选函数在结分解器模块文档中。