DNSMasq vs绑定简单的DNS的URL阻止

我正在build立一个DNS服务器,将通过返回一个域的不正确的IP地址来阻止访问特定的网站。

目前我使用DNSMasq来执行此操作,但是我的列表很安静,我正在寻找绑定来执行此function。 尽pipeDNSMasq很好地处理了大型列表,但它确实有一些限制,迫使我select。 为了在DNSMasq中完成整个域,我只需在configuration文件中添加一行就可以了:

address=/url.com/1.2.3.4 

这将永远返回*.url.com 1.2.3.4

我正在寻找一些与以下方面的协助:

  1. 我如何能够实现BIND的一个非常基本的区域设置将完成类似的事情?
  2. 请记住我的域名列表是1000000+条logging
  3. 我可以只有一个主区域和简单的一个大的域名列表,将包括在这个区域?

干杯

PJF

把DNS黑名单视为理所当然,如果他们真的想要阻止某个人访问某个网站的话,那么这个黑名单并不是一种方法,但对于处理恶意软件和偶然的尝试去访问一个糟糕的网站是非常有用的。

响应政策区(RPZ)

RPZ允许您创build定义响应重写规则的区域文件。 这些在9.8.1版本中实现。

假设你想阻止badrecord.example.com. ,其IP地址为198.51.100.1 。 真正的知识产权在这里并不重要,但提供一个来帮助加强发生的事情。

 options { # Snip. response-policy { zone "mypolicy"; }; }; zone "mypolicy" { type master; file "mypolicy.zone"; allow-query { none; }; }; 

区域文件如下所示:

 $TTL 1H @ SOA LOCALHOST. doesnt.really.matter.example.org. (1 1h 15m 30d 2h) ; NS required for zone syntax reasons, but ignored NS LOCALHOST. ; CNAME bad reply to a DNS record that isn't in this file badrecord.example.com. CNAME mywalledgarden.example.edu. ; replace bad reply with fixed IP address badrecord2.example.com. A 203.0.113.1 ; rewrite the top of a bad domain, as well as all records immediately ; beneath the apex. (ie not further than one level deep) example.net. A 203.0.113.1 *.example.net. A 203.0.113.1 

观察:

  • “mypolicy”是一个真正的DNS区域。 您可以使用区域传输将其分布在您的环境中,并从单个服务器控制数据。
  • 由于allow-query规则,用户不允许直接查询区域。
  • 这些规则不会阻止查询 ,但对通常包含错误数据的查询的任何答复都将被重写。 这样做的副作用是请求一个不存在的logging将正确返回NXDOMAIN如果客户端可能获得包含错误数据的响应, 只会修改响应。
  • DNS通配符匹配的常用规则适用。

这些不是您可以执行的唯一重写。 为了完整的语法和潜在的应用程序,我build议你参考BIND ARM。


您可能会在互联网上find一些指南,例如创build根( . )区域,或者为每个需要阻止的域创build一个区域。 不要这样做。 这是DNSpipe理员为了缺乏更好的select而采取的一种更古老,更快捷的方式。 如果RPZ是一个选项,它涵盖了您的需求,使用它。 如果您对该域名不具有权威性,请不要将自己设置为权威性的。