使用 BIND RPZ 为我提供了我正在寻找的更改查询的确切内容。但是,数百个客户端正在使用我的递归 DNS 服务器,我正在寻找一种方法来允许每个客户端进行某种程度的自定义。客户可能希望启用数百个区域,以实现数千种不同的可能组合。
看来我仅限于 32 个 RPZ 区域(看似无限长),但仅此一项是行不通的——每个用户都需要选择加入特定区域的能力。即使每个客户端都有大量区域,它仍然会达到 32 个限制。
我已经简要地查看了 Unbound,它似乎具有类似的具有本地数据透明度的 RPZ 设置,但是当寻找一种将事物分成视图的方法时,乐趣似乎已经结束,因此我只能将它们提供给特定的客户。
当然有一种方法可以在不重新发明轮子的情况下实现这一目标?我看到商业提供商提供类似的设置,例如 OpenDNS,成千上万的客户可以在其中切换各种列表。秘方是什么?
首先,它有助于理解为什么存在限制。
我已经强调了相关的措辞。更改 32 限制的唯一方法是更新算法以使用更大的位域,或完全删除优化代码。即使您将位域的大小加倍为 64(或重新加倍为 128 等),您仍然要处理基数树优化所施加的静态限制。由于我不熟悉这个算法的内部结构,我也不能说这种尝试一开始会有多有效。
您可以通过使用与您的个人客户匹配的视图来解决此问题,这将为每个客户提供 32 个 RPZ 区域,但这是您在不深入研究源代码的情况下所能达到的范围。