我有两个新配置的 PowerDNS 服务器。一个充当主服务器,另一个充当从服务器。每个服务器上都运行着两个守护进程:powerdns 和 powerdns-recursor。第一个绑定到 5300 tcp 端口,第二个绑定到 53。我在 recursor.conf 中添加了以下规则(1.2.3.4 是服务器的 IP 地址):
forward-zones=.=1.2.3.4:5300
forward-zones-recurse=.=1.2.3.4:5300;8.8.8.8
多亏了它们,我的服务器可以解析内部添加的域名以及外部域名,例如 google.com。唯一的问题是,如果我只允许本地 IP 地址发送递归查询,则内部添加的域名将无法从世界访问。另一方面,如果我allow-from
在 recursor.conf 中将参数设置为 0.0.0.0/0,我的服务器将容易受到 DNS 放大攻击。我该怎么办?我想允许所有 IP 查询我的服务器以查找它们有权限的域名,但不允许递归查询。
答案1
对于您在问题中描述的情况,由于客户端需要递归而其他客户端需要权威答案,因此 pdns-rec 并不是您首先应该向世界公开的。
从字里行间看,我认为问题实际上是如何在单个 IP 地址上运行 pdns-auth 和 pdns-rec,因为 pdns-auth 不再具有过去使用的递归配置选项。
为此,您可能应该仔细查看PowerDNS 指南从在权威服务器上使用递归迁移到使用 Recursor。
对于您的情况,该指南归结为:首先,最简单且可以说是最好的方法就是将这些服务放在不同的 IP 上,但建议的替代解决方案是坚持域名系统在您的 pdns-auth 和 pdns-rec 实例前面(dnsdist 将在端口 53 上监听),让 dnsdist 将应该具有递归的客户端的查询传递到具有您的 pdns-rec 实例的池,并将所有其他查询传递到具有您的 pdns-auth 实例的池。