AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 588244
Accepted
Andrew B
Andrew B
Asked: 2014-04-11 15:34:24 +0800 CST2014-04-11 15:34:24 +0800 CST 2014-04-11 15:34:24 +0800 CST

位于 DNS 域顶端的 NS 记录的作用是什么?

  • 772
$ORIGIN example.com. ; not necessary, using this to self-document

$TTL 3600
@        IN     SOA   ns1.example.com. admin.example.com. (
                      1970010100 7200 1800 1209600 300)

@        IN     NS   ns1.example.com.
@        IN     NS   ns2.example.com.

@        IN     A    198.51.100.1
ns1      IN     A    198.51.100.2
ns2      IN     A    198.51.100.3

sub1     IN     NS   ns1.example.edu.

sub2     IN     NS   ns1.sub2
ns1.sub2 IN     A    203.0.113.1 ; inline glue record

NS 记录在域顶点下的作用是众所周知的。它们的存在是为了将子域的权限委托给另一个名称服务器。上述示例包括 和 的 NSsub1记录sub2。这些允许名称服务器分发它不认为自己具有权威性的域部分的引用。

NS 记录在域顶点的目的,ns1在ns2这种情况下,整个互联网似乎不太了解。我的理解(可能不是整体的)如下:

  1. 缓存 DNS 服务器不使用它们来确定域的权威服务器。这由在注册商级别定义的名称服务器粘合处理。注册商从不使用此信息来生成粘合记录。
  2. 它们不用于将整个域的权限委托给其他名称服务器。尝试使用 ISC BIND 等软件这样做根本不会导致“预期的”引用行为,因为名称服务器将继续认为自己对该区域具有权威性。
  3. 名称服务器不使用它们来确定它是否应该返回权威响应(AA标志集);该行为由软件被告知是该区域的主机还是从机来定义。大多数域名服务器软件很乐意为与上游粘合记录所包含的信息不一致的顶级 NS 记录提供服务,这反过来会导致知名的 DNS 验证网站为域生成警告。

既然如此,我们还剩下什么?如果这些信息似乎没有被整个 Internet 上的 DNS 服务器缓存所消耗,我们为什么要定义这些信息?

domain-name-system ns-record glue-record
  • 2 2 个回答
  • 10388 Views

2 个回答

  • Voted
  1. Best Answer
    Andrew B
    2014-04-11T15:34:24+08:002014-04-11T15:34:24+08:00

    下属标识

    主服务器使用 Apex 级别的 NS 记录来识别其下属。当权威名称服务器上的数据发生变化时,它将通过DNS NOTIFY消息 ( RFC 1996 ) 向该列表中的所有对等方通告这一点。这些服务器将依次调用SOA记录请求(包含序列号),并决定是否下载该区域的更新副本。

    • 可以将这些消息发送到该NS部分中未列出的服务器,但这需要特定于服务器的配置指令(例如 ISC BINDalso-notify指令)。顶点 NS 记录包含在默认配置下要通知的服务器的基本列表。
    • 值得注意的是,辅助服务器也会根据这些NS记录相互发送 NOTIFY 消息,通常会导致记录拒绝。这可以通过指示服务器只发送他们是主控区域的通知来禁用 (BIND: notify master;),或者完全跳过NS基于通知的通知,以支持在配置中明确定义的通知。(绑定notify explicit;:)

    权威定义

    上面的问题包含一个谬误:

    缓存 DNS 服务器不使用它们来确定域的权威服务器。这由在注册商级别定义的名称服务器粘合处理。注册商从不使用此信息来生成粘合记录。

    这是一个容易得出的结论,但并不准确。NS记录和粘合记录数据(例如在您的注册商帐户中定义的数据)不具有权威性。理所当然地,它们不能被认为比驻留在被授权的服务器上的数据“更权威”。推荐人没有设置aa(权威答案)标志这一事实强调了这一点。

    为了显示:

    $ dig @a.gtld-servers.net +norecurse +nocmd example.com. NS
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14021
    ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 5
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;example.com.                   IN      NS
    
    ;; AUTHORITY SECTION:
    example.com.            172800  IN      NS      a.iana-servers.net.
    example.com.            172800  IN      NS      b.iana-servers.net.
    
    ;; ADDITIONAL SECTION:
    a.iana-servers.net.     172800  IN      A       199.43.135.53
    a.iana-servers.net.     172800  IN      AAAA    2001:500:8f::53
    b.iana-servers.net.     172800  IN      A       199.43.133.53
    b.iana-servers.net.     172800  IN      AAAA    2001:500:8d::53
    

    请注意上述回复中缺少aa标志。推荐本身并不权威。另一方面,被引用的服务器上的数据是权威的。

    $ dig @a.iana-servers.net +norecurse +nocmd example.com. NS
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2349
    ;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;example.com.                   IN      NS
    
    ;; ANSWER SECTION:
    example.com.            86400   IN      NS      a.iana-servers.net.
    example.com.            86400   IN      NS      b.iana-servers.net.
    

    也就是说,这种关系可能会变得非常混乱,因为如果没有在推荐的父端定义NS的非权威记录,就不可能了解这些记录的权威版本。NS如果他们不同意会发生什么?

    • 简短的回答是“不一致的行为”。
    • 长答案是,名称服务器最初会将引用(和粘合)的所有内容存根到空缓存上,但是这些NS,A和AAAA记录最终可能会在刷新时被替换。刷新发生在这些临时记录上的 TTL 到期时,或者当有人明确请求这些记录的答案时。
    • A和区域外AAAA数据的记录(即为区域外数据定义粘合的名称com服务器,如. (RFC 2181)comexample.net
    • 当NS引用的父方和子方之间的记录值不同时(例如输入注册商控制面板的名称服务器与NS位于相同服务器上的记录不同),所经历的行为将不一致,直至并包括子NS记录被完全忽略。这是因为标准没有很好地定义行为,并且实现在不同的递归服务器实现之间有所不同。换句话说,只有当域的名称服务器定义在引用的父方和子方之间保持一致时,才能期望在 Internet 上保持一致的行为。

    总而言之,如果在引用的父端定义的记录与这些记录的权威版本不一致,整个互联网的递归 DNS 服务器将在目的地之间反弹。最初,推荐中存在的数据将是首选,仅由权威定义替换。由于互联网上不断地从头开始重建缓存,因此互联网不可能使用这种配置来解决单一版本的现实。如果根据标准,权威记录正在做一些非法的事情,例如将NS记录指向由 a 定义的别名CNAME,这变得更加难以排除故障;对于拒绝违规的软件,域将在工作和损坏之间交替。(即 ISC BIND/命名)

    RFC 2181 §5.4.1为该数据的可信度提供了一个排名表,并明确指出与引用和粘合相关的缓存数据不能作为对它们引用的记录的显式请求的答案返回。

    5.4.1. Ranking data
    
       When considering whether to accept an RRSet in a reply, or retain an
       RRSet already in its cache instead, a server should consider the
       relative likely trustworthiness of the various data.  An
       authoritative answer from a reply should replace cached data that had
       been obtained from additional information in an earlier reply.
       However additional information from a reply will be ignored if the
       cache contains data from an authoritative answer or a zone file.
    
       The accuracy of data available is assumed from its source.
       Trustworthiness shall be, in order from most to least:
    
         + Data from a primary zone file, other than glue data,
         + Data from a zone transfer, other than glue,
         + The authoritative data included in the answer section of an
           authoritative reply.
         + Data from the authority section of an authoritative answer,
         + Glue from a primary zone, or glue from a zone transfer,
         + Data from the answer section of a non-authoritative answer, and
           non-authoritative data from the answer section of authoritative
           answers,
         + Additional information from an authoritative answer,
           Data from the authority section of a non-authoritative answer,
           Additional information from non-authoritative answers.
    
       <snip>
    
       Unauthenticated RRs received and cached from the least trustworthy of
       those groupings, that is data from the additional data section, and
       data from the authority section of a non-authoritative answer, should
       not be cached in such a way that they would ever be returned as
       answers to a received query.  They may be returned as additional
       information where appropriate.  Ignoring this would allow the
       trustworthiness of relatively untrustworthy data to be increased
       without cause or excuse.
    
    • 30
  2. BillThor
    2014-04-11T19:36:19+08:002014-04-11T19:36:19+08:00

    NS 记录委派区域提供域定义的完整性。NS 服务器本身将依赖区域文件。他们不应该尝试通过从根服务器进行递归查询来找到自己。区域文件中的 NS 记录提供了许多其他功能。

    缓存服务器可以通过从缓存中查询名称服务器来刷新名称服务器列表。只要缓存服务器知道名称服务器的地址,它就会使用该地址,而不是递归地查找适当的 NS 记录。

    移动名称服务器时,更新旧名称服务器和新名称服务器非常重要。这将防止两个区域定义不同步时导致的中断或不一致。更新后的记录最终会被任何缓存了 NS 记录的服务器刷新。这将替换缓存的名称服务器列表。

    NS 记录还有助于确认 DNS 配置的正确性。验证软件通常会验证委托区域的名称服务器定义是否与区域提供的匹配。可以在所有名称服务器上执行此检查。任何不匹配都可能表示配置错误。

    拥有 NS 记录允许断开(本地)区域。这些可能是已注册域的子域,或全新域(由于 TLD 更改不推荐)。使用名称服务器作为其名称服务器的主机将能够通过从根服务器递归查找无法访问的区域。其他名称服务器可以配置为查找本地区域的名称服务器。

    在拆分 DNS(内部/外部)的情况下,可能需要一组不同的 DNS 服务器。在这种情况下,NS 列表(可能还有其他数据)会有所不同,并且区域文件中的 NS 记录将列出适当的名称服务器列表。

    • 3

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve