• 应用层 DNS Linux 下解析域名命令 dig 命令使用详解


    查询单个域名的 DNS 信息


    dig 命令最典型的用法就是查询单个主机的信息。

    1. linuxidc@linuxidc:~$ dig www.linuxidc.com
    2. ; < <>> DiG 9.11.3-1Ubuntu1.5-Ubuntu < <>> www.linuxidc.com
    3. ;; global options: +cmd
    4. ;; Got answer:
    5. ;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 17774
    6. ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    7. ;; OPT PSEUDOSECTION:
    8. ; EDNS: version: 0, flags:; udp: 65494
    9. ;; QUESTION SECTION:
    10. ;www.linuxidc.com. IN A
    11. ;; ANSWER SECTION:
    12. www.linuxidc.com. 5 IN A 122.228.238.15
    13. www.linuxidc.com. 5 IN A 106.42.25.203
    14. ;; Query time: 10 msec
    15. ;; SERVER: 127.0.0.53#53(127.0.0.53)
    16. ;; WHEN: Sun Mar 03 10:55:35 CST 2019
    17. ;; MSG SIZE rcvd: 77

    dig 命令默认的输出信息比较丰富,大概可以分为5 个部分

    • 第一部分显示 dig 命令的版本和输入的参数
    • 第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束
    • 第三部分中的 "QUESTION SECTION" 显示我们要查询的域名
    • 第四部分的 "ANSWER SECTION" 是查询到的结果
    • 第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等

    默认情况下 dig 命令查询 A 记录,上图中显示的 A 即说明查询的记录类型为 A 记录。在尝试查询其它类型的记录前让我们先来了解一下常见的 DNS 记录类型。

    常见 DNS 记录的类型


    类型目的

    A 地址记录,用来指定域名的 IPv4 地址,如果需要将域名指向一个 IP 地址,就需要添加 A 记录。
    AAAA 用来指定主机名(或域名)对应的 IPv6 地址记录。

    CNAME 如果需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录。

    CNAME 通常称别名指向。您可以为一个主机设置别名。比如设置test.mydomain.com,用来指向一个主机www.rddns.com,那么以后就可以用test.mydomain.com来代替访问www.rddns.com了。

    说明:

    • CNAME的目标主机地址只能使用主机名,不能使用IP地址
    • 主机名前不能有任何其他前缀,如:http://等是不被允许的
    • A记录优先于CNAME记录。即如果一个主机地址同时存在A记录和CNAME记录,则CNAME记录不生效


    MX 如果需要设置邮箱,让邮箱能够收到邮件,需要添加 MX 记录
    NS 域名服务器记录,如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。
    SOA SOA 这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。
    TXT 可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。

    查询 CNAME 类型的记录


    除了A记录,常见的DNS记录还有CNAME,我们可以在查询时指定要查询的DNS记录类型: 

    1. linuxidc@linuxidc:~$ dig m.linuxidc.com CNAME
    2. ; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> m.linuxidc.com CNAME
    3. ;; global options: +cmd
    4. ;; Got answer:
    5. ;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 61349
    6. ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
    7. ;; OPT PSEUDOSECTION:
    8. ; EDNS: version: 0, flags:; udp: 65494
    9. ;; QUESTION SECTION:
    10. ;m.linuxidc.com. IN CNAME
    11. ;; Query time: 26 msec
    12. ;; SERVER: 127.0.0.53#53(127.0.0.53)
    13. ;; WHEN: Sun Mar 03 11:20:34 CST 2019
    14. ;; MSG SIZE rcvd: 43

    这样结果中就只有 CNAME 的记录。其实我们可以在查询中指定任何 DNS 记录的类型。

    从指定的 DNS 服务器上查询


    由于一些原因,希望从指定的 DNS 服务器上进行查询(从默认的 DNS 服务器上获得的结果可能不准确)。指定 DNS 服务器的方式为使用 @ 符号:

    1. linuxidc@linuxidc:~$ dig @8.8.8.8 m.linuxidc.com
    2. ; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> @8.8.8.8 m.linuxidc.com
    3. ; (1 server found)
    4. ;; global options: +cmd
    5. ;; Got answer:
    6. ;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 38966
    7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    8. ;; OPT PSEUDOSECTION:
    9. ; EDNS: version: 0, flags:; udp: 512
    10. ;; QUESTION SECTION:
    11. ;m.linuxidc.com. IN A
    12. ;; ANSWER SECTION:
    13. m.linuxidc.com. 199 IN A 122.228.238.71
    14. m.linuxidc.com. 199 IN A 113.107.238.155
    15. ;; Query time: 120 msec
    16. ;; SERVER: 8.8.8.8#53(8.8.8.8)
    17. ;; WHEN: Sun Mar 03 11:21:48 CST 2019
    18. ;; MSG SIZE rcvd: 75

    从上图可以看到本次查询的 DNS 服务器为 8.8.8.8。 

    如果不指定 DNS 服务器,dig 会依次使用 /etc/resolv.conf 里的地址作为 DNS 服务器:

    linuxidc@linuxidc:~$ dig m.linuxidc.com

     上面查询的 DNS 服务器就变成了:

    显示13个根域服务器


    internet上有13个根域服务器,使用不加参数的dig命令显示这些服务器信息

    1. linuxidc@linuxidc:~$ dig
    2. ; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>>
    3. ;; global options: +cmd
    4. ;; Got answer:
    5. ;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 41525
    6. ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1
    7. ;; OPT PSEUDOSECTION:
    8. ; EDNS: version: 0, flags:; udp: 65494
    9. ;; QUESTION SECTION:
    10. ;. IN NS
    11. ;; ANSWER SECTION:
    12. . 5 IN NS b.root-servers.net.
    13. . 5 IN NS c.root-servers.net.
    14. . 5 IN NS d.root-servers.net.
    15. . 5 IN NS e.root-servers.net.
    16. . 5 IN NS f.root-servers.net.
    17. . 5 IN NS g.root-servers.net.
    18. . 5 IN NS h.root-servers.net.
    19. . 5 IN NS i.root-servers.net.
    20. . 5 IN NS j.root-servers.net.
    21. . 5 IN NS k.root-servers.net.
    22. . 5 IN NS l.root-servers.net.
    23. . 5 IN NS m.root-servers.net.
    24. . 5 IN NS a.root-servers.net.
    25. ;; Query time: 8 msec
    26. ;; SERVER: 127.0.0.53#53(127.0.0.53)
    27. ;; WHEN: Sun Mar 03 11:37:11 CST 2019
    28. ;; MSG SIZE rcvd: 239

  • 相关阅读:
    MONAI Label -- 使用 AI 加速你的分割标注
    Spring源码阅读(spring-framework-5.2.24)
    [ZJOI2013]K大数查询 (权值线段树套权值线段树+标记永久化)
    【ceph】ceph集群的故障域是怎么快速修改导入导出
    力扣1704
    以detectron2了解maskrcnn实现源码(1)--双线性插值
    Instruments中常用Template的使用
    【Java+SpringBoot】银行OA系统_企业OA系统_办公OA系统(源码+远程部署+代码讲解+答辩教学)
    rabbitMQ:绑定Exchange发送和接收消息(topic)
    分布式节能聚类算法(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/qq_34556414/article/details/133026323