我想知道实现 DNS 过滤的最佳方法是什么。
场景是这样的:我们需要设置两个自定义 DNS 服务器以在我们公司的计算机上使用,以便我们可以过滤某些域的 DNS 请求并返回自定义 IP 并将其他请求转发到我们的 ISP DNS 服务器。
我们正在考虑使用 PowerDNS 或 MyDNS,因为它们开箱即用地支持 MySQL,并且我们需要经常更改要过滤的域列表。
答案1
过滤比“重新路由”更容易,但最好通过代理或网络内容过滤器(硬件或服务)来完成。
通过在 DNS 服务器上创建授权区域,然后创建自己的 A/CNAME 记录来重新路由某些域名(例如 MySpace.com),这在最好的情况下可能是一项管理挑战,而且如果有人有合法的访问该网站的需求,则很难集中绕过。另一方面,精明的用户可以通过工作站上的代理服务/客户端轻松绕过它。
您应该发布更多关于您想要完成的任务以及原因的详细信息,以便获得更详细的答案。
答案2
正如 Ed Fries 所建议的,DNS 解决方案是:
- 设置一个(或两个)具有转发或根提示区域的 DNS 服务器,这将使其对互联网上的所有域返回非权威答案。
- 通过适当配置您的 DHCP 服务器(或在客户端上手动配置),设置您的客户端使用这个/这些 DNS 服务器。
- 可选择在防火墙上阻止 53/udp 出站,以防止网络上的客户端使用其他 DNS 服务器。
- 在您的 DNS 服务器上为您想要阻止的域创建一个权威区域,并可选择为它们创建 A/CNAME 等记录。这样做将阻止您的 DNS 服务器转发请求并获取真正的答案,因为它认为它是权威的。
有办法解决这个问题:
- 如果不执行第 3 步,客户端可以简单地使用公共 DNS 服务器(例如,Google 提供公共 DNS)
- 人们可以使用 VPN/代理来绕过它
- 对于某些网站,他们可以输入 IP(如果他们知道的话)并访问该网站,无需进行任何配置更改。
还有其他方法可以阻止网站(例如,在防火墙上阻止 IP),这些方法可能更可靠/更少工作量,尽管如果您的用户足够精明,几乎所有事情都有解决方法。