• 19.2 Client 端的设定
    • 19.2.1 相关配置文件
    • 19.2.2 DNS 的正、反解查询指令: host, nslookup, dig
  • 1. 使用默认值来查出 linux.vbird.org 的 IP
  • 2. 查出 linux.vbird.org 的所有重要参数
  • 看样子,不就是 dig 的输出结果?所以,我们才会说,使用 dig 才是王道!
  • 3. 强制以 139.175.10.20 这部 DNS 主机来查询
  • 1. 直接搜寻 mail.ksu.edu.tw 的 IP 信息
  • 1. 使用默认值查询 linux.vbird.org 吧!
    • 19.2.3 查询领域管理者相关信息: whois

    19.2 Client 端的设定

    由于 DNS 是每部想要连上因特网的主机都得要设定的,因此我们就从简单的客户端设定谈起。因为未来架设好 DNS server 后,我们都会直接进行测试,所以,这个部分得先处理处理比较妥当啊!


    19.2.1 相关配置文件

    从 19.1.1 的说明当中我们晓得主机名对应到 IP 有两种方法,早期的方法是直接写在档案里面来对应, 后来比较新的方法则是透过 DNS 架构!那么这两种方法分别使用什么配置文件?可不可以同时存在? 若同时存在时,那个方法优先?嗯!我们先来谈一谈几个配置文件吧!

    • /etc/hosts :这个是最早的 hostname 对应 IP 的档案;
    • /etc/resolv.conf :这个重要!就是 ISP 的 DNS 服务器 IP 记录处;
    • /etc/nsswitch.conf:这个档案则是在『决定』先要使用 /etc/hosts 还是 /etc/resolv.conf 的设定!
      一般而言, Linux 的预设主机名与 IP 的对应搜寻都以 /etc/hosts 为优先,为什么呢?你可以查看一下 /etc/nsswitch.conf ,并找到 hosts 的项目:
    1. [root@www ~]# vim /etc/nsswitch.conf
    2. hosts: files dns

    上面那个 files 就是使用 /etc/hosts,而最后的 dns 则是使用 /etc/resolv.conf 的 DNS 服务器来进行搜寻啦!因此,你可以先以 /etc/hosts 来设定 IP 对应!当然啦,你也可以将他调换过来,不过,总是 /etc/hosts 比较简单,所以将他摆在前面比较好啦!

    好啦,既然我们是要进行 DNS 测试的,那么就得要了解一下 /etc/resolv.conf 的内容,假设你在台湾,使用的是 hinet 的 168.95.1.1 这部 DNS 服务器,所以你应该这样写:

    1. [root@www ~]# vim /etc/resolv.conf
    2. nameserver 168.95.1.1
    3. nameserver 139.175.10.20

    DNS 服务器的 IP 可以设定多个,为什么要设定多个呢?因为当第一部 (照设定的顺序) DNS 挂点时,我们客户端可以使用第二部 (上述是 139.175.10.20) 来进行查询,这多少有点像 DNS 备援功能。 通常建议至少填写两部 DNS 服务器的 IP,不过在网络正常使用的情况下,永远只有第一部 DNS 服务器会被使用来查询,其他的设定值只是在第一部出问题时才会被使用。

    Tips: 尽量不要设定超过 3 部以上的 DNS IP 在 /etc/resolv.conf 中,因为如果是你的区网出问题,导致无法联机到 DNS 服务器,那么你的主机还是会向每部 DNS 服务器发出联机要求,每次联机都有 timeout 时间的等待,会导致浪费非常多的时间喔!

    24.2. 19.2 Client 端的设定  - 图1

    例题:我的主机使用 DHCP 取得 IP ,很奇怪的,当我修改过 /etc/resolv.conf 之后,隔不多久这个档案又会恢复成原本的样子,这是什么原因? 该如何处理?答:因为使用 DHCP 时,系统会主动的使用 DHCP 服务器传来的数据进行系统配置文件的修订。因此,你必须告知系统,不要使用 DHCP 传来的服务器设定值。 此时,你得要在 /etc/sysconfig/network-scripts/ifcfg-eth0 等相关档案内,增加一行:『PEERDNS=no』,然后重新启动网络即可。

    此外,如果你有启动 CentOS 6.x 的 NetworkManager 服务,有时候也可能会产生一些奇特的现象哩!所以鸟哥是建议关掉它的!^_^


    19.2.2 DNS 的正、反解查询指令: host, nslookup, dig

    测试 DNS 的程序有很多,我们先来使用最简单的 host 吧!然后还有 nslookup 及 dig 哩!

    • host
      1. [root@www ~]# host [-a] FQDN [server]
        [root@www ~]# host -l domain [server]
        选项与参数:
        -a :代表列出该主机所有的相关信息,包括 IPTTL 与除错讯息等等
        -l :若后面接的那个 domain 设定允许 allow-transfer 时,则列出该 domain
        所管理的所有主机名对应数据!
        server:这个参数可有可无,当想要利用非 /etc/resolv.conf 内的 DNS 主机
          来查询主机名与 IP 的对应时,就可以利用这个参数了!

    1. 使用默认值来查出 linux.vbird.org 的 IP

    [root@www ~]# host linux.vbird.org
    linux.vbird.org has address 140.116.44.180 <==这是 IP
    linux.vbird.org mail is handled by 10 linux.vbird.org. <==这是 MX (后续章节说明)

    2. 查出 linux.vbird.org 的所有重要参数

    [root@www ~]# host -a linux.vbird.org
    Trying "linux.vbird.org"
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56213
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;linux.vbird.org. IN ANY

    ;; ANSWER SECTION:
    linux.vbird.org. 145 IN A 140.116.44.180

    ;; AUTHORITY SECTION:
    vbird.org. 145 IN NS dns.vbird.org.
    vbird.org. 145 IN NS dns2.vbird.org.

    Received 86 bytes from 168.95.1.1#53 in 15 ms <==果然是从 168.95.1.1 取得的资料

    看样子,不就是 dig 的输出结果?所以,我们才会说,使用 dig 才是王道!

    3. 强制以 139.175.10.20 这部 DNS 主机来查询

    [root@www ~]# host linux.vbird.org 139.175.10.20
    Using domain server:
    Name: 139.175.10.20
    Address: 139.175.10.20#53
    Aliases:

    linux.vbird.org has address 140.116.44.180
    linux.vbird.org mail is handled by 10 linux.vbird.org.

    看到最后一个范例,有注意到上面输出的特殊字体部分吗?很多朋友在测试自己的 DNS 时,常常会『指定到错误的 DNS 查询主机』了~因为他们的 /etc/reslov.conf 忘记改,所以老是找不到自己设定的数据库 IP 数据。所以你要仔细看啊!

    1. # 4\. 找出 vbird.org 领域的所有主机对应
    2. [root@www ~]# host -l vbird.org
    3. ; Transfer failed.
    4. Host vbird.org not found: 9(NOTAUTH)
    5. ; Transfer failed. <==竟然失败了!请看底下的说明!

    怎么会无法响应呢?这样的响应是因为管理 vbird.org 领域的 DNS 并不许我们的领域查询,毕竟我们不是 vbird.org 的系统管理员,当然没有权限可以读取整个 vbird.org 的领域设定啰!这个『 host -l 』是用在自己的 DNS 服务器上,本章稍后谈到服务器设定后,使用这个选项就能够读取相关的数据了。

    • nslookup
      1. [root@www ~]# nslookup [FQDN] [server]
        [root@www ~]# nslookup
        选项与参数:
        1. 可以直接在 nslookup 加上待查询的主机名或者是 IP ,[server] 可有可无;
        2. 如果在 nslookup 后面没有加上任何主机名或 IP ,那将进入 nslookup 的查询功能
        nslookup 的查询功能当中,可以输入其他参数来进行特殊查询,例如:
        set type=any :列出所有的信息『正解方面配置文件』
        set type=mx :列出与 mx 相关的信息!

    1. 直接搜寻 mail.ksu.edu.tw 的 IP 信息

    [root@www ~]# nslookup mail.ksu.edu.tw
    Server: 168.95.1.1
    Address: 168.95.1.1#53 <==还是请特别注意 DNS 的 IP 是否正确!

    Non-authoritative answer:
    Name: mail.ksu.edu.tw
    Address: 120.114.100.20 <==回报 IP 给你啰!

    nslookup 可单纯的将 hostname 与 IP 对应列出而已,不过,还是会将查询的 DNS 主机的 IP 列出来的! 如果想要知道更多详细的参数,那可以直接进入 nslookup 这个软件的操作画面中,如下范例:

    1. [root@www ~]# nslookup <==进入 nslookup 查询画面
    2. > 120.114.100.20 <==执行反解的查询
    3. > www.ksu.edu.tw <==执行正解的查询
    4. # 上面这两个仅列出正反解的信息,没有啥了不起的地方啦!
    5. > set type=any <==变更查询,不是仅有 A,全部信息都列出来
    6. > www.ksu.edu.tw
    7. Server: 168.95.1.1
    8. Address: 168.95.1.1#53
    9. Non-authoritative answer:
    10. Name: www.ksu.edu.tw
    11. Address: 120.114.100.101 <==这是答案
    12. Authoritative answers can be found from: <==这是相关授权 DNS 说明
    13. ksu.edu.tw nameserver = dns2.ksu.edu.tw.
    14. ksu.edu.tw nameserver = dns1.ksu.edu.tw.
    15. dns1.ksu.edu.tw internet address = 120.114.50.1
    16. dns2.ksu.edu.tw internet address = 120.114.150.1
    17. > exit <==离开吧!皮卡丘

    在上面的案例当中,请注意,如果你在 nslookup 的查询画面当中,输入 set type=any 或其他参数, 那么就无法再进行反解的查询了!这是因为 any 或者是 mx 等等的标志都是记录在正解 zone 当中的缘故!

    • dig (未来的主流,请爱用他!)
      1. [root@www ~]# dig [options] FQDN [@server]
        选项与参数:
        @server :如果不以 /etc/resolv.conf 的设定来作为 DNS 查询,可在此填入其他的 IP
        options:相关的参数很多,主要有 +trace, -t type 以及 -x 三者最常用
        +trace :就是从 . 开始追踪,在 19.1.2 里面谈过了!回头瞧瞧去!
        -t type:查询的数据主要有 mx, ns, soa 等类型,相关类型 19.4 来介绍
        -x :查询反解信息,非常重要的项目!

    1. 使用默认值查询 linux.vbird.org 吧!

    [root@www ~]# dig linux.vbird.org
    ; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> linux.vbird.org
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37415
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

    ;; QUESTION SECTION: <==提出的问题的部分
    ;linux.vbird.org. IN A

    ;; ANSWER SECTION: <==主要的回答阶段
    linux.vbird.org. 600 IN A 140.116.44.180

    ;; AUTHORITY SECTION: <==其他与此次回答有关的部分
    vbird.org. 600 IN NS dns.vbird.org.
    vbird.org. 600 IN NS dns2.vbird.org.

    ;; Query time: 9 msec
    ;; SERVER: 168.95.1.1#53(168.95.1.1)
    ;; WHEN: Thu Aug 4 14:12:26 2011
    ;; MSG SIZE rcvd: 86

    在这个范例当中,我们可以看到整个显示出的讯息包括有几个部分:

    • QUESTION(问题):显示所要查询的内容,因为我们是查询 linux.vbird.org 的 IP,所以这里显示 A (Address);
    • ANSWER(回答):依据刚刚的 QUESTION 去查询所得到的结果,答案就是回答 IP 啊!
    • AUTHORITY(验证):由这里我们可以知道 linux.vbird.org 是由哪部 DNS 服务器所提供的答案! 结果是 dns.vbird.org 及 dns2.vbird.org 这两部主机管理的。另外,那个 600 是啥咚咚?图 19.1-4 提到过的流程,就是允许查询者能够保留这笔记录多久的意思 (快取),在 linux.vbird.org 的设定中,预设可以保留 600 秒。
      1. # 2. 查询 linux.vbird.org 的 SOA 相关信息吧!
        [root@www ~]# dig -t soa linux.vbird.org
        ; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> -t soa linux.vbird.org
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57511
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;linux.vbird.org. IN SOA

    ;; AUTHORITY SECTION:
    vbird.org. 600 IN SOA dns.vbird.org. root.dns.vbird.org.
    2007091402 28800 7200 720000 86400

    ;; Query time: 17 msec
    ;; SERVER: 168.95.1.1#53(168.95.1.1)
    ;; WHEN: Thu Aug 4 14:15:57 2011
    ;; MSG SIZE rcvd: 78

    由于 dig 的输出信息实在是太丰富了,又分成多个部分去进行回报,因此很适合作为 DNS 追踪回报的一个指令呢! 你可以透过这个指令来了解一下你所设定的 DNS 数据库是否正确,并进行除错喔! ^_^!此外,你也可以透过『 -t type 』 的功能去查询其他服务器的设定值,可以方便你进行设定 DNS 服务器时的参考喔!正解查询完毕,接下来玩一玩反解吧!

    1. # 3\. 查询 120.114.100.20 的反解信息结果
    2. [root@www ~]# dig -x 120.114.100.20
    3. ; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> -x 120.114.100.20
    4. ;; global options: +cmd
    5. ;; Got answer:
    6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60337
    7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 3, ADDITIONAL: 3
    8. ;; QUESTION SECTION:
    9. ;20.100.114.120.in-addr.arpa. IN PTR
    10. ;; ANSWER SECTION:
    11. 20.100.114.120.in-addr.arpa. 3600 IN PTR mail-out-r2.ksu.edu.tw.
    12. 20.100.114.120.in-addr.arpa. 3600 IN PTR mail-smtp-proxy.ksu.edu.tw.
    13. 20.100.114.120.in-addr.arpa. 3600 IN PTR mail.ksu.edu.tw.
    14. ;; AUTHORITY SECTION:
    15. 100.114.120.in-addr.arpa. 3600 IN NS dns1.ksu.edu.tw.
    16. 100.114.120.in-addr.arpa. 3600 IN NS dns3.twaren.net.
    17. 100.114.120.in-addr.arpa. 3600 IN NS dns2.ksu.edu.tw.
    18. ;; ADDITIONAL SECTION:
    19. dns1.ksu.edu.tw. 3036 IN A 120.114.50.1
    20. dns2.ksu.edu.tw. 2658 IN A 120.114.150.1
    21. dns3.twaren.net. 449 IN A 211.79.61.47
    22. ;; Query time: 29 msec
    23. ;; SERVER: 168.95.1.1#53(168.95.1.1)
    24. ;; WHEN: Thu Aug 4 14:17:58 2011
    25. ;; MSG SIZE rcvd: 245

    反解相当有趣!从上面的输出结果来看,反解的查询目标竟然从 120.114.100.20 变成了 20.100.114.120.in-addr.arpa. 这个模样~这是啥鬼东西?不要怕,这等我们讲到反解时再跟大家进一步解释。 你现在要知道的是,反解的查询领域名,跟正解不太一样即可,尤其是那个怪异的 in-addr.arpa. 结尾的数据,可以先记下来。


    19.2.3 查询领域管理者相关信息: whois

    上个小节谈到的是主机名的正反解查询指令,那如果你想要知道整个领域的设定,使用的是『 host -l 领域名 』去查, 那如果你想要知道的是『这个领域是谁管的』的信息呢?那就得要使用 whois 这个指令才行喔!在 CentOS 6.x 当中, whois 是由 jwhois 这个软件提供的,因此,如果找不到 whois 时,请用 yum 去安装这个软件吧!

    • whois
      1. [root@www ~]# whois [domainname] <==注意啊!是 domain 而不是 hostname
      2. [root@www ~]# whois centos.org
      3. [Querying whois.publicinterestregistry.net]
      4. [whois.publicinterestregistry.net]
      5. # 这中间是一堆 whois 服务器提供的讯息告知!底下是实际注册的数据
      6. Domain ID:D103409469-LROR
      7. Domain Name:CENTOS.ORG
      8. Created On:04-Dec-2003 12:28:30 UTC
      9. Last Updated On:05-Dec-2010 01:23:25 UTC
      10. Expiration Date:04-Dec-2011 12:28:30 UTC <==记载了建立与与失效的日期
      11. Sponsoring Registrar:Key-Systems GmbH (R51-LROR)
      12. Status:CLIENT TRANSFER PROHIBITED
      13. Registrant ID:P-8686062
      14. Registrant Name:CentOS Domain Administrator
      15. Registrant Organization:The CentOS Project
      16. Registrant Street1:Mechelsesteenweg 170
      17. # 底下则是一堆联络方式,鸟哥将它取消了,免得多占篇幅~

    whois 这个指令可以查询到当初注册这个 domain 的用户的相关信息。不过,由于近年来很多网络信息安全的问题,这个 whois 所提供的信息真的是太详细了,为了保护使用者的隐私权,所以,目前这个 whois 所查询到的信息已经不见得是完全正确的了~而且,在显示出 whois 的信息之前,还会有一段宣告事项的告知呢~ ^_^y

    如果使用 whois 来检查鸟哥所注册的合法 domain 会是如何呢?看看:

    1. [root@www ~]# whois vbird.idv.tw
    2. [Querying whois.twnic.net]
    3. [whois.twnic.net] <==这个 whois 服务器查到的数据
    4. Domain Name: vbird.idv.tw <==这个 domain 的信息
    5. Contact: <==联络者的联络方式
    6. Der-Min Tsai
    7. vbird@pc510.ev.ncku.edu.tw
    8. Record expires on 2018-09-17 (YYYY-MM-DD)
    9. Record created on 2002-09-13 (YYYY-MM-DD)
    10. Registration Service Provider: HINET

    呵呵!这个 domain 会在 2018/09/17 失效的意思啦!报告完毕!无论如何,我们都可以透过 nslookup, host, dig 等等的指令来查询主机名与 IP 的对应,这些指令的用法可以请你以 man command 来查询更多的用法喔!


    原文: https://wizardforcel.gitbooks.io/vbird-linux-server-3e/content/139.html