我想了解在现实世界中如何使用“Bind9 DNS Linux 服务器”。我读到过 DNS 服务器有不同的“类型”;权威服务器、缓存和转发。有人能告诉我一家公司(比如说有 250 名用户)的 DNS 服务器设置吗?我的示例中有 4 台服务器,您可以看到我想弄清楚什么。
- 缓存 DNS 服务器
- 仅权威 DNS 服务器(主要)
- 仅授权 DNS 服务器 (次要)
- 这通常是什么?
“转发 DNS 服务器”在此示例中的位置在哪里?或者您会将其与缓存 DNS 服务器合并吗?
还有其他我未列出的 Bind9 DNS 服务器类型吗?
谢谢
答案1
DNS 实际上是一个相当复杂的主题。因此,理解我在这里所说的内容非常“粗略”。要了解不同类型的 DNS 服务,您首先必须了解DNS 查询的剖析。
DNS 的要点。
总结一下(并简化一下),DNS 查询会获取一个主机名……比如说myserver1.example.com
……并要求系统设置中配置的 DNS 服务器(您的“本地 DNS 服务器”)为其提供与该主机名匹配的 IP 地址。然后事情可以朝两个方向发展。如果本地 DNS 服务器知道与该主机名匹配的 IP 地址,它就会直接回复正确的答案。
但是,如果它不知道正确答案,它必须向互联网上的另一个 DNS 服务器询问答案。要找出应该询问哪个 DNS 服务器(哪个 DNS 服务器是权威性为该主机名查询 DNS“根”服务器。这些是“顶级域”的权威服务器,例如.com
、.info
等。它会询问根服务器权威 DNS 服务器是什么,在我们的示例中,是域example.com
。根服务器会向您的本地 DNS 服务器发送所有对“example.com”具有权威性的服务器的 IP 地址,然后您的本地 DNS 服务器会向这些权威服务器查询与 匹配的 IP 地址myserver1.example.com
。当它收到回复时,它会前锋对发出查询的原始设备做出答复。
因此,权威 DNS 服务器对哪个查询与哪个结果匹配拥有最终决定权,而转发 DNS 服务器则在自己没有答案时将查询转发给权威 DNS 服务器。那么转发 DNS 服务器如何自己拥有答案呢?缓存过去的结果。在这种情况下,第一次查询将需要很长时间(以计算机时间计算)才能获得结果,但对同一主机名的任何后续查询都将非常非常快地获得结果。考虑一下,要加载单个网页,浏览器通常必须查找十几个主机名……通常是上次访问该网站时查找的相同主机名。在本地拥有一个或多个缓存域服务器可以让您现有的互联网对用户的响应更加灵敏。
因此,在上面的例子中,我们的转发 DNS 服务器也是缓存 DNS 服务器。这些服务器也可以是贵公司的权威 DNS 服务器。在这种情况下,它们也不需要转发对贵公司 DNS 服务器具有权威性的主机名的请求……它们只需回复答案即可。
但是!这很重要。您永远不应该只使用一个权威 DNS 服务器。事实上,许多注册商会拒绝允许公开可见的权威 DNS 服务器这样做。这不是因为性能问题,而是因为互联网所依赖的 DNS 基础设施需要冗余。次级权威服务器在各方面都与任何其他 DNS 服务器一样,只是它会尝试将其权威记录与另一个(主)权威服务器保持同步。这意味着当您更新记录时,您将在主权威服务器上进行更新,并且更改将快速传播到您可能拥有的任何次级权威服务器。速度有多快在很大程度上取决于相关 DNS 服务器的配置。
那么让我们继续讨论你的例子。
单个转发 DNS 服务器足以处理 250 个用户的负载。最好再配备一个转发 DNS 服务器,以防万一发生故障……这样就不会影响工作。重要的是,转发服务器应配置为仅转发来自本地网络的查询。理想情况下,这些服务器甚至无法从互联网访问,但在某些情况下可能需要这样做。在这种情况下,重要的是确保您公司的资源不会被互联网上的不劳而获者所消耗。理想情况下,您还应配置这些服务器以在一段时间内缓存结果。
至于权威 DNS……嗯……这取决于您想要实现什么。如果您试图让网络上的各种机器能够通过主机名而不是 IP 地址找到彼此,那么您首先需要为每个希望通过这种方式访问的设备分配静态 IP 地址。这对于便携式设备来说尤其困难。有办法让记录自动更新以匹配 DHCP 分配的 IP……但可靠性会大幅下降,并且所需的维护也会相应增加。对于 250 个用户来说,这可能太多了。
然后,您将需要两个权威服务器……主服务器和辅助服务器。它们可以与您的转发/缓存服务器相同……但要格外小心,配置 DNS 服务器,不要对来自互联网的查询给出权威响应。这不仅是为了节省资源甚至安全,也是为了避免用本地网络之外无用的信息污染互联网的 DNS 基础设施。
网络中每个试图通过您自己的权威 DNS 服务器或转发/缓存 DNS 服务器查找主机名的设备都需要将这些 DNS 服务器配置为其主 DNS 和辅助 DNS。事实上,理想的情况是,您的权威 DNS 服务器也应是转发服务器,这样既可以简化配置,又可以确保不会向仅限本地的 DNS 服务器发送无意义的基于互联网的主机名查询,反之亦然。
您还需要开发自己的主机名方案。建议...避免使用.local
作为您的 TLD。它与 Apple 设备中常见的 mDNS(多播 DNS)等分散式 DNS 服务相冲突。最佳做法是使用您公司的域名并创建一个子域名(subdomain.domain.tld
),所有本地主机都分配在该子域名下(myserver1.myoffice1.company.com
、myworkstation256.myoffice1.company.com
等)。
现在,如果您希望权威 DNS 服务器公开托管您公司域名的 DNS(用于您的网站等)...那么您需要进行一些深刻的思考。在几乎所有情况下,您最好支付包含托管 DNS 托管的托管费用。这样做有很多好处。从改进的冗余(大多数主机有 5 个或更多面向互联网的 DNS 服务器),到更好的物理位置(主机可以将 DNS 服务器放置在不同的数据中心以进一步提高冗余度并减少尝试访问您网站的人的延迟),再到更高级的配置(例如使用 geoip 功能将查询定向到物理上最近的 DNS 服务器)。
希望这能解答您的问题。