Linux服务---DNS的正向解析和反向解析

一、DNS概述

    DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,方便用户使用名称的访问互联网。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS的主要作用就是解决域名到IP之间的转换。hosts 只能作用于本主机,而不能同步更新到所有主机使用,而且当hosts文件很庞大时是很难管理。

    DNS是一个网路服务,DNS协议运行在UDP或TCP协议之上,使用端口号53。通常DNS在查询的时候是以udp这个快速的数据传输协议来查询的,但是一旦没办法查询到完整的信息时就会再次以TCP协议来进行重新查询,因此DNS服务在启动时会同时开启tcp53号端口和udp的53号端口。(953是rndc监听端口)

二、DNS查询类型

2.1 递归查询

    递归查询是最常见的查询方式,当一个客户机发送一个查询给本地域名服务器时,本地域名服务器必须返回一个IP地址,如果解析不到IP,域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。一般客户机和服务器之间属递归查询。

2.2 迭代查询

    迭代查询又称重指引。当服务器使用迭代查询时能够使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止。一般DNS服务器之间属迭代查询。

注:客户端指向dns服务器时,不能指向根服务器(根dns服务器不接受递归查询),指向的一定是允许给本地主机做递归查询的dns服务器。

三、DNS服务器类型

DNS服务器的类型:
    主DNS服务器
    从DNS服务器
    缓存DNS服务器(转发器)
        主DNS服务器:管理和维护所负责解析的域内解析库的服务器
        从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
        序列号:解析库版本号,主服务器解析库变化时,其序列递增
        刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
        重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
        过期时长:从服务器联系不到主服务器时,多久后停止服务
        “通知”机制:主服务器解析库发生变化时,会主动通知从服务器

四、DNS资源记录

    为了将名字解析为IP地址,服务器查询它们的区(又叫DNS数据库文件或简单数据库文件)。区中包含组成相关DNS域资源信息的资源记录(RR)。例如,某些资源记录把友好名字映射成IP地址,另一些则把IP地址映射到友好名字。某些资源记录不仅包括DNS域中服务器的信息,还可以用于定义域,即指定每台服务器授权了哪些域,这些资源记录就是SOA和NS资源记录。

区域解析库:由众多资源记录(Resource Record, RR)组成,这些记录类型有:A, AAAA, PTR, SOA, NS, CNAME, MX,其中:

    SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
    A:internet Address,作用,FQDN --> IP
    AAAA: FQDN --> IPv6
    PTR: PoinTeR,IP --> FQDN
    NS: Name Server,专用于标明当前区域的DNS服务器
    CNAME:Canonical Name,别名记录
    MX: Mail eXchanger,邮件交换器

资源记录定义的格式:

语法:name [TTL] IN rr_type value

注意:
    (1) TTL可从全局继承
    (2) @可用于引用当前区域的名字
    (3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
    (4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

4.1 SOA记录
    name: 当前区域的名字,例如“Google.com.”
    value: 有多部分组成
         (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
         (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
        (3) 主从服务区域传输相关定义以及否定的答案的统一的TTL
例如:

mumu.com. 86400 IN SOA ns.mumu.com. 
nsadmin.mumu.com. (
2015042201 ;序列号
2H ;刷新时间
10M ;重试时间
1W ;过期时间
1D ;否定答案的TTL值
)

4.2 NS记录
    name: 当前区域的名字
    value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.
    注意:一个区域可以有多个NS记录
例如:

mumu.com. IN NS ns1.mumu.com.
mumu.com. IN NS ns2.mumu.com.

    注意:
        (1) 相邻的两个资源记录的name相同时,后续的可省略

        (2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

4.3 MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
例如:

mumu.com. IN MX 10 mx1.mumu.com.
        IN MX 20 mx2.mumu.com.

注:对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

4.4 A记录

    name: 某主机的FQDN,例如www.mumu.com.
    value: 主机名对应主机的IP地址
    例如:

www.mumu.com. IN A 1.1.1.1
www.mumu.com. IN A 2.2.2.2
mx1.mumu.com. IN A 3.3.3.3
mx2.mumu.com. IN A 4.4.4.4
$GENERATE 1-254 HOST$ A 1.2.3.$ 
*.mumu.com. IN A 5.5.5.5
mumu.com. IN A 6.6.6.6

注:避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

4.5 其它记录
     AAAA:name: FQDN
    value: IPv6
    PTR:name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:inaddr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN
     例如:

    4.3.2.1.in-addr.arpa. IN PTR www.mumu.com.

如1.2.3为网络地址,可简写成:

    4 IN PTR www.mumu.com.

注:网络地址及后缀可省略;主机地址依然需要反着写

4.5 别名记录

CNAME:
    name: 别名的FQDN
    value: 真正名字的FQD
例如:

www.mumu.com. IN CNAME websrv.mumu.com.

子域
子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权类似根域授权tld:

.com. IN NS ns1.com. 
.com. IN NS ns2.com. 
ns1 .com. IN A 2.2.2.1 
ns2.com. IN A 2.2.2.2

magedu.com. 在.com的名称服务器上,解析库中添加资源记录

mumu.com. IN NS ns1.mumu.com. 
mumu.com. IN NS ns2.mumu.com. 
mumu.com. IN NS ns3.mumu.com. 
ns1.mumu.com. IN A 3.3.3.1 
ns2.mumu.com. IN A 3.3.3.2 
ns3.mumu.com. IN A 3.3.3.3

glue record:粘合记录,父域授权子域的记录

五、安装DNS服务器

    DNS服务安装软件名字为bind,还有其他相关的软件包,安装DNS服务跟安装samba、dhcp服务步骤相同,首先检查系统中是否已安装bind包。DNS服务需要4个组件 bind-utils-9.2.11-16、gpbind-1.11-4、bind-9.2.1-16、caching-nameserver-7.2-7,而系统默认已经安装了前两个,所以我们只需要安装bind-9.2.1-16(位于第一张光盘)和caching-nameserver-7.2-7(位于第二张光盘)。

六、DNS的配置文件

主配置文件:

    /etc/named.conf 详解:

[root@(mumu 7) ~]# vim /etc/named.conf 
options {
        listen-on port 53 { any; };  #默认监听本机的端口,即哪些主机可以进行访问解析,any表示所有,也可注释掉或调整为指定IP,
注意这里any后面一定要有分号;
//     listen-on-v6 port 53 { ::1; };  #开启ipv6监听,可用“//”注释掉; 
        directory       "/var/named";  #对应数据库文件的目录位置,即区域文件配置目录;
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };  #授权为指定的主机解析,默认只为本机解析,这里选择any运行所有,也可注释掉;
        allow-transfer  { none; };  #允许区域传送的主机;可拒绝所有、指定ip传送,默认开启,建议指定ip进行区域传送,
这里设置为none  
        recursion yes;  #递归查询,默认开启
        dnssec-enable no;  #sec功能,与安全加密传输相关的选项,可注释掉,这里设置为no      
        dnssec-validation no;  #同上一条,可注释掉,这里设置为no   
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";};logging {
        channel default_debug {
            file "data/named.run";
            severity dynamic;          
        };
};
zone "." IN {  #根区域定义,若要做内网根服务器,要注释掉
        type hint;  #设置区域类型(hint表示根域,master表示主域,slave表示从域)        
        file "named.ca";  #设置对应的根域地址数据库文件
include "/etc/named.mumu.zones";    #加载指定区域文件
include "/etc/named.root.key";

注:

    /etc/named.rfc1912.zones 详解:

其中 zone 的格式为:

    zone "ZONE_NAME" IN {
            type {master|slave|hint|forward};
            file "ZONE_NAME.ZONE";
            };

type:

    该zone的类型,主要的类型有:针对根的hint,主DNS的master,从DNS的salve和专门用于转发的域类型forward,除了根外默认为master;

file:

    该zone的文件名称

ZONE_NAME:

    表示要解析的域名;正解时为域名本身,如 magedu.com;反解的时候有固定的格式:ip网段反向 .in-addr.arpa。

    ip网段反向是指:如域名所对应的主机 ip 的网段为 192.168.159.0/24 网络,那么就需要将该网络的网络ID部分倒着写,网络ID部分为192.168.159,倒着写就为159.168.192。

七、NDS解析

要实现DNS服务就需要对上图的三个文件进行配置,它们分别是主配置文件,区域配置文件,区域数据配置文件

DNS系统系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名和IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务。

       正向解析:根据域名查询IP地址,是DNS最基本也是最常用的功能

       反向解析:根据IP地址查询域名,不怎么常用

正向解析库文件为:/var/named/mumu.com.zone

反向解析库文件为:/var/name/192.168.159.zone

八、实验

    在centos7上部署dns实现对magedu.com的正向解析及对192.168.153的反向解析

1、进入linux界面,首先安装bind安装文件,bind是一个提供域名服务的DNS服务程序,在系统光盘中这个安装包是自带的,可以用yum命令直接安装

1[}OU0HORJTX3](Y3U89[HX.png

2、首先我们先对主配置文件进行配置,这其中需要更改的内容为监听地址和端口,还有允许使用本DNS服务的主机,这里我将监听地址设为any,将允许使用本DNS服务设为any,即所有。因为文件过长,分了三张图说明。

SN@4PD`]@VX%%%D~ETG_D6M.png

{LAD]86GFP3$CNLLB]YYO$X.png

11){PJKYZRY[{$C9LVIIPQI.png

3、配置区域配置文件,该文件中有着很多模板,这里复制一个模板进行更改,将域名更改为mumu.com,名字可自行定义,第二行中为master,表示为主服务器,接着我将区域数据配置文件命名为named.mumu.zones,这里没有设置从服务器,所以最后一行不用更改。

    同时,做DNS反向解析需要对区域配置文件和区域数据文件进行配置,这里我们同样可以利用上面的模板进行更改,这里要注意反向区域的文件格式,是由倒序的网络地址和in-addr.arpa组合而成,这里的倒序IP只需要写前三位,最后一位是在数据文件中进行配置的。

F63N%W4%1~HMC`JFJ)P[WSE.png

4、查看解析文件是否有错误

GLO9VM@K2@$OWF23UG~2WM3.png

5、配置区域数据配置文件,在/var/named目录下可以看到named.localhost这个文件,这个正是一个区域数据配置文件,我们复制一个作为模板,将其改名为我们刚才建立的一个域名。区域数据配置文件模板准备好后我们进入其中进行配置,这里面的@代表的意思为域名mumu.com.,所以在开头只需要写一个邮箱名即可,上面的一列蓝色参数指的是同步从服务器的一些时间参数,这里不进行配置,下面的一些参数才是我们需要更改的内容,其中NS(nameserver)指的是域名服务器,MX为邮件交换记录,A(address)表示地址,CNAME表示别名,这里可以按照上面的格式进行配置,配置时可以用tab键对其,保证美观.

E$`L4Z_M}OO}7{B481}A]@0.png

  接着,利用正向区域的文件作为模板复制一份,然后在里面进行更改,因为反向区域我配置的是159.168.192这个网段,所以在这里的域名要写全,接着就按照前面IP地址,后面域名的形式进行配置。

$Z9DUOJ8LRA@L@2LK_Y{W3I.png

6、主配置文件、区域配置文件、区域数据配置文件,三个文件配置完成后需要重启服务器,同时要关闭防火墙,否则DNS服务无法启动。

如果没有信息显示的话说明named.conf配置文件没问题

@ER63M06DJM1[94[OEOU_VM.png

重启服务

QW2)TPJ]8{_C7EU{0`I0$II.png

7、一切配置完成后还需要将DNS服务地址放到/etc/resolv.conf这个文件下,不然他不具备DNS功能。所以,在目录 /etc 下找到resolv.conf 文件并修改。

)1JT[7GMBOSCUCG}0%L92H4.png

8、测试DNS是否能够正常解析,这里解析刚刚设置的几个域名,都可以解析的到。

除了系统提供的一些名称解析命令外,DNS软件包当中提供了一些测试命令,这些命令有nslookup、dig、host。

/etc/hosts :记录hostname对应的ip地址

/etc/resolv.conf :设置DNS服务器的ip地址

/etc/host.conf :指定域名解析的顺序(是从本地的hosts文件解析还是从DNS解析)

Nslookup 语法:

Nslookup [FQDN] [server]

Nslookup

参数说明:

    可以直接在nslookup后加上待查询的主机名称或者ip,【server】可有可无。

    如果在nslookup后面没有加上任何主机名称或ip,那将进入nslookup的查询功能。在nslookup的查询功能当中,可以输入其他参数来进行特殊查询。

nslookup测试:

VOJM(2$@ZY~Z4[)ALBJN0[X.png

注:如果有相关报错信息,则可查看系统日志信息 /var/log/messages。

host 语法:

Host [-a] [FQDN] [server]

Host -l [domain] [server]

参数说明:

-a :代表列出该主机所有的相关资讯,包括IP、TTL等

-l :若后面接的那个domain设定允许allow-transfer时,则列出该domain所管理的所有主机名称对应资料。

Server: 这个参数可有可无,当想要利用非/etc/resolv.conf内的主机来查询主机名称与ip的对应时,就可以利用这个参数了。






dig 语法:

dig  [-t type] name [@server][query options]

查询选项:

         

参数说明:

    @server :如果不想以/etc/resolv.conf来作为dns主机,则可以在此填入其他的ip

    Type :预设是查询A记录,你可以在这里写入其他的记录,如:MX,NS等。此功能亦可使用[-t type]来处理。















猜你喜欢

转载自blog.51cto.com/12948961/2175783