有一些域名的 DNS 服务器是这个域名本身的子域名,这种情况是怎么解析的?难道不会陷入死循环么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
7DLNU56W
V2EX    DNS

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

  •  
  •   7DLNU56W 2017-09-07 09:21:28 +08:00 7106 次点击
    这是一个创建于 2980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教一个关于 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.om.
    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  
    PRO
       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     Solana     1368 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:58 PVG 07:58 LAX 15:58 JFK 18:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86