luk*_*ani 1 domain-name-system dns-zone
我们公司期待部署和维护自己的公共 DNS。我概述了部署活动,但对在哪里注册我的公司域名以及如何映射我的公共 DNS 感到困惑。请任何人解释交通流量。
小智 10
我曾经在域注册机构工作,并且是 IETF DNS 工作组的成员,所以我会给你一个入门。
域名系统是按层次结构设计的。当您查找域名的数据时,您通常会转到最顶部并向下查找。
最顶端是根。根名称服务器是分布在世界各地的许多服务器,任何问题总是从这些服务器开始——除非数据被缓存,我们稍后再谈。作为普通用户,您不会在域名中看到它们,但它们就在那里。
接下来是顶级域。它们分为通用顶级域(如 .com、.net 或 .movie)和国家代码顶级域(如美国的 .us、挪威的 .no 或中国的 .cn)。
之后是二级领域。这些是您通常作为最终客户购买的产品。例如,如果您想拥有 example.com,请前往注册商,检查 example.com 是否可用,如果可用,请将其添加到购物车并点击结帐。然后,您可以让注册商或其他托管公司为您运行 DNS,或者您将设置自己的 DNS 服务器并让注册商将域委托给您。委派意味着他们将注册数据,表明您的 DNS 服务器负责该域。
拥有域后,您还可以设置三级域或子域。这为 DNS 服务器添加了另一个层次结构。您还可以设置主机名,对于普通用户来说,这看起来完全一样。
那么,让我们来看看平均的 DNS 查找。
假设您想访问www.example.com。您的 DNS 服务器要做的第一件事就是去根服务器查找谁负责 .com。您的 DNS 服务器已经内置了根服务器的地址,因此通常无需查找它们。相反,我们寻找 .com 的信息。
我将在这里使用程序“dig”,但为了可读性我会认可输出。
首先,我们为 com 请求名称服务器 (ns)。我们直接从服务器 a.root-servers.net 询问,它是 DNS 系统的根服务器之一。
$ dig ns com. @a.root-servers.net.
Run Code Online (Sandbox Code Playgroud)
输出如下(再次,缩写)
;; QUESTION SECTION:
;com. IN NS
;; AUTHORITY SECTION:
com. 172800 IN NS a.gtld-servers.net.
;; ADDITIONAL SECTION:
a.gtld-servers.net. 172800 IN A 192.5.6.30
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30
Run Code Online (Sandbox Code Playgroud)
QUESTION SECTION 向我们展示了我们的要求,在这种情况下, com 的 NS 记录。
AUTHORITY 部分向我们展示了根服务器不对 .com 负责,但它告诉我们是谁负责。在这种情况下,它告诉我们 a.gtld-servers.net 负责。
它还为我们提供了一个附加部分,其中包含 a.gtld-servers.net 的地址记录(A for IPv4 和 AAAA for IPv6)。这个地址被称为胶水,不被认为是权威答案,但它是一个提示,告诉我们这是系统中列出的地址。当您需要服务器的 IP 地址时需要胶水记录,否则您只能通过执行 DNS 查找来访问该地址,您需要名称服务器的 IP 地址。这一切都有些递归。
不管怎样,让我们继续查找 example.com 的名称服务器。现在,这将与真实世界的 DNS 告诉您的内容略有不同,但这是一个示例,因此我们将使用示例数据。
$ dig ns example.com. @192.5.6.30
Run Code Online (Sandbox Code Playgroud)
我们正在询问上面得到的 a.gtld-servers.net 的 IP 地址。它们是 .com 域的权威,因此应该能够告诉我们 example.com 有哪些名称服务器。
;; QUESTION SECTION:
;example.com. IN NS
;; AUTHORITY SECTION:
example.com. 172800 IN NS ns2.example.com.
example.com. 172800 IN NS ns1.example.com.
;; ADDITIONAL SECTION:
ns2.example.com. 172800 IN A 192.0.2.4
ns1.example.com. 172800 IN A 192.0.2.5
Run Code Online (Sandbox Code Playgroud)
现在,这就是为什么这种胶水很重要。由于example.com 的名称服务器驻留在example.com 下,因此它们由example.com 下的名称服务器管理。本质上,你被告知打电话给 Bob 以获取 Bob 的号码,因为只有 Bob 知道 Bob 的电话号码是什么。胶水是一个提示。Bob 可能已经更改了号码,但这是 .com 的名称服务器所知道的。
现在我们知道了 example.com 名称服务器的地址,我们终于可以询问主机名了。
$ dig a www.example.com. @192.0.2.4
Run Code Online (Sandbox Code Playgroud)
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 300 IN A 192.0.2.10
Run Code Online (Sandbox Code Playgroud)
我们终于有了www.example.com主机名的地址记录。请注意这里没有附加部分,因为此查询不需要这样的部分。我们提出了一个简单的问题,并从对该域具有权威性的服务器上获得了准确的答案。
现在,一直进行所有这些查找有点浪费时间和资源,因此通常所做的是本地 DNS 服务器充当缓存。您是否注意到所有 DNS 记录的外观?DNS 记录中的字段如下:域、生存时间 (TTL)、类(在我们的例子中为互联网的 IN)、类型(A 表示地址,NS 表示名称服务器等)和数据(例如一个 IP 地址用于一个记录)。
DNS 记录中的 TTL 是允许缓存存储数据的时间。预期不会更改或很少更改的记录具有长 TTL。例如,我们查看的前几条记录中的 172800 秒 TTL。可能会在短时间内更新的记录具有较低的 TTL,例如www.example.com的 300 秒 TTL 。
每当我们进行 DNS 查找时,如果我们已经在寻找的数据已被缓存,我们就不需要一直到根服务器。我们通常一直访问 .com 域,因此数据几乎总是缓存在我们的本地 DNS 服务器中。但是,这确实意味着无论何时更改 DNS 数据,更改传播都可能需要时间。实际上,这意味着您需要提前更改 TTL,或者告诉您的老板任何更改都需要时间才能完全生效。
要注册您的域,您通常需要前往您要在其下注册的顶级域的注册商。大多数托管公司和域注册商将能够在许多不同的顶级域下注册域,因此您几乎可以选择其中的任何一个。
注册服务商是注册管理机构的经销商。注册管理机构是实际运行相关顶级域的公司或组织,但作为最终用户,您需要处理的只是注册服务商,甚至只是您的托管公司。
大多数注册商都有处理授权和 DNS 记录的许多技术细节的网络界面,但即便如此,即使您依赖注册商的网络界面,了解 DNS 的基础知识也会让您的生活变得更加轻松。
如果您想了解有关 DNS 的更多信息,并且如果您从事 IT 工作,您真的应该了解 DNS 的工作原理,因为它是许多潜在问题的根源,我建议您阅读 O'Reilly 的《DNS 和绑定》一书。它非常全面,将使您成为 DNS 专家。如果您想运行自己的 DNS 服务器,我强烈建议您阅读本书。它确实涵盖了绑定 DNS 服务器软件,但相同的原则适用于那里的任何 DNS 服务器软件。
归档时间: |
|
查看次数: |
285 次 |
最近记录: |