Paw*_*mhm 21 domain-name-system
NS 记录的目的是告诉客户端哪个名称服务器肯定知道域名的实际 IP 地址。因此,例如,以下查询告诉您,如果您想获得有关facebook.com
您必须询问的权威答案a.ns.facebook.com
:
> dig ns facebook.com 19:58:27
; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns facebook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32063
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;facebook.com. IN NS
;; ANSWER SECTION:
facebook.com. 65000 IN NS a.ns.facebook.com.
facebook.com. 65000 IN NS b.ns.facebook.com.
;; Query time: 13 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sun Mar 20 19:58:40 CET 2016
;; MSG SIZE rcvd: 65
Run Code Online (Sandbox Code Playgroud)
这看起来很酷而且很有用,但我想知道为什么该ANSWER
部分包含权威来源的主机名而不是 IP?客户端获取权威来源的实际 IP 地址而不是主机名不是更容易吗?
我的意思是,如果它获得主机名,它将不得不进行另一个查询以将此主机名解析为 IP,然后向这个新 IP 询问facebook.com
它正在寻找的初始域。这不是效率低下吗?
我很想知道一些 RFC 中解释这个问题的一些段落的答案。
And*_*w B 41
Jason 提供了解决您描述的问题的 DNS 机制,但我们仍然没有研究为什么要这样做。
假设我拥有example.com
,并且我已将我的一些网站内容承包给一家名为Contoso的内容交付公司。他们的平台要求我们委托sub.example.com
给他们的名称服务器,以便他们可以控制返回的响应。
; SOA and MX omitted from this example
$ORIGIN example.com.
@ IN NS ns1
@ IN NS ns2
; delegate sub.example.com to Contoso's nameservers
sub IN NS ns1.cdn.contoso.com.
sub IN NS ns2.cdn.contoso.com.
; this is ours, not Contoso's
www IN A 198.51.100.1
Run Code Online (Sandbox Code Playgroud)
正如您所指出的,我们没有指定 Contoso 名称服务器的 IP 地址。我们的服务器所知道的只是告诉互联网“我们不管理sub.example.com
,而是问 Contoso”。这非常重要,因为:
到现在为止还挺好。一年过去了,我们不知道 Contoso 正在更改其 CDN 名称服务器的 IP 地址。因为 DNS 以它的方式工作,所以他们所要做的就是更新A
他们返回的记录ns1.cdn
和ns2.cdn.contoso.com.
。
这给我们带来了一个重要的点:Jason 描述的胶水记录的存在是为了处理 DNS 中的“鸡与蛋”场景,例如google.com
告诉全世界他们的域名服务器是ns1.google.com
和ns2.google.com
。你永远不应该创建指向你不拥有的基础设施的粘合记录,除非它们存在来解决这样的问题:
@ IN NS ns1
@ IN NS ns2
; delegate sub.example.com to ns1 and ns2.sub.example.com
sub IN NS ns1.sub
sub IN NS ns2.sub
; provide the IP addresses of ns1 and ns2 so that nameservers
; on the internet can find them.
;
; these IP addresses are owned by Contoso, not us, and they must
; coordinate changes to these IPs with us
ns1.sub IN A 203.0.113.10
ns1.sub IN A 203.1.113.10
Run Code Online (Sandbox Code Playgroud)
这避免了先有鸡还是先有蛋的情况,但也使得 Contoso 必须与我们协调这些名称服务器的每次 IP 更改。这是非常容易发生风险和不可取的。
归档时间: |
|
查看次数: |
8324 次 |
最近记录: |