澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:DNS配置详解,DNS服务器配

2019-07-06 作者:服务器运维   |   浏览(199)

Linux DNS 服务器安装、配置和维护,linuxdns

每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相对直观有意义的主机名就行了。这就是 DNS 协议所要完成的功能。

今天我们将讨论DNS服务器,特别是Linux DNS服务器,及其如何安装、配置和维护它。

Linux入门基础:DNS基础及域名系统架构

DNS域名系统 ,是一种协议, 工作在应用层
监听 的端口:TCP 53 :辅助域名服务器往主域名服务器传输信息时,用TCP53 ,主从服务器通信
UDP 53

Linux DNS原理简介及配置

DNS简介
在Linux中,域名服务(DNS)是由柏克莱网间名域(Berkeley Internet Name Domain——BIND)软件实现的。BIND是一个客户/服务系统,它的客户方面称为转换程序(resolver),它产生域名信息的查询,将这类信 息发送给服务器,DNS软件回答转换程序的查询。BIND的服务方面是一个称为named(读作“name”“d”)的守护进程。

/etc/hosts文件

在没有DNS服务器的情况下,每个系统在本地网络上保留其主机名和相应IP地址列表的副本是合理的——特别是在没有互联网连接的小型站点上。

在Linux系统中,这个列表就是/etc/hosts文件。 即使你没有DNS服务器或DNS服务器不可用,该文件也可以使用/etc/hosts文件将IP地址转换为名称。

也许你已经有DNS服务器了,但你也会因为其它原因而想保留这个文件。例如,系统可能需要在向外部查询之前在本地查找DNS服务器的IP地址;这意味着系统在查询DNS服务器之前先检索该文件,如果查找到对应的域则无须查询任何DNS服务器直接将其转换为IP地址。

试试编辑下/etc/hosts文件,并添加以下信息:127.0.0.1 google.com.

然后,返回你的浏览器,输入google.com,看看结果如何。如果你的系统上安装了Apache并且本地主机正在运行,浏览器会显示localhost的索引页,而不是Google页面。

作为确认,你可以将google.com映射到任何网站的任何其他IP地址并查看结果。

因此这个文件所做的是将IP地址转换成名字,但这仅仅是在同一互相连接的网络下。 那么外部网络和众多系统的所有记录是如何维护的呢?

每个人都需要维护自己的/etc/hosts文件并自己更新吗?

更为稳健的域名服务是DNS服务器。

 

DNS的作用:提供域名和IP地址之间的一种相互转换的机制,母的是为了方便人们的记忆和管理

  1. DNS简介

  2. DNS原理

  3. 域名解析的过程

  4. 资源记录

  5. DNS BIND安装配置

 

域名

当你访问网站时,你可以输入FQDN(Fully Qualified Domain Name,完全限定域名)或类似likegeeks.com或www.google.com的域名。在域名中从右到左的两个点之间的每个文本依次是顶级域组件、二级域组件和三级域组件。

所以,com是顶级域名组件; google是二级域组件; 而www是三级域名组件。

实际上,当你访问任何网站时,浏览器会默认在域的末尾添加一个不可见的点,因此该域将像www.google.com.一样。 该点被称为根域。

该点是由一大堆称为根域名服务器的特殊服务器管理的。截止这篇文章发表前,世界上有13个根域名服务器。 你可以把他们当成互联网的大脑 – 如果他们失效了,世界上就没有互联网了。

为什么是13呢? 因为如果世界的某处地震可能会破坏一个根服务器,所以其他的服务器可以继续提供服务直到受影响的服务器重新上线。

这些根名称服务器按字母顺序命名,名称如a.root-server.net、b.root-server.net等。

域名

早期的DNS是通过ftp共享的/hosts文件实现的

一、简介

一般来讲域名比IP地址更加的有含义、也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了。

域名:www.baidu.com(也叫做FQDN:Full Qualified Domain Name, 完全限定域名,同时带有主机名和域名的名称)

 

通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。

TLD(top level domain)

组织域:.com, .org, .net, .cc

国家域: .cn, .tw, .hk, .iq, .ir, .jp

反向域: IP-->FQDN 将IP地址转换成主机名,早期只能正向解析,后来引入了一个机制。指针;但是从IP转换成FQDN是另外一套数据库。

 

DNS服务协议采用类似目录树的层次结构记录域名与IP地址的映射对应关系,形成一个分布式的数据库系统,上级仅知道其直接下级,下级只知道根的位置。结构模型:

澳门新萄京官方网站 1

 

    DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析反向解析

正向解析:根据主机名(域名)查找对应的IP地址。

反向解析:根据IP地址查找对应的主机名(域名)。

 

我们将讨论三种基本BIND配置任务:

顶级域名 (或称作一级域名 TLDs)

我们已经见过顶级域名的组成部分,如 com。可以认为,顶级域名为 DNS 命名空间提供分类组织。

顶级域名(TLD)根据地理或功能方面分为几类。

截止本文撰写时,网上有 800 多个顶级域名。

顶级域名类别有:

  • 通用的顶级域名如:org, .com, .net, .gov, .edu 等等

  • 国家代码顶级域名如:.us, .ca 等,分别对应美国和加拿大的国家代码

  • 新的品牌顶级域名,允许组织创建最多 64 个字符的TLD,如:.linux, .microsoft, .companyname 等

  • 基础架构顶级域名如: .arpa

 

/etc/hosts 实现检索

二、原理

Linux下nsswitch(network service switch)是一个通用框架,与各种类型存储交互的公共实现,实现名称解析服务。其中有库文件,libnss_files.so库文件就是实现查找文件时, 其应该调用的文件。其展现的就是一个配置文件,/etc/nssitch.conf,此配置文件中

澳门新萄京官方网站 2

这个files就是通过libnss_files来查找/etc/hosts

 

hosts可通过两种方式来查找:     files    dns

file: /etc/hosts配置文件

dns: DNS服务器

系统中stub resolver:名称解析器,根据配置文件来查找对应的ip地址。

 

ping www.itodo.com此过程就是先查找本地/etc/hosts文件,如果没有再查找dns服务器。

 

hosts格式:

    IPADDR FQDN    Ailases

    192.168.100.1    www.ss.com     www

 

配置BIND转换程序。

子域名

当你访问一个类似 mail.google.com 这样的网站, 这里的mail 就是 google.com的子域名.

只有mail.google.com 的名称服务器知道他下面存在的所有主机,所以Google会回复是否有一个叫mail 的子域名。根名称服务器对此并不知情。

-

IP地址往往难以记忆,所以我们一般使用域名进行管理

DNS的设计理念是层次性和分布式,就像我们的国家管理一样,在DNS中DNS是一个倒桩的树结构,1.根域 ,全球只有13台根节点服务器,2.一级域名(.com,.org组织域和国家域,反向域是比较常用的。3.二级域,是为某个组织所拥有的4.子域,最高可以划分63个层级结构。
下级域是要被上级域授权的,而且上级域可以管理下级域和访问下级域,但是下级域不知道上级域。
DNS解析的过程由两种,递归和迭代。递归就是DNS客户机只需向DNS服务器发出一次请求,DNS服务器通过向根域请求,根域向下级域查询,把需求的结果返回给DNS服务器。迭代是DNS服务器向根域请求,根域返回的结果是参考答案,也就告诉它,哪个下级域知道,让DNS服务器自己向那个域查询。
解析顺序;1是否为本机 2 是否有DnS缓存 3 查找hosts文件  4. 查找DNS服务器

三、域名解析的过程

    当应用过程需要将一个主机域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回。

    澳门新萄京官方网站 3

dns查询:

    递归查询:主机向本地域名服务器的查询一般都是采用递归查询,只发出一次请求。

    迭代查询:本地域名服务器向根域名服务器的查询的迭代查询,发出多次请求。

 

 

澳门新萄京官方网站 4

以上简单理解来说,主机1访问主机2的域名a.zz.com,首先向本机域名服务器发起请求主机2的ip,本机没有,向根域名服务器查询,根返回消息说顶级域名服务器那里知道,本机又向顶级域名服务器查询,顶级域名服务器又返回消息说二级域名服务器那里有答案,本机又向二级域名查询,最后经过本机域名服务器的缓存之后,返回主机2的域名对应的ip地址。

 

配置BIND域名服务。

DNS服务器的类型

一共有三种DNS服务器。

 

区域类型;
   hint      根提示
   master  主域名服务器
   slave     从域名服务器
   forward  转发域
记录类型:
子域要想让别人知道要让上级有你的记录
SOA记录  起始授权记录(标识主域名服务器)
NS记录  声明本域的域名服务器
A记录  主机名转换成IP地址(正向解析)
PIR  IP地址转换为主机名(反向解析)
MX记录  标识邮件服务器  针对一个域中的那一台是            mail服务器 必须具有反解  可以有多条  是具有优先级的,0-99,越大越高
CNAME   别名

四、资源记录

数据库中的每一个条目称作一个资源记录(Resource Record,RR)

资源记录的格式:

 

$TTL 600;

 

NAME            [TTL]            IN            RRT            VALUE

www.ss.com                        IN            A            1.1.1.1

 

1.1.1.1                        IN            PTR            www.ss.com

资源记录类型(RRT):

SOA(start of authority)

    ZONE_NAME    TTL        IN    SOA        FQDN        ADMINISTRATOR_MAILBOX(

                            serial number 版本号

                            refresh    刷新时间

                            retry    重试时间

                            expire    过期时间

                            na ttl )    否定答案的ttl

时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒

邮箱格式:admin@ss.com -写为-> admin.ss.com

@:也就是ZONE_NAME

NS(Name Server): ZONE_NAME --> FQDN

    magedu.com.        600        IN        NS        ns1.magedu.com.

    ns1.magedu.com.    600        IN        A        1.1.1.2

    

MX(Mail eXchanger): ZONE_NAME --> FQDN

    ZONE NAME    TTL        IN        MX pri        VALUE

    优先级:0-99,数字越小级别越高

        magedu.com.    600        IN        MX    10    mail.magedu.com.

        mail.magedu.com.    600        IN    A    1.1.1.3

 

A(address):    FQDN-->IPv4    

AAAA:FQDN-->IPv6

PTR(pointer):IP-->FQDN

CNAME(Canonical NAME): FQDN-->FQDN

    www2.magedu.com.        IN        CNAME        www.magedu.com.

TXT:文本字符串

 

DNS区域:

正向区域文件

    magedu.com.        IN        SOA    

 

www.maged.com.   IN    A    192.168.0.1

简写为:

www          IN    A    192.168.0.1

 

反向区域文件

0.168.192.in-addr.arpa.       IN    SOA    

 

1.0.168.192.in-addr.arpa.      IN    PTR        www.magedu.com.

简写为:

1       IN       PTR       www.magedu.com.

 

区域传送

    区域传送的类型:

    完全区域传送: axfr

    增量区域传送:ixfr

    

区域类型:

    主区域:master

    从区域:slave

    提示区域:hint

    转发区域:forward

    

建立服务器数据库文件,称为“区文件(zone file)。

主DNS服务器

这些服务器上存放了特定域名的配置文件,并且基于此权威地规定了特定域名的地址。主DNS服务器知道全部在它管辖范围的主机和子域名的地址。

www.google.com

SOA记录只能有一个并且必须放在最前面
全局TTL配置项及SOA记录
$TTL(Time To Live,生存时间)记录
SOA(Start Of Authority,起始授权记录)记录
分号“;”开始的部分表示注释信息

五、DNS BIND安装配置

DNS所用的最常用软件为BIND

bind:

    澳门新萄京官方网站 5

    /etc/named.conf

        BIND进程的工作属性

        区域的定义

    /etc/rndc.key

        rndc: Remote Name Domain Controller

        密钥文件

        配置信息:/etc/rndc.conf    

    /var/named/

        区域数据文件

 

bind-chroot:为了提高系统安全新,把系统中的一个子目录作为bind运行时的目录。

    默认:named

        用户:named

        组:named        

    /var/named/chroot/

        etc/named.conf

        etc/rdnc.key

        sbin/named

        var/named/

 

安装配置:

1.安装bind,查看是否安装成功

 yum -y install bind bind-utils bind-chroot

 rpm –qa | grep "^bind"

2.修改/etc/named.conf

 listen-on port 53 { any; };

3.修改/etc/named.rfc1912.zones

澳门新萄京官方网站 6

4.添加所需要的zone文件

 在/var/named目录下添加正向解析文件named.yan和反向解析文件named.222

澳门新萄京官方网站 7

澳门新萄京官方网站 8

 

5.检查语法

 named-checkconf

 named-checkzone "区域名" 区域文件路径

澳门新萄京官方网站 9

 

 

6.修改/etc/resolv,并启动服务。

澳门新萄京官方网站 10

systemctl start named

 

 

7.nslookup测试,或者使用dig命令。

 正向解析测试:

澳门新萄京官方网站 11

 反向解析测试:

澳门新萄京官方网站 12

 

至此简单的配置完毕。

前面我们介绍过,术语“区(zone)”往往可以与单词“域(domain)”互换使用,但这里却有一些区别,“区”是指域数据库文件,而“域”则 比较通用。在本书中,域是用域名定义的域结构中的一部分,而区则是域数据库文件中包含域信息的集合,包含域信息的文件称为“区文件”。

 

例子:
$TTL   86400  ; 有效地址解析记录的默认缓存时间
@  IN  SOA  6688.cc.(该DNS区域的地址)  admin.6688.cc.  (    (该DNS区域管路员的邮箱地址)
        2009021901 serial  更新序列号用于标记地址数据库的变化,可以是10位以内的整数
        3H refresh time  刷新时间从服务器到主服务器查看是否更新间隔时间
        15M   retry time  重试延时从域名服务器更新地址数据库失败以后,等待多长时间再次尝试

DNS的作用是把IP地址转化为代表主机、网络和邮件别名的助记名。它把整个Internet IP地址和名字空间分解为不同的逻辑组来做这项工作。每个组对它所拥有的计算机和其他信息具有控制权。

辅助DNS服务器

这些服务器作为主DNS服务器的备份,也承担一定负载。主服务器知道辅助DNS服务器的存在,并且会向他们推送更新。

域名分为三个部分,用“.”(点)分割。严格的域名最后还有一个".",但一般省略不写。

         1W(1周)expire time    失效时间  联系主服务器当联系了7天还是联系不到时,辅服务器则殉情!在这7天中辅服务器形式主服务器的职责,从新选取主辅服务器

DNS服务器的类型
BIND可以配置成以几种不同的方法运行的DNS,常见的BIND配置是唯转换程序系统、唯高速缓存系统、主服务器和辅助服务器。

     -类型     标识此域名的类型(com/net/org/edu/gov等)

         1D  negative answer ttl   否定答案的缓存时间  设置无效地址解析记录(该数据库中不存在的地址)的默认缓存时间

转换程序是一段要求域名服务器提供域信息的程序,在Linux系统中,它是作为一个库程序来实现的,不是一个单独的客户程序。在唯转换程序系统中, 仅使用转换程序,并不运行域名服务器。这种系统是很容易配置的,最多只需要设置/etc/resolv.conf文件。其它三个BIND配置选项都是用于 named服务软件的。

缓存DNS服务器

这些服务器上不存放特定域名的配置文件。当客户端请求缓存服务器来解析域名时,该服务器将首先检查其本地缓存。如果找不到匹配项便会询问主服务器。接着这条响应将被缓存起来。您也可以轻松地将自己的系统用作缓存服务器。

     -域名     域名称

缓存域名服务器
也称为高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度

唯高速缓存服务器 唯高速缓存服务器(caching-only server)可运行域名服务器软件但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的回答,一旦取得一个答案,就将它放在高速缓存 中,以后查询相同的信息时就用它予以回答。所有的域名服务器都按这种方式使用高速缓存中的信息,但唯高速缓存服务器则依赖于这一技术提供所有的域名服务器 信息。唯高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。

搭建 Linux DNS 服务器

Linux 下有很多实现了 DNS 功能的包,不过我们只关注 BIND DNS 服务器。它用于世界上大多数 DNS 服务器。

如果你在使用基于 Red Hat 发行版的 Linux,比如 CentOS,可以像这样安装:$ dnf -y install bind

如果你使用基于 Debian 的操作系统,比如 Ubuntu:$ apt-get install bind9

安装完成之后就可以启动它并让它在计算机启动的时候一并启动起来。

$  class="crayon-i">systemctl  class="crayon-i">start named

$  class="crayon-i">systemctl  class="crayon-i">enable named

     -主机名  该域中的某台主机名称

主域名服务器
特定DNS区域的官方服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录

对于唯高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。接着才是唯转换程序配置,它是最容易配置的。

配置 BIND

这个服务使用 /etc/named.conf 作为配置文件。

BIND 在那个文件中使用像下面这样的一些语句:

  • options: 用于全局 BIND 配置。

  • logging: 配置哪些需要记录,哪些需要忽略。我推荐你看看 Linux syslog server。

  • zone: 定义 DNS 区域。

  • include: 在 named.conf 中包含另一个文件。

在 options 语句中可以看到 BIND 的工作目录在 /var/named。

zone 语句可用于定义 DNS 区域,比如域名 google.com,它包含子域名 mail.google.com 和 analytics.google.com。

上述三个域名(主域名和子域名) 都有一个由 zone 语句定义的区域。

 

从域名服务器
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器

主服务器 主服务器(primary name server)是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构 的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对它域的任何查询。

定义一个主域服务器

我们知道 DNS 服务器类型有主域名服务器、辅助域名服务器和缓存域名服务器。不同于缓存域名服务器,主域名服务器和辅助域名服务器在应答过程中是处于同等地位的。

在 /etc/named.conf 的配置文件中,你可以使用如下语法定义一个主域服务器:

zone     class="crayon-s">"likegeeks.com"  class="crayon-sy">{

type  class="crayon-v">master;

file  class="crayon-v">likegeeks. class="crayon-v">com. class="crayon-i">db

};

包含主要区域信息的文件存放在 /var/named 目录下,从 options 可知,这是一个工作目录。

注意:软件服务器或者托管面板会根据你的域名自动为你创建主域服务器信息的文件名,因此如果你的域名是 example.org,那么你主域服务器信息的文件就为 /var/named/example.org.db。

类型为 master,也就是说这是一个主域服务器。

 

 

配置主服务器需要一整套配置文件,包括正规域的区文件(named.hosts)和反向域的区文件(named.rev)、引导文件(named.conf)、高速缓存(named.ca)和回送文件(named.local),其它的配置都不需要这样一整套文件。

定义一个辅助域服务器

同定义一个主域服务器一样,辅助域服务器的定义稍微有些变化:

zone     class="crayon-s">"likegeeks.com"  class="crayon-sy">{

type  class="crayon-v">slave;

masters  class="crayon-i">IP Address  class="crayon-v">list;  class="crayon-sy">;

file  class="crayon-v">likegeeks. class="crayon-v">com. class="crayon-i">db

};

对于辅助域服务器来说,它的域名和主域服务器是一样的。上述语法里的的slave类型表示这是一个辅助域服务器,“masters IP Address list”表示辅助域服务器中区域文件内的信息都是通过主域服务器中区域文件内的信息复制过来的。

www: 主机名

区域传送:主服务器和辅服务器同步
完全区域传送: axfr   刚开始要完全传送
增量区域传送:  ixfr   完全以后的同步

辅助域名服务器 辅助域名服务器(secondary name server)可从主服务器中转移一整套域信息。区文件是从主服务器中转移出来的,并作为本地磁盘文件存储在辅助服务器中。这种转移称为“区文件转移”。 在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询,因此,辅助域名服务器也称作权威性服务器。

定义一个缓存服务器

即使你已经配置了主域或者辅助域服务器,你仍有必要(不是必须)定义一个缓存服务器,因为这样你可以减少DNS服务器的查询次数。

在定义缓存服务器之前,你需要先定义三个区域选择器,第一个:

zone       class="crayon-s">"." IN  class="crayon-sy">{

type  class="crayon-v">hint;

file  class="crayon-s">"root.hint";

};

zone       class="crayon-s">"." IN  class="crayon-sy">{

type  class="crayon-v">hint;

file  class="crayon-s">"root.hint";

};

zone       class="crayon-s">"." IN  class="crayon-sy">{

type  class="crayon-v">hint;

file  class="crayon-s">"root.hint";

};

zone       class="crayon-s">"localhost"  class="crayon-st">IN {

type  class="crayon-v">master;

file  class="crayon-s">"localhost.db";

};

定义第三个区域是为了反向查找到本地主机。这种反向查找是把本地的IP地址执向本地主机。

zone       class="crayon-s">"0.0.127.in-addr.arpa"  class="crayon-st">IN {

type  class="crayon-v">master;

file  class="crayon-s">"127.0.0.rev";

};

把这三个区域信息放到/etc/named.conf文件里,你的系统就可以以缓存服务器来工作了。但是如何引用类似likegeeks.com.db, localhost.db, 和 127.0.0.rev这些文件中的内容呢?

这些文件包含具有某些选项的每个区域的DNS记录类型。 那么,这些DNS记录类型是什么以及它们是如何写的?

DNS记录类型

数据库文件包含诸如SOA、NS、A、PTR、MX、CNAME和TXT在内的记录类型。

我们看看每一种类型都是如何记录的吧。

SOA:起始授权机构记录

SOA记录按如下形式开始描述一个站点的DNS条目:

example class="crayon-sy">.com class="crayon-sy">.       class="crayon-cn">86400       class="crayon-st">IN       class="crayon-i">SOA       class="crayon-v">ns1. class="crayon-v">example. class="crayon-v">com.    class="crayon-v">mail. class="crayon-v">example. class="crayon-v">com.       class="crayon-sy">(

2017012604  class="crayon-sy">;serial

86400  class="crayon-sy">;refresh class="crayon-sy">, seconds

7200  class="crayon-sy">;retry class="crayon-sy">, seconds

3600000  class="crayon-sy">;expire class="crayon-sy">, seconds

86400  class="crayon-sy">;minimum class="crayon-sy">, seconds

)

第一行以域名example.com开始,以句号结束——该语句和/etc/named.conf文件中的区域定义是一致的。我们要始终记得,DNS配置文件是极其挑剔的。

IN 告诉域名服务器:这是一条网络记录。

SOA 告诉域名服务器:这是一条起始授权机构记录。

ns1.example.com. 是该文件所在域的域名服务器的完全合格域名(FQDN: Fully Qualified Domain Name)。

mail.host.com. 是域管理员的邮箱地址。你会发现这个邮箱地址没有“@”标志,而是被句号所取代,并且末尾还有一个句号。

第2行是一个序列码,它被用来告诉域名服务器文件是什么时候升级的。因此,如果你对区域码做了变更,你必须对这个序列码进行递增。这个序列码的格式是 YYYYMMDDxx ,其中的 xx 是从 00 开始的。

第3行是每秒刷新率。这个值被用来告诉第二个域名服务器查询主服务器中的记录是否已经被更新的频率。

第4行是每秒重试的频率。如果第二个服务器多次尝试连接主域名服务器来进行更新检测,但无法连接上的时候,第二个服务器就会在每秒内重试指定的数值次数。

第5行是超时指示。其目的是为了第二个服务器能将区域数据缓存下来。这个值告诉这些服务器如果它们不能连接到主服务器来进行更新,那么它们就会在这个指定数值秒数之后抛弃这个值。

第6行告诉缓存服务器,如果它们不能连接到主域名服务器时,它们应该在超时前等待多久。

google:域名

tcp 53 主从服务器的通信
主服务器做出改变的时候会主动的同步到辅服务器上

配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。然而其它的文件是确是需要的,包括引导文件、高速缓存文件和回送文件。

NS: Name Server Records(名称服务器记录)

NS记录用于指定哪个名称服务器维护该域的记录。

你可以这样编写的NS记录:

IN            class="crayon-i">NS          class="crayon-v">ns1. class="crayon-v">example. class="crayon-v">com.

IN            class="crayon-i">NS          class="crayon-v">ns2. class="crayon-v">example. class="crayon-v">com.

并不需要有2个NS记录,但是通常偏好有备份名称服务器。

com: 类型

 

一个域名服务器可以是这类配置中的任何一种,但经常是将多种配置类型的元素组合在一起。然而所有的系统都要运行转换程序。

A和AAAA: Address Records(地址记录)

A记录用于提供从主机名到IP地址的映射support IN A 192.168.1.5。

如果你在地址为192.168.1.5上的support.example.com上有一个主机,你可以像上面的例子那样输入。

请注意,我们所写的主机并没有句号。

 

域名解析记录
NS域名服务器(Name Server)记录
MX邮件交换(Mail Exchange)记录
A地址(Address)记录,只用在正向解析的区域数据文件中
CNAME别名(Canonical Name)记录

 
DNS常用术语
DNS是一个很复杂的概念,表1列出了常用的DNS术语。

PTR: Pointer Records(指针记录)

PTR记录用于执行反向名称解析,允许某人指定IP地址然后找出对应的主机名。

这与A记录的功能相反:192.168.1.5 IN PTR support.example.com.

在这里,我们键入具有点号的完整主机名。

 

例子:
@ IN    NS    ns1.6688.cc.
 IN    MX  10  mail.6688.cc.
ns1 IN    A     192.168.0.181
mail     IN    A     192.168.0.181
www     IN    A     192.168.0.181
ftp      IN    CNAME     www

表1 常用DNS术语

MX: Mail Exchange Records(邮件交换记录)

MX记录告诉其他站点关于你所在域的邮件服务器地址:example.com. IN MX 10 mail.

当然这个域以句号结束。数字10是邮件服务器的重要性标志,如果你拥有多个邮件服务器,其中较小的数字不太重要。

 

解析类型
域名-->IP   正向解析
 IP-->域名  反向解析
一个正向或一个反向解析文件组成一个区域

术语
说明

CNAME: Canonical Name Records(权威名称记录)

CNAME记录允许你为主机名创建别名。当你想提供一个易于记住的名称时,这很有用。

假设某个站点具有一个主机名为whatever-bignameis.example.com的Web服务器,并且由于系统是Web服务器,因此可以为主机创建一个名为www的CNAME记录或者别名。

你可以创建名为www.example.com的域名创建CNAME记录:

whatever class="crayon-o">- class="crayon-i">bignameis       class="crayon-st">IN            class="crayon-i">A                     class="crayon-cn">192.168.1.5

www                      class="crayon-st">IN            class="crayon-i">CNAME                 class="crayon-v">whatever- class="crayon-v">bignameis

第一行通知DNS服务器关于别名的位置。第二行创建一个指向www的别名。

-

DNS  

区域:物理概念
域:逻辑概念


代表网络一部分的逻辑实体或组织

TXT记录

您可以将任何信息存储到TXT记录中,例如你的联系方式或者你希望人们在查询DNS服务器时可获得的任意其他信息。

你可以这样保存TXT记录:example.com. IN TXT ” YOUR INFO GOES HERE”.

此外,RP记录被创建为对host联系信息的显式容器:example.com. IN RP mail.example.com. example.com。

 

域可以划分子域,正向解析,反向解析,
子域里也有正向解析和反向解析
每一个正向解析,反向解析都要具有一个解析库
每一个解析库对应一个区域

域名
主机名的一部分,它代表包含这个主机的域。它可以和域交换使用

DNS TTL值

在/etc/named.conf文件的顶部,这里有一个$TTL条目。

该条目告诉BIND每个单独记录的TTL值(time to live,生存时间值)。

它是以秒为单位的数值,比如14,400秒(4个小时),因此DNS服务器最多缓存你的域文件4个小时,之后就会向你的DNS服务器重新查询。

你可以降低这个值,但是默认值通常是合理的。除非你知道你正在做什么。

每个域名代表一IP,而DNS就是用来在IP与域名之间进行转换的服务

BIND简介
在Linux中,域名服务(DNS)是由柏克莱网间名域(  Berkeley Internet Name Domain——BIND)软件实现的。
BIND是一个客户/服务系统,它的客户方面称为转换程序(resolver),它产生域名信息的查询,将这类信息发送给服务器,DNS软件回答转换程序的查询。BIND的服务方面是一个称为named的守护进程。

主机
网络上的一台计算机

捕获配置错误

当您写入域文件时,也许您忘记了一个句号或空格或其他任意错误。

你可以从日志诊断Linux DNS服务器错误。BIND服务通过/var/log/messages上的错误,可以使用tail命令来查看实时错误日志,须使用-f选项:$ tail -f /var /log/messages。

因此,当你编写域文件或修改/etc/named.config并重新启动服务时,显示错误之后,你可以从日志中轻松识别错误类型。

 

BIND(Berkeley Internet Name Daemon)
伯克利Internet域名服务
官方站点:

节点
网络上的一台计算机

Host命令

在你成功添加或修改记录后,可以使用host命令查看主机是否正确解析。

host命令允许你将主机名解析为IP地址:$ host example.com。

此外,你可以执行反向查找:$ host 192.168.1.5。

你可以this在此篇文章中查看更多关于host和dig命令的信息。

www.google.com   <--->  74.125.128.105

相关软件包
bind-9.3.3-7.el5.i386.rpm

域名服务器
提供DNS服务的计算机,它将DNS名字转化为IP地址

Whois命令

whois命令用于确定域名的所有权及其拥有者的e-mail地址和联系电话:$ whois example.com.

 

caching-nameserver-9.3.3-7.el5.i386.rpm
为配置BIND作为缓存域名服务器提供必要的默认配置文件
可以在配置文件中稍作修改,让它做为主服务器用

解析
把一个DNS服务器转化为与其相映的IP地址的过程

Rndc命令

rndc工具可用于安全地管理名称服务器,因为与服务器的所有通信均通过数字签名进行身份验证。

此工具用于控制名称服务器和调试问题。 你可以通过以下方式检查Linux DNS服务器的状态:$ rndc status。

此外,如果你更改任何域(zone)文件,您可以重新加载服务,而无须重启命名服务:$ rndc reload example.com。

在这里,我们重新加载example.com域文件。 你可以重新加载所有域:$ rndc reload。

或者你可以添加新的域或更改服务的配置。 你可以重新加载配置,如下所示:

$ rndc reconfig。

 

BIND服务器端程序
主要执行程序:/usr/sbin/named
服务脚本:/etc/init.d/named
默认监听端口:53
主配置文件:
 /etc/named.conf
保存DNS解析记录的数据文件位于:
 /var/named/

解析器
从域名服务器中提取DNS信息的程序或库子程序

Linux DNS解析器

我们已经知道Linux DNS服务器的工作原理以及如何配置它。另一部分当然是与DNS服务器交互的(正在与DNS服务器通信以将主机名解析为IP地址的)客户端。

在Linux上,解析器位于DNS的客户端。要配置解析器,可以检查/etc/resolv.conf这个配置文件。

在基于Debian的发行版上,可以查看/etc/resolvconf/resolv.conf.d/目录。

/etc/resolv.conf文件中包含客户端用于获取其本地DNS服务器地址所需的信息。

第一个表示默认搜索域,第二个表示主机名称服务器(nameserver)的IP地址。

名称服务器行告诉解析器哪个名称服务器可使用。 只要你的BIND服务正在运行,你就可以使用自己的DNS服务器。

使用Linux DNS服务器非常简单。 我希望你发现这篇文章很有用,并且很容易理解。

英文:dzone,译者:开源中国   


————广告时间————

《马哥Linux云计算及架构师》课程,由知名Linux布道师马哥创立,经历了8年的发展,联合阿里巴巴、唯品会、大众点评、腾讯、陆金所等大型互联网一线公司的马哥课程团队的工程师进行深度定制开发,课程采用 Centos7.2系统教学,加入了大量实战案例,授课案例均来自于一线的技术案例。

**开课时间级地点:12月25日(28期郑州面授班)**

扫描二维码领取学习资料

更多Linux好文请点击【阅读原文】哦

↓↓↓

DNS(Domain Name System)服务由DNS服务器提供

装DNS
配置BIND服务器
编辑“/etc/named.conf”文件
在“/var/named/”目录下创建并编辑正向区域解析文件
在“/var/named/”目录下创建并编辑反向区域解析文件
编辑客户端文件“/etc/resolv.conf”文件

反向解析
将给出的IP地址转化为其相映的DNS名字

 

启动BIND服务器
配置客户端并进行测试

欺骗
使网络看上去好象具有不同的IP地址或域名的行为

 

确定需配置成DNS服务器的IP是静态分配,并且与客户端具有IP的连通性

在概念上可以把DNS分为三个部分:

澳门新萄京官方网站 13

智能解析:一个主机名对应两个ip地址叫负载均衡
www.linuxidc.com      www.linuxidc.net

域名空间 这是标识一组主机并提供他们的有关信息的树结构的详细说明。树上的每一个节点都有它控制下的主机的有关信息的数据库。查询命令试图从这个数据库中提取适当 的信息。简单地说,这只是所有不同类型信息的列表,这些信息是域名、IP地址、邮件别名和那些在DNS系统中能查到的内容。

 

CDN:把用户要访问的数据推送到用户的家门口

域名服务器 它们是保持并维护域名空间中的数据的程序。每个域名服务器含有一个域名空间子集的完整信息,并保存其它有关部分的信息。一个域名服务器拥有它控制范围的完 整信息。控制的信息按区进行划分,区可以分布在不同的域名服务器上,以便为每个区提供服务。每个域名服务器都知道每个负责其他区的域名服务器。如果来了一 个请求,它请求给定域名服务器负责的那个区的信息,那么这个域名服务器只是简单地返回信息。但是,如果请求是不同区的信息,那么这个域名服务器就要与控制 该区的相映服务器联系。

 

下面将告诉大家怎样手动做DNS
做主DNS服务器
1.rndc-confgen > /etc/rndc.conf
cat !$
把key "rndckey"{
          algorithm hmac-md5;
          secret "uAgAJYS FB3xvAWoVxctGQ==";
};
 controls {
        inet 127.0.0.1 port 953
             allow { 127.0.0.1; } keys { "rndckey"; };
};
复制到/etc/named.conf配置文件中
vim /etc/named.conf
编写options {
    directory "/var/named";
    querylog yes;启动日志
    version "hh";
};

解析器 解析器是简单的程序或子程序库,它从服务器中提取信息以响应对域名空间中主机的查询。

DNS客户端

zone "." IN {
      type hint;
      file "named.ca";
};

配置转换程序
使用DNS的第一步是在用户的计算机上配置转换程序,即让机器能够能够从DNS服务器中获取域名解析/反解析服务。转换程序不是一个单独而明确的处理进程,而是网络进程调用的一个标准C程序库。如果本地系统不运行named,就必须配置本地转换程序。

 

zone "localhost" IN {
      type master;
      file "localhost.zone";
};

转换程序控制文件/etc/host.conf
/etc/host.conf是用来控制本地转换程序的文件的设置。该文件告诉转换程序使用哪些服务、按照什么顺序进行。该文件的字段可以用空格或制表符分隔。字符“#”表示注释行。表2是可在host.conf中指定的选项。

我们日常使用的支持网络的计算机一般都是作为一个DNS客户端使用,应用程序、服务、进程等等通过操作系统底层的功能发起对dns服务器的查询,对特定域名进行解析

zone "0.0.127.in-addr.arpa" IN {
       type master;
       file "named.local";
};

 

Linux中一般使用系统底层提供的gethostbyname()功能进行域名解析

保存退出。
chmod o-r /etc/named.confd需要把它的权限改为其他用户没有任何权限
chgrp named /etc/named.conf 把属组改为named
cd /var/named/
编写区域文件named.ca localhost.zone named.local
dig -t NS . > /var/named/named.ca  获取所有的记录
编写localhost.zone区域文件
vim localhost.zone
$TTL 43200
@  IN SOA   localhost. root.localhost. (
                      2011112401
                       3H
                       15M
                       1W
                       1D)
         IN   NS   localhost.
localhost.  IN  A   127.0.0.1
cp localhost.zone named.local
修改named.local
vim named.local
$TTL 43200
@  IN SOA   localhost. root.localhost. (
                      2011112401
                       3H
                       15M
                       1W
                       1D)
         IN   NS   localhost.
1 IN PTR localhost.
chown :named localhost.zone  named.*
named-checkconf  检查主配置文件
named-checkzone  检查区域文件
named-checkzone "localhost" localhost.zone

表2 /etc/host.conf文件的配置选项

解析可以基于以下几种方式进行:

service named start启动服务
tail /var/log/messages,查看日志看是否有错误

选项
说明

            1) 文件(/etc/hosts、/etc/networks)

vim /etc/named.conf
编辑正向解析和反向解析
zone "6688.cc" IN {
      type master;
      file "6688.cc.zone";
};
zone "0.168.192.in-addr.arpa" IN {
       type master;
       file 192.168.0.local";
};
cd /var/named
vim 6688.cc.zone
$TTl 600
$ORIGIN 6688.cc.
@ IN  SOA nsl.6688.cc. admin.6688.cc.(
     2011112401
      1H
       10M
      7D
      1D)
    IN  NS  nsl
    IN  NS  ns2
    IN MX  10 mail
    IN  MX  20 mail2
ns1  IN A  192.168.0.181
ns2  IN A  192.168.0.182
mail IN A  192.168.0.181
mail2 IN A  192.168.0.182
www  IN A  192.168.0.181
ftp  IN A  192.168.0.181
www2 IN CNAME www

order
指定按照哪种顺序来尝试不同的名字解析机制。按列出的顺序来进行指定的解析服务。支持下面的名字解析机制:

 

cp 6688.cc.zone 192.168.0.local
vim 192.168.0.local 修改内容
$TTl 600
$ORIGIN 6688.cc.
@ IN  SOA nsl.6688.cc. admin.6688.cc.(
     2011112401
      1H
       10M
      7D
      1D)
    IN  NS  nsl
    IN  NS  ns2
    IN MX  10 mail
    IN  MX  20 mail2
181 IN  PTR ns1
182 IN  PTR ns2
181 IN  PTR mail
182 IN  PTR  mail2
181 IN  PTR www
181 IN  PTR ftp

hosts 试图通过查找本地/etc/hosts文件来解析名字

下面是/etc/hosts,可以看到这个文件把localhost解析为127.0.0.1以及其它的一些解析

chmod o-r 6688.cc.zone 192.168.0.local
chgrp named 6688.cc.zone 192.168.0.local
named-checkconf  检查主配置文件
named-checkzone  检查区域文件
service named restart
tail /var/log/messages
关闭selinux
setenforce 0
rndc是 dns远程配置工具

bind 使用DNS域名服务器来解析名字

澳门新萄京官方网站 14

rndc flush 清空linux的dns 缓存
rndc status 查看DNS的区域
rndc reload 重新读取配置文件
rndc trace 2 调试第二个进程
rndc stop 停止服务
rndc notrace  停止调试
rndc freeze zone  让某个区域不能工作
retransfer 重传某个区域

nis 使用网络信息服务(NIS)协议来解析主机名字

 

配置从服务器
和创建主服务器一样

multi
以off和on为参数。与host查询一起使用,用来确定一台主机是否在/etc/hosts文件中指定了多个IP地址

在查DNS之前都会先查这个文件,所以黑客可能会通过修改这个文件,让用户进入一些钓鱼网站。

rndc-confgen > /etc/rndc.conf
cat !$
把key "rndckey"{
          algorithm hmac-md5;
          secret "uAgAJYS FB3xvAWoVxctGQ==";
};
 controls {
        inet 127.0.0.1 port 953
             allow { 127.0.0.1; } keys { "rndckey"; };
};
复制到/etc/named.conf配置文件中
vim /etc/named.conf
编写options {
    directory "/var/named";
    querylog yes;启动日志
    version "hh";
};

nospoof
如果用逆向解析找出与指定的地址匹配的主机名,对返回的地址进行解析以确认它确实与您查询的地址相配。为了防止“骗取”IP地址,通过指定nospoof on来允许这种功能

 

zone "." IN {
      type hint;
      file "named.ca";
};

alert
以off和on为参数。如果打开,任何试图骗取IP地址的行为都通过syslog工具进行记录

下面是/etc/networks文件

zone "localhost" IN {
      type master;
      file "localhost.zone";
};

trim
以域名为参数。在/etc/hosts中查找名字前,trim删除这个域名。着使你只把基本主机名放在/etc/host.conf中而不指定域名

 

zone "0.0.127.in-addr.arpa" IN {
       type master;
       file "named.local";
};

下面这个例子是主机vlager上的/etc/host.conf文件:

澳门新萄京官方网站 15

保存退出。
chmod o-r /etc/named.confd需要把它的权限改为其他用户没有任何权限
chgrp named /etc/named.conf 把属组改为named
cd /var/named/
编写区域文件named.ca localhost.zone named.local
dig -t NS . > /var/named/named.ca  获取所有的记录
编写localhost.zone区域文件
vim localhost.zone
$TTL 43200
@  IN SOA   localhost. root.localhost. (
                      2011112401
                       3H
                       15M
                       1W
                       1D)
         IN   NS   localhost.
localhost.  IN  A   127.0.0.1
cp localhost.zone named.local
修改named.local
vim named.local
$TTL 43200
@  IN SOA   localhost. root.localhost. (
                      2011112401
                       3H
                       15M
                       1W
                       1D)
         IN   NS   localhost.
1 IN PTR localhost.
chown :named localhost.zone  named.*
named-checkconf  检查主配置文件
named-checkzone  检查区域文件
named-checkzone "localhost" localhost.zone

# /etc/host.conf

 

service named start启动服务
tail /var/log/messages,查看日志看是否有错误

# We have named running, but no NIS (yet)

 

dig -t axfr 6688.cc
vim /etc/named.conf
zone "6688.cc" IN {
    type slaves;
    file "slaves/6688.cc.zone";
    masters { 192.168.0.181; };
};

order bind hosts

            2)DNS  

service named restart
tail /var/log/messages
关闭selinux
setenforce 0

# Allow multiple addrs

 

测试:cd /var/named/slaves
cat 6688.cc.zone
看是否有主服务器的正向解析,如果有,就成功了。然后把主服务器的正向解析区域文件做一点修改,看是否可以同步。

multi on

  几乎所有的域名都是通过DNS域名服务器来解析的。DNS配置文件是在 /etc/resolv.conf文件下,里面配置DNS服务器

子域授权:
在父域的正向解析配置文件中添加NS记录和A记录
有几个NS服务器就要写几条NS记录以及对应的A记录
如果想要子域可以解析父域可以再

# Guard against spoof attempts

 

在子域的配置文件中添加
forward:
zone "gagedu.com" IN {
    type forward;
    forwarders { 192.168.0.181; };
    forward only|first;
};
forward only 递归转发
forward first 先尝示递归,然后用迭代

nospoof on

            3) NIS

也可以在全局使用forward,可以让主机通过转发主机访问它所知道的域

# Trim local domain (not really necessary).

 

options {
           forward only |first;
           forwarders {IP;};
 }
为了实现安全区域传送需要加以限制
Allow-transfer {192.168.0.1}

trim vbrew.com.

  这个用得比较少,基本被淘汰掉了

Allow-transfer {none;}

这个例子给出了域vbrew.com的通用解析程序配置。该解析程序首先使用DNS然后使用/etc/hosts文件查找主机名。在解析查找中指定 本地/etc/hosts文件是一个好主意。如果由于某种原因不能使用域名服务器了,我们还可以使用主机文件中列出的那些主机名。该机器上允许使用多个 IP地址,主机通过重新解析主机名字(从IP地址逆向查找返回的主机名字)来检查IP欺骗。

 

在DNS中使用Acl 要先定义acl再使用
acl "name" {
  主机列表;
};
在要限定的区域写allow-transfer { name; };允许传送
allow-query { name; }; 允许谁查询
在全局中用 allow-recursion { none; }; 不允许递归

转换程序/配置文件/etc/resolv.conf
当配置转换程序使用BIND域名服务查询主机时,我们必须告诉转换程序使用哪一个域名 服务器。用来完成这项任务的工具就是/etc/resolv.conf文件。/etc/resolv.conf控制转换程序使用DNS解析主机名使用的方 式,它可以明确地定义系统的配置,允许我们命名由于缺省服务器不响应而使用的备份服务器。因此,尽管会增加系统负荷,但在某些场合使用 resolv.conf是很受欢迎的。

 

智能DNS:
根据客户端来源IP地址,来为某一个解析请求返回一个设定好的解析结果

/etc/resolv.conf是一个简单而易读的文件。在/etc/resov.conf中使用的命令,具有系统专用的形式,但一般都支持domain和nameserver两项命令。

 

每个view里面都可以定义多个区域

nameserver项利用IP地址去识别让转换程序去识别查询域信息的那些服务器。我们可以多次使用nameserver选项,可以使用多达三个 域名服务器。这些名服务器是按照它们在文件中的顺序进行查询的,如果没有接收到一个服务器的响应,就去试表中的下一个服务器,直到所有服务器试完为止(如 果在/etc/resolv.conf文件中设置了三个以上的域名服务器,那么,即使前三个服务器都没有响应查询请求,Linux也不会去请求后面的服务 器)。我们应该将最可靠的域名服务器列在最前面,以便在查询时不会超时。如果resolv.conf文件中不包含nameserver项,或者不存在 resolv.conf文件,就将所有名服务器查询发送给本地主机。然而,如果有一个resolv.conf文件,它包含nameserver项,除非有 一项指向本地主机,否则就不查询本地主机。在配置唯转换程序的主机中,resolv.conf文件包含nameserver项,但没有一个项指向本地主 机。

可以通过配置文件 /etc/nsswitch.conf控制查询顺序

只要我们使用了view,每一个区域都要在view里面
用关键字match-clients 来匹配客户端请求来源
view view-name{
    match-clients { 191.168.0.0/24; };
    zone
};
比较乱,大家多多包涵,有不足或错误的地方,大家一定要指出来。

domain项用来定义缺省域名(主机的本地域名)。转换程序会将缺省域名挂在任何不含点的主机名后面。例如,转换程序接收到主机名vale(它不 含点),就将其缺省域名挂接在vale后面,构成对它的查询。如果domian域中的name值是vbrew.com,那么转换程序就将查询 vale.vbrew.com。如果没有出它,则转换程序就试图通过getdomainname()系统调用来获得本地域名。

其中的host:files   dns .... 这一行是控制顺序的

澳门新萄京官方网站 16

如果听起来让人迷惑不解的话,我们可以看看下面这个例子,这是Virtual Brewery中的resolv.conf文件:

 

# /etc/resolv.conf

 

# Our domain

 

domain vbrew.com

 

#

 

# We use vlager as central nameserver:

 

nameserver 191.72.1.1

 

在该例中,通过domain指定缺省域名,并列出一个用于解析主机名的域名服务器。在这个例子中没有指定查寻顺序(使用search选项),因此如 果要查询一台机器的地址(如vale),解析器则首先试图查找vale,如果没找到,则查找vale.vbrew.com,然后再查找 vbrew.com。

DNS专用查询命令

唯转换程序配置
配置唯转换程序是非常简单的,下面是一个唯转换程序的/etc/resolv.conf文件的例子:

 

# /etc/resolv.conf

 

# Our domain

命令host可用于进行dns查询:

domain vbrew.com

      $ host  www.google.com

#

 

# We use vlager as central nameserver:

 

nameserver 191.72.1.1

 

# netx try vale

命令dig也可进行dns查询,输出较为详细的信息:

namesever 191.72.1.3

      $ dig  www.google.com

该配置文件告诉转换程序将所有的查询发送给主域名服务器vlager,如果失败,就试vale。这些查询是永远不能在本地转换的。这一个简单的resolv.conf文件就可以满足唯转换程序配置的全部要求。

 

设置域名服务器
在Linux上的域名服务是由named守护进程来执行的,named最早是为BSD向客户机提供域名服务而开发的。 named守护进程通常在系统启动时开始工作,并一直工作到系统关闭。该进程从被称作/etc/named.boot的配置文件中获取有关信息和将主机名 映射为IP地址的各种文件。

 

为了运行named,只要在命令行中输入:

命令host、dig都不会使用/etc/nsswitch.conf的配置,只有会通过/etc/resolv.conf进行dns查询。即会绕过前面那个文件配置。

# /etc/rc.d/init.d/named start

 

named就会开始运行,读取named.boot文件及其定义的任何区文件并将它的进程ID以ASCII码的形式写入/var/run/named.pid中,下载任何来自主服务器的区文件,如果有必要的话在端口53等待DNS请求。

 

虽然转换程序的配置只需要一个配置文件,但是在配置named时却要使用多个文件,一整套named配置文件如表3所示。

 

表3 named配置文件

 

配置文件
说明

DNS查询

named.conf
设置一般的named参数,指向该服务器使用的域数据库信息的源,这类源可以是本地磁盘文件或远程服务器

 

named.ca
指向根域名服务器

DNS是一个树状结构,查询的时候根据域名从右到左查询,域名每一级有独立的一个或多个服务器。

named.local
用于在本地转换回送地址

 

named.hosts
将主机名映射为IP地址

例如,www.linuxcast.net.

named.rev
用于反向域的、将IP地址映射到主机名的区文件

 

在下面各节中我们将探讨如何利用其中的每一个文件去配置named。

澳门新萄京官方网站 17

/etc/named.conf文件
named.conf文件通常很小,只包括一些指向DNS信息源的信息。其中某些源是本地文件,其他则是远程服务器。下面我们将看到一个需要生成的每种文件类型的例子。

 

表4概括了named.conf文件中使用的各种配置语句,它提供的信息能帮助我们了解这一些例子:

最上面的"."是根域名服务器(root DNS Server),用来保存下一级的com/net...的地址,全球共有13台根域名服务器。这13台根域名服务器中名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。

表4 named.boot文件的配置选项

 

选项
说明

第二级是顶级域名服务器(Top Level Server),每个顶级域名服务器都是由一台或多台服务器控制的,每个一分别保存相应的以/com/net/org/....为后缀的域名的管理。

Directory
指定DNS文件所在的目录。您可以重复此选项以指定几个不同的目录。可以给出这些目录相关的文件路径名

 

Master
以一个域名和一个文件名为参数。此选项声明named对指定的域具有控制权,并使named从指定的区域加载信息

第三级是授权服务器(Authoritative Server),只负责linuxcast以下的信息。这里可以查找到www, mail, 和ftp主机。

Hint
为named建立高速缓存信息。以一个域名和一个文件名为参数。域名通常用“.”指定。指定的文件包括一组称为服务器提示的记录,这些记录列出了根域名服务器的信息

 

Forwarders
以一个域名服务器的列表作为参数。告诉本地域名服务器:如果它不能从它的本地信息中解析出地址,那么就与该列表中的服务器联系

$  dig   trace  www.linuxcast.net  

Slave
把本地域名服务器变成一个从属服务器。如果给出了此选项,那么本地服务器就试着通过递归查询来解析DNS名字。它只把请求传递给forwarders选项行列出的服务器中的一个

      这个命令可以追踪整个域名的查询过程

配置named.conf文件所使用的方法,是用来控制将域名服务器作为主服务器、辅助服务器还是唯高速缓存服务器的。理解不同配置的最佳方法是讨论各种named.conf的示例文件。

澳门新萄京官方网站 18

1.唯高速缓存服务器
配置唯高速缓存域名服务器是很简单的。必须有named.conf和named.ca文件,通常也要用到named.local文件。下面是用于唯高速缓存服务器的named.conf文件的例子,其中以“//”开头的是注释:

 

// generated by named-bootconf.pl

可以发现查询顺序是: . ——》net. ——》linuxcast.net. ——》www.linuxcast.net.

options {

 

directory "/var/named";

 

/*

DNS的查询类型

* If there is a firewall between you and nameservers you want

 

* to talk to, you might need to uncomment the query-source

  1.  迭代查询(Iterative Query)

* directive below. Previous versions of BIND always asked

 

* questions using port 53, but BIND 8.1 uses an unprivileged

例如客户端用迭代查询的方式访问www.linuxcast.net:

* port by default.

 

*/

澳门新萄京官方网站 19

// query-source address * port 53;

 

};

  1. 首先客户端发送请求到本地DNS服务器(Local DNS Server,即客户端配置的DNS服务器)

  2. 如果本地DNS不知道这个域名的话,就会去查询根域名服务器

  3. 根服务器返回.net服务器的地址

  4. 然后本地DNS在去查询net服务器

  5. net服务器返回linuxcast.net的地址

  6. 本地DNS再向Linuxcast.net发送请求

  7. linuxcast.net返回www主机给本地DNS

  8. 本地DNS返回www.linuxcast.net的地址给客户端。

 

 

//

 

// a caching only nameserver config

  1. 递归查询(Recursive  Query)

//

例如客户端用递归查询的方式访问www.linuxcast.net:

 

 

//

澳门新萄京官方网站 20

// a caching only nameserver config

  1. 首先客户端发送请求到本地DNS

  2. 如果本地DNS不知道这个地址的话,那么就会向根DNS服务器查询。

//

3. 然后根DNS服务器不会像迭代查询一样返回net地址,而是它会代替本地dns向net服务器发送请求查询

zone "." {

4. 然后net服务器也不会像迭代查询一样返回linuxcast.net的地址,而是代根DNS服务器向linuxcast.net查询

type hint;

  1. 最后linuxcast.net服务器返回www主机的地址给net

  2. net服务器返回www.linucast.net的地址给根DNS服务器

  3. 根DNS服务器这时再返回www.linucast.net的地址给本地DNS

  4. 最后本地DNS返回目标地址给客户端

file "named.ca";

 

};

这种查询方式的缺点:在每一级的服务器上,都会缓存大量的信息,因为它要等待查询返回,可能会占用大量的内存。

 

 

zone "0.0.127.in-addr.arpa" {

所以实际应用中,会结合这两种方式使用,即在客户端向本地DNS服务器查询是使用递归查询,而本地DNS服务器和其他级服务器使用的是迭代查询!

type master;

 

file "named.local";

 

directory这一行告诉named到哪里去找寻文件。所有其后命名的文件都将是相对于此目录的。该文件告诉named去维持一个域名服务器响 应的高速缓存,并利用named.ca文件的内容去初始化该高速缓存。该高速缓存初始化文件的名字可以是任何名字,但一般使用/var/named /named.ca。并不是在该文件中使用一个hint语句就能使它成为唯高速缓存配置,几乎每一种服务器的配置都要用到cache语句,而是因为没有 master和slave语句才使它成为一个唯高速缓存配置。

 

但是,在我们这个例子中却有一个master语句。事实上,几乎在每一个唯高速缓存的配置文件中都有这一个语句,它将本地服务器定义为它自己的回送 域的主服务器,并假定该域的信息存储在named.local文件中。这个回送域是一个in-addr.arpa域(in-addr.arpa域用于指定 逆向解析,或IP地址到DNS名字解析),它将地址127.0.0.1映射为名字localhost。转换自己的回送地址对于大多数人都是有意义的,因为 大多数的named.conf文件都包含这一项。

资源记录

在大多数唯高速缓存服务器的配置文件中,这种directory、master和hint语句是唯一使用的语句,但也可以增加其他的语句,forwarders和slave等语句都可以使用。

 

2.主服务器和辅助服务器的配置
我们虚构的vbrew.com是举例说明主服务器和辅助服务器的基础,下面是将vlager定义为vbrew.com域的主服务器的named.conf文件:

在DNS服务器上,DNS的信息通过一个叫做资源记录(RR,Resource Record)的格式进行保存,RR不仅能够保存域名到IP地址的对应信息,还能够保存很多其它信息。

// generated by named-bootconf.pl

 

 

资源记录(RR,Resource Record)常用的属性:

options {

澳门新萄京官方网站,      - NAME(名称)

directory "/var/named";

      - CLASS(类别)

/*

      - TYPE(类型)

* If there is a firewall between you and nameservers you want

      - RDATA(数据)

* to talk to, you might need to uncomment the query-source

 

* directive below. Previous versions of BIND always asked

如,

* questions using port 53, but BIND 8.1 uses an unprivileged

NAME CLASS TYPE RDATA

* port by default.

www IN(Internet) A   192.168.1.1

*/

mail IN A 192.168.1.2

// query-source address * port 53;

server1 IN CNAME   www

};

  IN MX  10 mail.linuxcast.net

 

 

//

 

// a caching only nameserver config

资源记录类型

//

 

zone "." {

DNS的资源记录可以记录很多类型资源,而不仅仅是IP地址,常见的资源记录类型:

type hint;

 

file "named.ca";

类型 表示内容

};

A IPv4地址

zone "vbrew.com"{

AAAA IPv6地址

type master;

MX     邮件记录

file "named.hosts";

CNAME 别名

};

PTR 指针(逆向解析)

 

SRV 服务资源

zone "0.0.127.in-addr.arpa" {

 

type master;

 

file "named.local";

 

};

 

 

DNS服务器类型

zone "72.191.in-addr.arpa"{

 

type master;

主DNS服务器(Primary DNS Server ,Master)

file "named.rev";

    一个域的主服务器保存该域的zone配置文件,该域所有的配置、更改都在该服务器上进行

};

 

上例中第一个master告诉我们这是vbrew.com域的主服务器。该域的数据是从named.hosts文件中加载的。在我们这个例子中,我 们将文件名named.hosts作为区文件名,但也可以使用更有说明性的文字,例如,vbrew.com区文件的名字使用 vbrew.com.hosts则较好。

从服务器(Second DNS Server,Slave)

第三个master语句指向能将IP地址191.72.0.0映射为主机名的文件。它假定本地服务器是反向域72.191.in-addr.arpa的主服务器,该域的数据从文件named.rev中加载。

    从服务器一般作为冗余负载使用,一个域的从服务器从该域的主服务器上抓取zone配置文件,从服务器不进行信息修改,所有的修改与主服务器同步

在上例配置中的hint语句和第二个用于回送域的primary语句我们前面在唯高速缓存配置中已经讨论过。在这些配置中,它们的作用是相同的,而且几乎在任何配置中都要使用它们。

 

辅助服务器的配置与主服务器的配置不同,它使用slave语句代替master语句。slave语句指向用作域信息源的远程服务器,以替代本地磁盘文件。下面的named.conf文件可以将vale配置成为vbrew.com域的辅助服务器:

缓存服务器(Caching only Server)

// generated by named-bootconf.pl

    DNS缓存服务器不存在任何zone文件,仅仅依靠缓存作为客户端提供服务,通常用于负载均衡及加速访问使用

 

 

options {

 

directory "/var/named";

ZONE

/*

 

* If there is a firewall between you and nameservers you want

在DNS服务器中,一般一个域通过一个ZONE文件保存该域的相关信息,zone文件的格式是标准化的,一个典型的zone配置文件内容如下:

* to talk to, you might need to uncomment the query-source

有标准模板

* directive below. Previous versions of BIND always asked

STTL  ID

* questions using port 53, but BIND 8.1 uses an unprivileged

@ IN  SOA  @rname.invalid. (

* port by default.

                               0    : serial          (序列号,DNS服务器修改过一次序列号加1,从服务器发现序列号和自己不一样就会自动更新)

*/

                               1D  : refresh       (刷新时间,1D=1天)

// query-source address * port 53;

                               1H  : retry           (重试, 1H=1小时)

};

                               1W : expire          

 

                               3H  ); minimum     

//

(上面一般直接使用默认的就可以)

// a caching only nameserver config

           NS @

//

           MX 10   mail.linuxcast.net

zone "." {

www    IN  A     192.168.1.100

type hint;

mail     IN  A     192.168.1.200

file "named.ca";

(上面是数据)

};

 

 

 

zone "0.0.127.in-addr.arpa" {

 

type master;

高级查询

file "named.local";

 

};

默认dig命令只能查询我们通过dig命令查询其他类型的资源记录:

zone "vbrew.com"{

      $ dig  -t  mx  linuxcast.net

type slave;

      $ dig  -x  www.linuxcast.net    进行逆向解析

file "named.hosts";

      $ dig  -t  soa  linuxcast.net

masters { 191.72.1.3; };

 

};

 

zone "72.191.in-addr.arpa"{

域名 IP地址往往难以记忆,所以我们一般使用域名进行管理 www.google.com 域名分为三个部分,用.(点...

type slave;

file "named.rev";

masters {191.72.1.3;};

};

cache . named.ca

secondary vbrew.com 191.72.1.3 named.hosts

secondary 72.191.in-addr.arpa 191.72.1.3 named.rev

primary 0.0.127.in-addr.arpa named.local

第一个slave语句是使这个服务器成为vbrew.com的辅助服务器。它告诉named从IP地址为191.72.1.3的服务器中下载 vbrew.com的信息,并将其数据保存在/var/named/named.hosts文件中。如果该文件不存在,named就创造一个,并从远程服 务器中取得区数据,然后将这些数据写入新创建的文件中。如果存在该文件,named就要检查远程服务器,以了解该远程服务器的数据是否不同于该文件中的数 据,如果数据有变化,它就下载更新后的数据,用新数据覆盖该文件的内容;如果数据没有变化,named就加载磁盘文件的内容,不必做麻烦的区转移工作。

将一个数据库拷贝到本地磁盘文件中,就不必每次引导主机时都要转移区文件;只有当数据修改时,才进行这种区文件的转移工作。

该配置文件中的下一行表示该本地服务器也是反向域72.191.in-addr.arpa的一个辅助服务器,而且该域的数据也从191.72.1.3中下载。该反向域的数据存储在named.rev中。

DNS数据库文件和资源记录
配置named所需的所有文件(named.hosts、named.rev、named.local和 named.ca)中的信息是以称为资源记录的形式存在的。每个资源记录都有一个类型,这个类型说明记录的功能。这些记录都是标准资源记录,称为 RR(resource records)。表5列出了最常见的资源记录类型,其余的类型很少用到,如果感兴趣的话。请参考相应的RFC和man page。

表5 常见标准资源记录

资源记录名
记录类型
功能说明

地址
A
将主机名转换为地址。这个字段保存以点分隔的十进制形式的IP地址。任何给定的主机都只能有一个A记录,因为这个记录被认为是授权信息。这个主机的任何附加地址名或地址映射必须用CNAME类型给出

规范名
CNAME
给定一个主机的别名,主机的规范名字是在这个主机的A记录中指定的

主机信息
HINFO
描述主机的硬件和操作系统

邮件交换
MX
建立邮件交换器记录。MX记录告诉邮件传送进程把邮件送到另一个系统,这个系统知道如何将它递送到它的最终目的地

名服务器
NS
标识一个域的域名服务器。NS资源记录的数据字段包括这个域名服务器的DNS名。我们还需要指定这个名字名字服务器的地址与主机名相匹配的A记录

指针
PTR
将地址变换成主机名。主机名必须是规范主机名

管理开始

SOA

告诉域名服务器它后面跟着的所有所有资源记录是控制这个域的(SOA)表示授与控制权)。其数据字段用()括起来并且通常是多行字段。SOA记录的数据字段包含下面的项:

origin
这个域的主域名服务器的规范主机名。用点“.” 结尾的绝对主机名,因此,它不能被named守护进程修改

contact
负责维护这个域的人的电子邮件联系地址。因为@在资源记录中有特殊的意义,所以用点“.”代替这个符号。如果负责维护vbrew.com的人是clfls,那么联系地址就是clfls.vbrew.com

serial
这个区信息文件的版本号,它是一个整数。辅助域名服务器用它来确定这个区信息的文件是何时改变的。每次改变信息文件时都应该使这个数加一

refresh
辅助域名服务器在试图检查主域名服务器的SOA记录之前应等待的秒数。SOA记录不经常改变,因此可以把这个值设置为一天

retry
辅助服务器在主服务器不能使用时,重试对主服务器的请求应等待的秒数。通常,它应该按分进行设置

expire
这是辅助服务器在不能与主服务器取得联系的情况下丢掉区信息之前应等待的秒数,一般应该设置成30天左右

minimum
当没有指定ttl资源记录时默认的ttl值。如果网络没有太大的变化,那么这个数可以设得很大。可以在资源记录中指定一个ttl值来代替它

为了能看懂本章中使用的配置示例文件,有必要稍微介绍以下资源记录的结构。DNS资源记录的格式是:

[domain] [ttl] [class] type rdate

各个字段之间有空格或指标符分隔。表6讨论了这些字段的含义。

表6 资源记录格式中的字段

字段
说明

domain
资源记录引用的域对象名。它可以是单台主机,也可以是整个域。作为domain输入的字串除非不是以一个点结束,否则就与当前域有关系。如果该domain字段是空的,那么该记录适用于最后一个带名字的域对象

ttl
生存时间记录字段。它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常该字段是空字段,这表示使用SOA记录中为整个区域设置的缺省ttl

class
指定网络的地址类。对于TCP/IP网络使用IN。如果没有给出类,就使用前一个资源记录的类

type
标识这是哪一类资源记录

rdata
指定与这个资源记录有关的数据。这个值是必要的。数据字段的格式取决于类型字段的内容

named.ca文件
named.boot文件中的cache语句指向一个高速缓存初始化文件,具有高速缓存的服务器都有这样一个文件。它 包含着域名服务器启动时开始创造一个域数据高速缓存所需的信息。在cache语句中,用一个指点其根域,在named.ca文件中至少包含根服务器的名字 和地址。named的高速缓存操作是很重要的。幸运的是,建立高速缓存的named.ca文件通常是最简单的named配置文件。

基本的named.ca文件包含根服务器的NS记录和提供根服务器地址的A记录。下面就是基本的named.ca文件:

; named.ca file

; servers for the root domain

. 99999999 IN NS NS.NIC.DDN.MIL.

99999999 IN NS NS.NASA.GOV.

99999999 IN NS KAVA.NISC.SRI.COM.

99999999 IN NS TERP.UMD.EDU.

99999999 IN NS C.NYSER.NET.

99999999 IN NS NS.INTERNIC.NET.

;

; root servers by address

;

NS.NIC.DDN.MIL. 99999999 IN A 199.112.36.4

NS.NASA.GOV. 99999999 IN A 128.102.16.10

KAVA.NISC.SRI.COM. 99999999 IN A 192.33.33.24

TERP.UMD.EDU. 99999999 IN A 128.8.10.90

C.NYSER.NET. 99999999 IN A 192.33.4.12

NS.INTERNIC.NET. 99999999 IN A 198.41.0.4

该记录只包含各服务器记录和地址记录。首先是一组标识根(.)域的各服务器的NS记录,在NS记录之后,是一组为每个根服务器提供地址的A记录。虽然不需要ttl,但习惯上每个记录的ttl是99999999(可能的最大值)。因为根服务器是永远不会从高速缓存中删除的。

named.local文件
named.local文件可以将回送地址127.0.0.1转换成本地主机名,它是反向域 0.0.127.IN-ADDR.ARPA使用的区文件.由于所有系统都将127.0.0.1作为回送地址,该文件实际上对于每一个系统都是相同的。下面 是从vlager上获取的一个典型的named.local文件:

;

; /var/named/named.local Reverse mapping of 127.0.0

; Origin is 0.0.127.in-addr.arpa.

;

@ IN SOA vlager.vbrew.com. (

joe.vbrew.com.

1 ; serial

360000 ; refresh: 100 hrs

3600 ; retry: one hour

3600000 ; expire: 42 days

360000 ; minimum: 100 hrs

)

IN NS vlager.vbrew.com.

1 IN PTR localhost.

其中的SOA记录的数据字段和包含主机名的NS记录是随系统不同而不同的。本例中SOA记录将vlager.vbrew.com标识为开创该区的服 务器,将电子邮件地址joe.vbrew.com标识为解决该区问题的联系地点(在SOA记录中,通常将电子邮件地址中用来分隔接收者名字和主机名的@修 改成一个点,其它字段则保持不变)。很多系统甚至不包含NS记录,若要用它,就包含计算机的主机名。修改这三个字段我们就可以在任何主机中使用这个文件。

到目前为止我们讨论的文件named.boot、named.ca和named.local都是配置唯高速缓存服务器和辅助服务器时所需要的文件。大多数服务器将只需要这些文件,而且使用的这些文件在,每一个服务器上几乎都包含相同的信息。

其它的named配置文件比较复杂,但是使用这些文件的服务器数量比较少,只有主服务器需要所有的配置文件,而每个域只有一个主服务器。

反向域文件named.rev
named.rev与named.host文件非常类似,都包含有PTR记录,只是named.rev将地址映射为主机名。下面是named.rev的一个例子。

;

; /var/named/named.rev Reverse mapping of our IP addresses

; Origin is 72.191.in-addr.arpa.

;

@ IN SOA vlager.vbrew.com. (

joe.vbrew.com.

16 ; serial

86400 ; refresh: once per day

3600 ; retry: one hour

3600000 ; expire: 42 days

604800 ; minimum: 1 week

)

IN NS vlager.vbrew.com.

; brewery

1.1 IN PTR vlager.vbrew.com.

2.1 IN PTR vstout.vbrew.com.

3.1 IN PTR vale.vbrew.com.

; winery

1.2 IN PTR vlager-if1.vbrew.com.

2.2 IN PTR vbardolino.vbrew.com.

3.2 IN PTR vchianti.vbrew.com.

4.2 IN PTR vbeaujolais.vbrew.com.

在这个例子中,包含了在named.hosts文件中见到的相同的SOA记录。它只是为域建立控制信息。该SOA记录的名字字段中的@是指向当前域,本例是由named.boot示例文件中的primary定义的:

primary 72.191.in-addr.arpa named.rev

该SOA记录中的@允许primary语句去定义区文件域,vlager中每个区文件都使用相同一个SOA记录;它总是引用正确的域名,因为所引用 的都是named.boot为特定区文件定义的域。几乎在每个区文件的开头,我们都可以看到相同的SOA格式。请修改主机名 vlager.vbrew.com和管理员电子邮件地址joe.vbrew.com,并在我们任何一个区文件中使用该SOA记录。

在SOA记录后面的NS记录可以该域的服务器,一般在其它任何记录有机会去修改域名之前,将立即在SOA之后列出各域名服务器。请注意,一个空的名字字段意味着上一个域名仍然起作用,SOA的域应用仍然有效,因为后面的NS记录中的名字段是空的。

PTR记录在named.rev文件中占有重要地位,因为它们可以将地址转换为主机名。在我们的例子中,PTR记录为网络191.72中的主机 1.1、1.2、1.3、2.1、2.2、2.3和2.4提供地址到名字的转换,由于它们不是以点结束,所以这些PTR记录中名字字段的值都与当前域有 关。例如,值3.1可以看作是3.1.72.191.in-addr.arpa。PTR记录的数据数据字段中的主机名是全部限定的,以防止它和当前域名相 关。利用PTR中的信息,named就将3.1.72.191.in-addr.arpa转换成vale.vbrew.com。

named.hosts文件
在named.boot文件中,把named.hosts文件作为包含本地域信息的文件列出。可以在 named.boot中的primary行上为这个文件起用户想要的名字。named.hosts文件包含大部分的域信息,它可以将主机名转换成IP地 址,因而A记录占有重要的地位,而且它还包含MX、CNAME和其它的记录。该named.hosts文件和named.rev文件一样,只有主服务器才 有,其它所有的服务器可从主服务器取得信息。下面给出了一个使用多资源记录类型的named.hosts文件的例子:

;

; /var/named/named.hosts Local hosts at the brewery

; Origin is vbrew.com

;

@ IN SOA vlager.vbrew.com. (

janet.vbrew.com.

16 ; serial

86400 ; refresh: once per day

3600 ; retry: one hour

3600000 ; expire: 42 days

604800 ; minimum: 1 week

)

IN NS vlager.vbrew.com.

;

; local mail is distributed on vlager

IN MX 10 vlager

;

; loopback address

localhost. IN A 127.0.0.1

; brewery Ethernet

vlager IN A 191.72.1.1

vlager-if1 IN CNAME vlager

; vlager is also news server

news IN CNAME vlager

vstout IN A 191.72.1.2

vale IN A 191.72.1.3

; winery Ethernet

vlager-if2 IN A 191.72.2.1

vbardolino IN A 191.72.2.2

vchianti IN A 191.72.2.3

vbeaujolais IN A 191.72.2.4

和named.rev文件一样,该文件以一个SOA记录和定义域及服务器的NS记录开头。但named.hosts文件包括的资源记录品种多于named.rev。我们根据这些记录在示例文件中的顺序来讨论每一种记录。

该文件的第一个记录是域的SOA(授予控制权)记录。该记录的第一行以@字符开始,@字符表示这是当前原点或域。原点由 named.boot文件中相应的primary行上列出的域定义给出。此后是代码IN和SOA,它告诉named这个资源记录使用 Internet(TCP/IP)编址并且是授予控制权记录。

这行接下来的两项是这个域的主域名服务器的规范名字,和用点代替@的电子邮件联系人的地址。然后列出SOA记录要求的各种数据段,一行一个。

在SOA记录后,下一行是域名服务器资源记录。它列出vlager.vbrew.com作为这个域的域名服务器。因为在域字段中没有列出任何域,所以假设是最后一个指定的域,也就是在SOA记录中列出的@。而且@字符确实是本地域。这是比较容易理解的。

MX记录为整个域定义一个邮件服务器,该记录假定vlager是vbrew.com域的邮件服务器,其优先值是10。送给 user@vbrew.com的邮件被重定向到vlager,以便进行传送。当然,为了使vlager能够成功地传送邮件,就必须将它配置成邮件服务器。 MX记录只是整个事件中的一部分,我们将在第十一章中研究如何使用sendmail配置邮件服务器。

该例中第一个A记录定义本地主机地址,这恰好和named.rev文件中的PTR记录相反,它允许vbrew.com域中的用户输入本地主机名(localhost)并由本地服务器将它转换为地址127.0.0.1。

接下来是定义子网brewery中的主机。第一个A记录为网关vlager定义了IP地址,然后使用CNAME定义了vlager 的别名vlager-if1,接下来又说明vlager还是新闻服务器(news)。之后为这个域的另外两台主机:vstout和vale建立地址记录。

然后四个A记录定义了子网winery中的四台主机的IP地址:vlager-if2、vbardolino、vchianti和vbeaujilias。

错误查找
在配置好named.boot文件和所需的区文件之后,我们就可以启动named了。Named通常是在系统引导时启动的,但是也可以使用下面命令启动:

# /etc/rc.d/init.d/named/restart

或:

# ndc restart

在第一次运行这些命令时,请留意出错信息。DNS是一个很复杂的系统。用户可能会做错很多事,并且会使系统不能正常运行。伴随DNS建立出现的许多问题都会引起相同的结果,但起因却不同。但大多数问题是由于配置文件中的语法错误而导致的。

确保用户的DNS配置文件中正确地指定了主机名。如果它是一个绝对主机名,要确保它以一个原点结尾。对在SOA和CNAME记录中使用的名字要尤其 小心。如果在这里弄错了,这些资源记录会把主机名查询重定向到不存在的计算机。 要确保在改变配置文件后增加配置文件中的版本号。如果忘了,那么DNS将不能再读取这些文件。确保为A记录输入了正确的IP地址,并检查这个地址是否与您 的/etc/hosts文件匹配。另外,确保DNS名字和IP地址与named.rev中的相应的逆向解析信息匹配。

查找错误的最好工具是nslookup命令。使用该命令彻底检查用户的DNS服务器。对用户的DNS数据库中的每个地址都进行定期逆向解析,以确保所有的地址和名字都正确。

nslookup命令的使用
nslookup是检查我们的域名服务器配置的最好工具,它是由BIND软件包提供的。它允许任何人直接查询域名服务器,对于确定服务器是否正确地运行和是否配置得和合适是很有帮助的。

nslookup命令可以交互式的从命令行进行查询,在命令行中它可以用来查询IP地址,例如:

$ nslookup hostname

这条命令要求定义在resolv.conf中的域名服务器查询给定主机名的IP地址(如果有不止一个服务器,nslookup将按列在/etc /resolv.conf文件中的顺序选取一个作为查询对象)。当不带任何参数时,nslookup将显示所使用的域名服务器的信息。在“>”提示 符下,我们可以输入所要请求的查询的域名;在提示符下输入exit命令将会终止一次查询会话。默认情况下,nslookup查询A记录。例如:

$ nslookup

Default Name Server: rs10.hrz.th-darmstadt.de

Address: 130.83.56.60

 

> sunsite.unc.edu

Name Server: rs10.hrz.th-darmstadt.de

Address: 130.83.56.60

 

Non-authoritative answer:

Name: sunsite.unc.edu

Address: 152.2.22.81

 

>exit

但我们可以使用set type命令修改去查询另一种资源记录类型,下面的例子将会可检查SOA记录。请注意,如果将查询类型设置成SOA。它将保持SOA不变,不会返回默认的A型查询。如果我们需要查询A记录,则还需要使用一次set type命令。

$ nslookup

Default Name Server: rs10.hrz.th-darmstadt.de

Address: 130.83.56.60

 

> unc.edu

*** No address (A) records available for unc.edu

Name Server: rs10.hrz.th-darmstadt.de

Address: 130.83.56.60

 

> set type=SOA

> unc.edu

Name Server: rs10.hrz.th-darmstadt.de

Address: 130.83.56.60

 

Non-authoritative answer:

unc.edu

origin = ns.unc.edu

mail addr = shava.ns.unc.edu

serial = 930408

refresh = 28800 (8 hours)

retry = 3600 (1 hour)

expire = 1209600 (14 days)

minimum ttl = 86400 (1 day)

 

Authoritative answers can be found from:

UNC.EDU nameserver = SAMBA.ACS.UNC.EDU

SAMBA.ACS.UNC.EDU internet address = 128.109.157.30

>exit

同样,可以使用set type查询MX记录,或修改成专用查询类型ANY,ANY可以用来取得指定主机的所有可用资源记录。

> set type=MX

> unc.edu

Non-authoritative answer:

unc.edu preference = 10, mail exchanger = lambada.oit.unc.edu

lambada.oit.unc.edu internet address = 152.2.22.80

 

Authoritative answers can be found from:

UNC.EDU nameserver = SAMBA.ACS.UNC.EDU

SAMBA.ACS.UNC.EDU internet address = 128.109.157.30

>exit

nslookup命令的另一个应用为named.ca文件是获取当前根服务器的列表。我们可以使用set type=NS来查询所有的根域名服务器:

$ nslookup

Default Name Server: rs10.hrz.th-darmstadt.de

Address: 130.83.56.60

 

> set typ=NS

> .

Name Server: fb0430.mathematik.th-darmstadt.de

Address: 130.83.2.30

 

Non-authoritative answer:

(root) nameserver = NS.INTERNIC.NET

(root) nameserver = AOS.ARL.ARMY.MIL

(root) nameserver = C.NYSER.NET

(root) nameserver = TERP.UMD.EDU

(root) nameserver = NS.NASA.GOV

(root) nameserver = NIC.NORDU.NET

(root) nameserver = NS.NIC.DDN.MIL

 

Authoritative answers can be found from:

(root) nameserver = NS.INTERNIC.NET

(root) nameserver = AOS.ARL.ARMY.MIL

(root) nameserver = C.NYSER.NET

(root) nameserver = TERP.UMD.EDU

(root) nameserver = NS.NASA.GOV

(root) nameserver = NIC.NORDU.NET

(root) nameserver = NS.NIC.DDN.MIL

NS.INTERNIC.NET internet address = 198.41.0.4

AOS.ARL.ARMY.MIL internet address = 128.63.4.82

AOS.ARL.ARMY.MIL internet address = 192.5.25.82

AOS.ARL.ARMY.MIL internet address = 26.3.0.29

C.NYSER.NET internet address = 192.33.4.12

TERP.UMD.EDU internet address = 128.8.10.90

NS.NASA.GOV internet address = 128.102.16.10

NS.NASA.GOV internet address = 192.52.195.10

NS.NASA.GOV internet address = 45.13.10.121

NIC.NORDU.NET internet address = 192.36.148.17

NS.NIC.DDN.MIL internet address = 192.112.36.4

>exit

利用nslookup的help命令或?,我们可以得到nslookup的完整命令列表。例如:

>help

Commands: (identifiers are shown in uppercase, [ ] means optional)

NAME - print info about the host/domain NAME using default server

NAME1 NAME2 - as above, but use NAME2 as server

help or ? - print info on common commands; see nslookup(1) for details

set OPTION - set an option

all - print options, current server and host

[no]debug - print debugging information

[no]d2 - print exhaustive debugging information

[no]defname - append domain name to each query

[no]recurse - ask for recursive answer to query

[no]vc - always use a virtual circuit

domain=NAME - set default domain name to NAME

srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2,etc.

root=NAME - set root server to NAME

retry=X - set number of retries to X

timeout=X - set initial time-out interval to X seconds

澳门新萄京官方网站:DNS配置详解,DNS服务器配置详解。querytype=X - set query type, e.g., A, ANY, CNAME, HINFO, MX, PX, NS, PTR, SOA, TXT, WKS, SRV, NAPTR

port=X - set port number to send query on

type=X - synonym for querytype

class=X - set query class to one of IN(Internet), CHAOS, HESIOD or ANY

[no]recurse - ask for recursive answer to query

[no]vc - always use a virtual circuit

domain=NAME - set default domain name to NAME

srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2,etc.

root=NAME - set root server to NAME

retry=X - set number of retries to X

timeout=X - set initial time-out interval to X seconds

querytype=X - set query type, e.g., A, ANY, CNAME, HINFO, MX, PX, NS, PTR, SOA, TXT, WKS, SRV, NAPTR

port=X - set port number to send query on

type=X - synonym for querytype

class=X - set query class to one of IN(Internet), CHAOS, HESIOD or ANY

server NAME - set default server to NAME, using current default server

lserver NAME - set default server to NAME, using initial server

finger [USER] - finger the optional USER at the current default host

root - set current default server to the root

ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)

-a - list canonical names and aliases

-h - list HINFO (CPU type and operating system)

-s - list well-known services

-d - list all records

-t TYPE - list records of the given type(e.g.,A,CNAME,MX,etc.)

view FILE - sort an ls output file and view it with more

exit - exit the program, ^D also exits

当我们使用nslookup这一工具时,我们将会发现很多有帮助的功能。

本文由澳门新萄京官方网站发布于服务器运维,转载请注明出处:澳门新萄京官方网站:DNS配置详解,DNS服务器配

关键词: