我正在尝试使用 Bind9 制作一个仅缓存/转发 DNS 服务器,并默认启用 DNSSEC 验证。
假设您从我的配置文件中获得以下信息:
acl "home-net"
{
127.0.0.1;
::1;
192.168.1.0/24;
2000:db8:cafe:100::/64;
};
options
{
forwarders
{
# Use Google DNS either by IPv6 or IPv4 is fine.
2001:4860:4860::8888;
2001:4860:4860::8844;
8.8.8.8;
8.8.4.4;
};
dnssec-enable yes;
dnssec-validation auto;
allow-query { any; };
allow-query-cache { home-net; };
allow-recursion { home-net; };
};
zone "subdomain.example.net" {
type forward;
forward only;
forwarders
{
# SAMBA PDC1 (Active Directory)
2000:db8:cafe:100::1;
# SAMBA PDC2 (Active Directory)
2000:db8:cafe:100::2;
};
};
据我所理解:
每当我想查找在子域中注册的主机时subdomain.example.net
,名称服务器就会联系我在区域配置的转发器部分中列出的两个 SAMBA PDC 之一。
域名服务器将依次进行 DNSSEC 验证,以确保这两个 SAMBA PDC 实际上被授权回复对域的请求subdomain.example.net
。
如果来自 SAMBA PDC 的回复无法通过 DNSSEC 验证,则名称服务器将转向 Google DNS 并询问他们是否可以提供经过 DNSSEC 验证的响应。
现在问题来了:
据我了解,无论是通过使用 SAMBA INTERNAL_DNS 还是通过 BIND9_DLZ,在 SAMBA 中都没有 DNSSEC 支持,因此您永远无法对 SAMBA 维护的任何区域进行 DNSSEC 验证。
据我了解有3个选项:
- 全局禁用 DNSSEC 验证。
- 使用负信任锚。
- 使用“验证除外”选项。
我会一一处理。
禁用 DNSSEC
在我的书中,这不是一个真正的选择。它基本上将您的设置减少到“在全球范围内工作”......除了您在世界的某个小角落,所以最好一起禁用它。
只需将dnssec-enable
和的值更改为dnssec-validation
即可no
。
在我可以再次激活 DNSSEC 之前,我只会将其用作临时修复。
使用负信任锚
起初我的兴趣达到了顶峰。这个想法是您注册一个特殊的加密密钥,rndc
然后它不会对您想要的域进行任何 DNSSEC 验证。
然而,这是一个临时修复,因为密钥的生命周期最多为一周。
这意味着您必须执行与 Let's Encrypt 中的证书相同类型的资源 - 只是必须更频繁地触发 cron 作业。
使用 'validate-except' 选项
从理论上讲,这应该是所有解决方案中最简单的。
我只需要添加一个新部分即可options
调用validate-except
。
像这样:
options
{
dnssec-enable yes;
dnssec-validation auto;
validate-except
{
"subdomain.example.net";
"another.example.net";
};
};
听起来很简单——对吧?:-)
...除了我的名称服务器由于“未知选项 - 验证除外”而没有启动。
编辑:原来 Raspberry OS 使用 Bind 版本 9.11 而该validate-except
选项仅在 Bind 版本 9.13 中实现。
作为参考,用于 Raspberry 的 Ubuntu 20.04 使用 Bind 版本 9.16。
那么有没有人有关于 DNSSEC 的混合模式设置的经验?
...或者最简单的解决方案是承认失败并安装 Ubuntu 20.04?:-)
不知道这是否仍然很热门,但我认为使 BIND 配置复杂化会导致大量无偿工作时间与服务器作斗争。尽管您没有列出系统的规格,但如果可以选择,最好彻底检查并完成它。这种配置最难的部分是为简单而战。最简单的选择是让一切都“正常工作”,所以......使用 Ubuntu 20.04 LTS。就您的 SAMBA 配置而言,(同样,不知道您的规格)与 20.04 一起使用允许您轻松使用 BIND DLZ,甚至还有 dhcpd 更新。如果有硬件方面的考虑,ubuntu 服务器的可用配置最少,对系统资源的额外影响也很小。
用于 Rpi 的 Ubuntu 20.04 LTS
关于 Ubuntu 核心
MagPi:构建 RasPi SAMBA 服务器
Matthias Kerstner:在 Raspberry Pi 3 上使用 Samba 4 设置 Active Directory 域控制器
手动安装 BIND