V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
7DLNU56W
V2EX  ›  DNS

有一些域名的 DNS 服务器是这个域名本身的子域名,这种情况是怎么解析的?难道不会陷入死循环么?

  •  
  •   7DLNU56W · 2017-09-07 09:21:28 +08:00 · 6446 次点击
    这是一个创建于 2395 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教一个关于 DNS 解析的问题。
    有一些域名的 DNS 服务器是这个域名本身的子域名,这种情况是怎么解析的?难道不会陷入死循环么?

    举例如下
    taobao.com 的 DNS 服务器是 ns4.taobao.com ,这样当解析 www.taobao.com 的时候,递归解析从根域到 com.域再查询 taobao.com.域的时候发现这个域的 DNS 服务器是一个域名,这个域名还需要再解析,解析这个 DNS 服务器的域名(即 ns4.taobao.com )时还需要从根域到 com.域再到 taobao.com.域,又要查询 taobao.com.域的 DNS 服务器,又发现是 ns4.taobao.com ,然后又要解析这个新域名,。。。这样不是就陷入死循环了么,这种域名的 DNS 服务器是域名本身的子域名的这种域名是怎么解析的?
    24 条回复    2017-09-12 13:21:50 +08:00
    tuibaba
        1
    tuibaba  
       2017-09-07 09:27:13 +08:00
    这...
    Sh888
        3
    Sh888  
       2017-09-07 09:28:24 +08:00
    DNS 服务器不都是直接使用它的 ip 地址的吗?正向解析也是查询一般主机,为什么要查询 dns 服务器的 ip 地址?
    anoymoux
        4
    anoymoux  
       2017-09-07 09:30:38 +08:00
    techeek
        5
    techeek  
       2017-09-07 09:31:09 +08:00
    @Sh888 他的意思是现在很多服务商都有自己的 ns 解析,那么问题来了,这个 ns 解析是怎么来的,一级域名 taoao.com 是谁来解析的。
    Sh888
        6
    Sh888  
       2017-09-07 09:33:09 +08:00
    @techeek taobao.com 难道不是 com 主机解析的吗?
    Sh888
        7
    Sh888  
       2017-09-07 09:35:08 +08:00
    *.tao bao.com 再由 taob ao.com 解析,tao bao.com 可能把解析转发给 ns.tao bao.com
    7DLNU56W
        8
    7DLNU56W  
    OP
       2017-09-07 09:43:36 +08:00
    就是说 ns.taobao.com 这个域名怎么解析,查询根域,得到 com 域的地址,再查询 com 域得到 taobao.com 域的地址为 ns.taobao.com ,可现在的情况就是根本不知道 ns.taobao.com 的地址,解析的过程转一圈又回到起点了?
    TestSmirk
        9
    TestSmirk  
       2017-09-07 09:52:08 +08:00
    同好奇..
    zxp
        10
    zxp  
       2017-09-07 09:52:19 +08:00
    这个 ns.taobao.com 的 IP 地址要先在注册局注册的,也就是说在注册局那里直接就知道该向哪个 IP 去解析 taobao.com 这个域名的主机地址了。
    Sh888
        11
    Sh888  
       2017-09-07 09:52:37 +08:00
    taobao. com 就知道 ns.taobao. com 的 ip 地址呀。
    song4
        12
    song4  
       2017-09-07 10:00:26 +08:00
    涉及的概念:DNS Delegation。DNS 的名称空间是分级的树状结构,每一级会有一组名称服务器负责解析该级的名称。

    www.taobao.com 来说,它的 FQDN 是 www.taobao.com. 。注意末尾有个点。

    我们对其进行 DNS 查询时,首先查询根(.)的名称服务器,返回:*.root-servers.net. 。这是根名称服务器。

    接着,向任意一个根名称服务器查询 com. 的名称服务器,返回:*.gtld-servers.net. 。这是 gTLD 名称服务器。

    然后,选择一个 gTLD 名称服务器,查询 taobao.com. 的名称服务器,返回:ns[4-7].taobao.com. 。也就是说,taobao.com. 的名称服务器被注 册成了 ns[4-7].taobao.com 。这是人为控制的。

    最后,向任意一个 ns[4-7].taobao.com. 发起查询,你会发现其实只是 CNAME RECORD 而已。
    lengxx
        13
    lengxx  
       2017-09-07 10:06:01 +08:00 via Android
    http://www.internic.net/domain/root.zone
    看下这个楼主应该就明白了
    blueionic
        14
    blueionic  
       2017-09-07 10:08:00 +08:00 via Android
    glue record
    BOYPT
        15
    BOYPT  
       2017-09-07 10:15:42 +08:00
    顶级域名的 NS 记录是由域名托管机构同步到根服务器当中,而不是由域名的权威服务器提供查询。
    also24
        16
    also24  
       2017-09-07 10:31:23 +08:00
    关于 DNS 的问题,在 风河博客 里有很详细的解答,具体到 NS 记录自身解析的问题可以参考以下几篇内容:

    http://thinnote.com/archives/91
    http://thinnote.com/archives/115
    http://thinnote.com/doc/DNS.pdf

    所以,应该是 @blueionic #14 所说的胶水记录的效果
    wysnylc
        17
    wysnylc  
       2017-09-07 11:28:44 +08:00
    @song4 学到了!之前只知道根服务器不知道原来后面还有个点!
    my3157
        18
    my3157  
       2017-09-07 11:31:22 +08:00
    @blueionic +1 glue record
    my3157
        19
    my3157  
       2017-09-07 11:37:04 +08:00   ❤️ 1
    看下面查询过程, .com 查 taobao 的时候返回的 ns 记录带 ip 的

    $ dig

    ; <<>> DiG 9.8.3-P1 <<>>
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38539
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;. IN NS

    ;; ANSWER SECTION:
    . 98233 IN NS e.root-servers.net.
    . 98233 IN NS j.root-servers.net.
    . 98233 IN NS k.root-servers.net.
    . 98233 IN NS h.root-servers.net.
    . 98233 IN NS g.root-servers.net.
    . 98233 IN NS d.root-servers.net.
    . 98233 IN NS a.root-servers.net.
    . 98233 IN NS c.root-servers.net.
    . 98233 IN NS b.root-servers.net.
    . 98233 IN NS f.root-servers.net.
    . 98233 IN NS i.root-servers.net.
    . 98233 IN NS l.root-servers.net.
    . 98233 IN NS m.root-servers.net.

    ;; Query time: 43 msec
    ;; SERVER: 192.168.2.1#53(192.168.2.1)
    ;; WHEN: Thu Sep 7 11:34:19 2017
    ;; MSG SIZE rcvd: 228

    $ dig @e.root-servers.net com.

    ; <<>> DiG 9.8.3-P1 <<>> @e.root-servers.net com.
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63619
    ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 15
    ;; WARNING: recursion requested but not available

    ;; QUESTION SECTION:
    ;com. IN A

    ;; AUTHORITY SECTION:
    com. 172800 IN NS a.gtld-servers.net.
    com. 172800 IN NS b.gtld-servers.net.
    com. 172800 IN NS c.gtld-servers.net.
    com. 172800 IN NS d.gtld-servers.net.
    com. 172800 IN NS e.gtld-servers.net.
    com. 172800 IN NS f.gtld-servers.net.
    com. 172800 IN NS g.gtld-servers.net.
    com. 172800 IN NS h.gtld-servers.net.
    com. 172800 IN NS i.gtld-servers.net.
    com. 172800 IN NS j.gtld-servers.net.
    com. 172800 IN NS k.gtld-servers.net.
    com. 172800 IN NS l.gtld-servers.net.
    com. 172800 IN NS m.gtld-servers.net.

    ;; ADDITIONAL SECTION:
    a.gtld-servers.net. 172800 IN A 192.5.6.30
    b.gtld-servers.net. 172800 IN A 192.33.14.30
    c.gtld-servers.net. 172800 IN A 192.26.92.30
    d.gtld-servers.net. 172800 IN A 192.31.80.30
    e.gtld-servers.net. 172800 IN A 192.12.94.30
    f.gtld-servers.net. 172800 IN A 192.35.51.30
    g.gtld-servers.net. 172800 IN A 192.42.93.30
    h.gtld-servers.net. 172800 IN A 192.54.112.30
    i.gtld-servers.net. 172800 IN A 192.43.172.30
    j.gtld-servers.net. 172800 IN A 192.48.79.30
    k.gtld-servers.net. 172800 IN A 192.52.178.30
    l.gtld-servers.net. 172800 IN A 192.41.162.30
    m.gtld-servers.net. 172800 IN A 192.55.83.30
    a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30
    b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30

    ;; Query time: 179 msec
    ;; SERVER: 192.203.230.10#53(192.203.230.10)
    ;; WHEN: Thu Sep 7 11:34:38 2017
    ;; MSG SIZE rcvd: 509


    $ dig @a.gtld-servers.net. -t NS taobao.com

    ; <<>> DiG 9.8.3-P1 <<>> @a.gtld-servers.net. -t NS taobao.com
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30893
    ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 8
    ;; WARNING: recursion requested but not available

    ;; QUESTION SECTION:
    ;taobao.com. IN NS

    ;; AUTHORITY SECTION:
    taobao.com. 172800 IN NS ns4.taobao.com.
    taobao.com. 172800 IN NS ns5.taobao.com.
    taobao.com. 172800 IN NS ns6.taobao.com.
    taobao.com. 172800 IN NS ns7.taobao.com.

    ;; ADDITIONAL SECTION:
    ns4.taobao.com. 172800 IN A 198.11.138.245
    ns4.taobao.com. 172800 IN A 198.11.138.249
    ns5.taobao.com. 172800 IN A 140.205.2.180
    ns5.taobao.com. 172800 IN A 140.205.2.188
    ns6.taobao.com. 172800 IN A 140.205.71.245
    ns6.taobao.com. 172800 IN A 140.205.71.249
    ns7.taobao.com. 172800 IN A 106.11.35.25
    ns7.taobao.com. 172800 IN A 106.11.35.26

    ;; Query time: 106 msec
    ;; SERVER: 192.5.6.30#53(192.5.6.30)
    ;; WHEN: Thu Sep 7 11:35:01 2017
    ;; MSG SIZE rcvd: 228
    7DLNU56W
        20
    7DLNU56W  
    OP
       2017-09-07 12:49:06 +08:00
    感谢大家的回复,学到了好多啊~~
    hawhaw
        21
    hawhaw  
       2017-09-07 14:13:11 +08:00
    看到前面已经回复的比较详细了,就不再赘述了。其实你这个域的 nameserver,你上级的域是知道的,这个跟你自己域里的 ns 纪录其实是没有关系的。所以你改自己域的 nameserver,不仅仅要改你自己域的 ns 纪录,还需要到上级(一般是你这个域的托管商)那里修改 nameserver。最容易犯错误的是:你只更改了你域名服务器的 ip,于是你想也许不用改上层的 nameserver,就是改也不知道怎么改(毕竟域名没变!)。但实际上还是只改域名数据中的 A 纪录是不行的!!!!!还需要你这个域名服务器的域名(比如 ns4.taobao.com 就是 taobao.com )的托管商的系统里修改 nameserver,将 ns4.taobao.com 的 ip 改成新的。
    abmin521
        22
    abmin521  
       2017-09-08 00:13:48 +08:00
    自建一次权威 dns 估计就知道了
    mytsing520
        23
    mytsing520  
       2017-09-10 13:54:58 +08:00
    就是注册自己域名下的 DNS,具体原理,前面已经描述了很多
    LanFomalhaut
        24
    LanFomalhaut  
       2017-09-12 13:21:50 +08:00
    需要另外做操作 将记录给注册在 com 根 尝试 dig @a.gtld-servers.net. taobao.com ns +additional 就懂了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2793 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:31 · PVG 21:31 · LAX 06:31 · JFK 09:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.