DNS基本原理与配置

一、DNS( Domain Name System)--域名系统,是一种组织成域层次结构的计算机和网络服务系统,用于TCP/IP网络,提供将主机名和域名与IP地址相互转换的服务。它的基本工作原理用下图来表示。

域名虽然便于人们记忆,但计算机只能通过IP地址互相通信, 它们之间的转换工作就称为域名解析,而DNS就是提供域名解析服务的系统.DNS是一个具有树状层次结构的联机分布式数据库系统,是C/S架构,其树状层次结构

二、域与区域

对于常见的www.magedu.com,它不是一个域名,而是一个主机名,也称为FQDN,即Full Qualified Domain Name完全限定域名,

树状层次中最顶端的称为根域(.),根域下面的几个域称为顶级域(Top level Domain),简写为TLD,

TLD:

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

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

反向域: IP --> FQDN

再下面是二级域,三级域,...

对于分布式数据库系统,每个域名都只负责其直接下级域名的解析,在.magedu下有一台为www的主机,那它的FQDN即为www.magedu.com,因为DNS的主机名是自底向上的,授权是自底向下的.

DNS中域与区域的区别:

对于DNS来说,域是一个逻辑概念,区域是一个物理概念

区域传送的类型:(主从服务器进行数据传送时)

完全区域传送: axfr

增量区域传送: ixfr

区域类型:

主区域: master

从区域: slave

提示区域: hint,根域为hint区域

转发区域: forward

三、区域文件

对于一个域来说,一般都有域本身负责解析域的数据库,这样的一个数据库文件就是域的区域文件,数据库中的每一行(每一个条目)称作一个资源记录(resource record),简写为RR。这样的一个数据库文件就是域的区域文件,在区域文件中分号代表注释。

资源记录的格式:

NAME(名称)    [TTL(缓存时间)]    IN(internet上的RR)     RRT(资源记录类型)    VALUE(值)

www.magedu.com.                     IN                        A                1.1.1.1

1.1.1.1                             IN                        A                www.magedu.com.

注意:如果TTL值均相同,可以在RR上方统一定义TTL值,对其下面的条目均有效.

资源记录类型:

SOA(START Of Authority):

ZONE NAME     TTL    IN    SOA    FQDN    ADMINISTRATOR_MAILBOX(

serial number(最长10位数字)

refresh

retry

expire

na ttl)

注意:

1、这条资源记录类型必须是区域文件的第一条;

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

3、邮箱格式: [email protected] --> admin.magedu.com.

NS(nameserver): ZONE NAME --> FQDN

magedu.com.    600    IN    NS    ns.magedu.com.

ns.magedu.com.    600    IN    A    1.1.1.2

MX(Mail eXchange): ZONE NAME --> FQDN

ZONE NAME    TTL    IN    MX    PRIORITY(优先级)    VALUE

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

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

mail.magedu.com.    600    IN    1.1.1.3

A(Adress): FQDN --> ipv4

AAAA: FQDN --> ipv6

PTR(pointer): IP --> FQDN

CNAME(canonical name):FQDN --> FQDN

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

四、DNS服务器的递归和迭代查询

在.magedu域内配置一台主机专门用于DNS服务的请求和解析, 主机名为ns.magedu.com,同时在.magedu域下有一台主机, 主机名为www.magedu.com, 这台主机想请求解析www.fin.example.com的IP地址,过程如下:

1、www.magedu.com把请求直接提交给DNS服务器ns.magedu.com;

2、ns.magedu.com本身并不负责www.fin.example.com的解析,同时本地也没有缓存, 于是就把请求直接交给根域;

3、根域接到请求,会把负责解析.com域的DNS服务器作为结果返回给ns.magedu.com,这时,ns.magedu.com会继续向.com的DNS服务器发送请求,得到一个负责解析.example.com域的DNS服务器的结果;

4、继续发送请求,直到返回www.fin.example.com的IP地址结果;

5、ns.magedu.com再将返回的结果发送给www.magedu.com,完成请求.

综上, www.magedu.com向ns.magedu.com请求的查询过程称为递归查询, 而ns.magedu.com向根域及其子域请求的查询过程称为迭代查询,一般情况下域名服务器对于本地客户端(stub resolver)的请求都是递归查询,对于DNS服务器的请求都是迭代查询.

五、DNS服务器的类型

主服务器

从服务器

缓存服务器

转发服务器

六、DNS服务器的安装与配置

1、简单配置

目前使用的最多的DNS服务器软件是BIND(Berkeley Internet Name Domain),在RED HAT5.8上安装bind97配置DNS服务器.

首先配置好yum源,安装bind97和bind97-utils

    # yum -y install bind97 bind97-utils

编辑配置文件/etc/named.conf,定义区域

    options{
        directory    "/var/named";
        allow-resursion { 192.168.1.0/24; 127.0.0.0/8; };
        notify yes;
           };
    
    zone "." IN {
        type hint;
        file "named.ca";
        };
        
    zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-tranfer{none;};
    };
    
    zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-tranfer{none;};
        };
        
    zone "51test.com" IN {
        type master;
        file "51test.com.zone";
        allow-tranfer{ 192.168.1.102;};
    };
    zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "1.168.192.in-addr.arpa.zone";
        allow-tranfer{ 192.168.1.102;};
    };

手动编辑区域数据文件

    # vim /var/named/51test.com.zone
    
    $TTL 86400
    51test.com.    IN    SOA    ns1.51test.com.    mail.51test.com. (
                                2017072502
                                2H
                                60
                                7D
                                1D)
                   IN    NS    ns1.51test.com.
                   IN    MX 2    mail.51test.com
    ns1.51test.com.    IN    A    192.168.1.101
    mail.51test.com.    IN    A    192.168.1.101
    www.51test.com.    IN    A    192.168.1.102
    www.51test.com.    IN    A    192.168.1.103
    www2.51test.com.    IN    CNAME    www.51test.com.
 # vim /var/named/1.168.192.in-addr.arpa.zone
    
    $TTL 86400
    @    IN    SOA    ns1.51test.com.    mail.51test.com. (
                                2017072502
                                2H
                                60
                                7D
                                1D)
                   IN    NS    ns1.51test.com.
    101    IN    PTR    ns1.51test.com.
    101    IN    PTR    mail.51test.com
    102    IN    PTR    www.51test.com.
    103    IN    PTR    www.51test.com.

修改区域数据文件的属性

# chmod 640 /var/named/51test.com.zone

# chown root.named /var/named/51test.com.zone

# chmod 640 /var/named/1.168.192.in-addr.arpa.zone

# chown root.named /var/named/1.168.192.in-addr.arpa.zone

检查配置文件和区域数据文件是否有语法错误

# named_checkconf

# named_checkzone "51test.com" /var/named/51test.com.zone

# named_checkzone "1.168.192.in-ddr.arpa" /var/named/1.168.192.in-addr.arpa.zone

启动服务,开始用dig命令进行查询测试

dig 简单用法:

dig -t RT NAME @IP

dig -x IP  根据IP查找FQDN, 但需要定义反向区域数据文件

    # service named start
    # dig -t A www.51test.com @192.168.1.101 
        一个FQDN若有两个IP地址,则轮流返回
    # dig -t CNAME www2.51test.com @192.168.1.101 
    # dig -x 192.168.1.103  
    
    # dig +norecurse -t A www.sohu.com @192.168.1.101 非递归查询
    # dig +recurse -t A www.sohu.com @192.168.1.101  若在配置文件中定义不予递归,则不返回任何结果
    # dig +trace -t A www.sohu.com @192.168.1.101   查询的详细过程
    
    # dig -A axfr 51test.com
    # dig -A ixfr=serial number 51test.com  区域传送不安全

2、主从服务器配置

配置从服务器,其IP地址为192.168.1.102

注意: 在定义从服务器时,也要把从服务器的NS记录写入区域数据文件,即在主服务器上编辑正向区域文件加入条目:

           IN    NS    ns2
     ns2    IN    A    192.168.1.102

在反向区域数据文件中加入条目:

           IN    NS    ns2.51test.com.
     102    IN    PTR   ns2.51test.com.

安装bind97,bind97-utils

编辑配置文件/etc/named.conf

     options{
        directory    "/var/named";
        allow-resursion { 192.168.1.0/24; 127.0.0.0/8; };
           };
    
    zone "." IN {
        type hint;
        file "named.ca";
        };
        
    zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-tranfer{none;};
    };
    
    zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-tranfer{none;};
        };
        
    zone "51test.com" IN {
        type slave;
        file "slaves/51test.com.zone";
        master{192.168.1.101;};
        allow-tranfer{ none;};
    };
    zone "1.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/1.168.192.in-addr.arpa.zone";
        master{192.168.1.101;};
        allow-tranfer{ none;};
    };

启动服务,开始完全同步

在主服务器上编辑区域文件,增加条目,观察从服务器是否可以完成增量区域传送就可以了.

3、正向区域授权配置

有时候会希望在域51test.com下面注册两个子域,分别为fin 和market,则此时正向区域数据文件中添加条目

(注意:如果子域有多台服务器,则需要在父域的区域数据文件中添加多条记录,子域的IP可以不与父域在同一网段中)

    fin.51test.com.         IN    NS    ns1.fin.51test.com.
    ns1.fin.51test.com.     IN    A    192.168.1.106
    
    market.51test.com.        IN    NS    ns1.market.51test.com.
    ns1.market.51test.com.    IN    A   172.16.100.1

需要在另外一台主机上配置子域DNS服务器,与上述过程相同

编辑配置文件/etc/named.conf

     options{
        directory    "/var/named";
           };
    
    zone "." IN {
        type hint;
        file "named.ca";
        };
        
    zone "localhost" IN {
        type master;
        file "named.localhost";
    };
    
    zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        };
        
    zone "fin.51test.com" IN {
        type master;
        file "fin.51test.com.zone";
    };

手动编辑子域的区域数据文件

    # vim /var/named/fin.51test.com.zone
    
    $TTL 86400
    fin.51test.com.    IN    SOA    ns1.fin.51test.com.    mail.fin.51test.com. (
                                2017072502
                                2H
                                60
                                7D
                                1D)
                   IN    NS      ns1
                   IN    MX 2    mail
    ns1     IN    A    192.168.1.106
    mail    IN    A    192.168.1.106
    www     IN    A    192.168.1.107

修改区域数据文件的属组为named,权限为640

此时就可以用dig命令进行查询测试了

通常情况下子域是不知道父域的地址的,但是可以通过定义一个转发区域,直接把父域的IP地址告诉给子域,

全局转发,除了对自己所在域的请求,否则对于其他域的请求都转发,在/etc/named.conf中的options中定义

    forward first;
    forwarders { 192.168.1.101;};

若只对对其父域51test.com的请求进行转发,对其他域的请求就不再转发, 则需要在配置文件中单独定义一个域

    zone "51test.com" IN {
        type forward;
        forward first;
        forwarders {192.168.1.101; };
    };

1、简化配置文件/etc/named.conf

在配置文件中定义列表,可以把一类内容写入这个列表,格式为

acl ACL_NAME {

172.168.0.0/16;

127.0.0.0/8;

};

注意: acl定义在配置文件的最上面

用法,如:

acl innet {

172.168.0.0/16;

127.0.0.0/8;

};

allow-recursion { innet; };

4、智能DNS配置

由于中国有两个运营商,telecom和unicom,这是两个独立的网络,在实际应用中,经常把全国划分为多个分区,在每个分区中有其对应的DNS服务器,根据客户端来源的不同返回指定的解析结果,这样的机制称为智能DNS.

具体实现: DNS可以在自己的服务器内部做视图.一个区域需要定义多个数据区域文件对应不同的客户端来源,也就是将一个区域分割成多个区域.

现在将192.168.1.0/24的网络定义为电信的用户,其他客户端都定义为联通的用户

DNS定义视图时,格式为

view VIEW_NAME{};

注意: 所有的区域都必须定义在视图中,根区域只需要定义在需要递归的视图中

    acl innet {
        192.168.1.0/24;
        127.0.0.0/8;
    };
    options{
        directory    "/var/named";
        allow-recursion {innet;};
           };
    view telecom {
        match-clients {innet;}; 
        zone "." IN {
            type hint;
            file "named.ca";
        };   
        zone "telecom.51test.com" IN {
            type master;
            file "51test.com.zone";
        };
    };
    
     view unicom {
        match-clients {any;};    
        zone "unicom.51test.com" IN {
            type master;
            file "unicom.51test.com.zone";
        };
    };

编辑区域数据文件

    # vim /var/named/telecom.51test.com.zone
    
    $TTL 46300
    @        IN    SOA    ns1.51test.com.    mail.51test.com.    (
                            2015072501
                              1H
                              5M
                              3D
                              2D)
              IN    NS    ns1
              IN    MX 2    mail
     ns1     IN    A    192.168.1.101
     www     IN    A    192.168.1.102
     mail    IN    A    192.168.1.101

修改属组为named,权限为640

# chown :named /var/named/telecom.51test.com.zone

# chmod 640 /var/named/telecom.51test.com.zone

    # vim /var/named/unicom.51test.com.zone
    
    $TTL 46300
    @        IN    SOA    ns1.51test.com.    mail.51test.com.    (
                            2015072501
                              1H
                              5M
                              3D
                              2D)
              IN    NS    ns1
              IN    MX 2    mail
     ns1     IN    A    192.168.1.101
     www     IN    A    192.168.1.106
     mail    IN    A    192.168.1.107

修改属组为named,权限为640

# chown :named /var/named/unicom.51test.com.zone

# chmod 640 /var/named/unicom.51test.com.zone

启动DNS服务,测试查询解析

注意: 如果解析一个域,但不需要返回不同的结果,那这个域需要定义在所有的view中,不过区域数据文件是一样的就可以了

时间: 2024-10-11 10:24:09

DNS基本原理与配置的相关文章

DNS基本原理及bind配置

dns基本原理 1.     当客户机Client需要访问某个域名时,会首先查看本地hosts文件查询相关记录,如果有则直接解析. 2.     如果在本机hosts文件中没有找到相关记录,则将请求发送至本地DNS域名服务器. 3.     本地DNS服务器接收到请求后会先查询本地缓存localCache如果缓存中有该项记录则直接返回结果. 4.     如果本地DNS服务器在Local Cache中未查询到相关信息则本地域名服务器就会直接把请求发送给根域名服务器. 5.     根服务器通过请

DNS基本原理

首先来看DNS中常用的2种查询模式 1.递归查询: 一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机: 2.迭代查询(反复查询):  一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求: DNS域名解析过程 主机向本地域名服务器的查询采用递归查询: 主机向本地域名服务器的查询一般都是采用递归查询.如果主机所询

DNS基本原理及正反向解析

1.DNS基本原理 DNS:Domain Name Service,域名解析服务 监听端口:udp/53,tcp/53 应用程序:bind www.magedu.com.: FQDN Full Qualified Domain Name 完全合格域名/全称域名 名称解析:主机名解析 把一种名称转换为另一种名称的过程 名称:字串.数字 解析库:某种存储 username <--> uid 某种存储: 文本文件 关系型数据库 LDAP:Lightweight Directory Access Pr

自动化安装之DHCP基本原理和配置

DHCP:(Dynamic Host Configuration Protocol) C/S架构 原理: 当DHCP客户端启动时,它会自动与DHCP服务器通信,由DHCP服务器为DHCP客户端提供自动分配IP地址的服务.当然高级的DHCP,不光只是分配地址这么简单,今天我们的课程只是架设一个普通的DHCP的服务器, client端能获取到上网必须的网络配置信息.安装了DHCP服务软件的服务器称为DHCP服务器,而启用了DHCP功能的客户机称为DHCP客户端,DHCP服务器是以地址租约的方式为DH

DNS服务的配置与验证

DNS服务的配置与验证 一.DNS的用途    DNS服务器(Domain Name System)即域名解析服务器,因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53. 二.DNS服务的安装 检查是否已安装bind软件 三.DNS的配置 基于案例的配置: 案例说明: 服务器IP:     192.

CenOS 6 DNS服务器简要配置

yum install bind* 一.修改下面配置文件 vi /etc/named.conf options { listen-on port 53 { 192.168.100.210; }; listen-on-v6 port 53 { ::1; }; directory       "/var/named"; dump-file       "/var/named/data/cache_dump.db"; statistics-file "/var/

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DNS的基础配置

一.DNS简介 1.DNS:Domain Name System(域名系统),是互联网上IP和域名相互解析的分布式层级结构的数据库.DNS的出现能够使用户更好的更加方便的访问互联网,不用记IP地址来访问互联网,可以通过人类更容易记住域名来访问互联网. 2.DNS是一种C/S架构的服务器,客户机用于一个名字对应的地址,而服务器是为客户机提供查询的,查询由两种机制:迭代查询和递归查询 迭代查询:一般是DNS服务器与DNS服务器之间的查询方式 递归查询:一般是客户机与服务器之间的查询方式 3.DNS是

DNS和Bind配置指南

/////////////////////////////目录//////////////////////////////////////一.DNS原理相关二.使用bind搭建最简单的DNS服务器三.使用bind搭建可以解析自己添加的域名的DNS服务器四.配置DNS转发五.配置主从配置主从六.测试主从同步 拓展学习:DNS and BIND配置指南  http://anyisalin.blog.51cto.com/10917514/1753638bind配置视图(view)   http://w

DNS安装与配置

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记IP数串. DNS解析分正向解析和反向解析 DNS的解析过程,有迭代查询和递归查询 迭代查询就是当该DNS服务器不能解析到客户端发送过来的请求时候,就把该请求递交给根服务器,有根做解析,递交给顶级域服务器,然后一层一层查询,直到找到最后的主机查询. 递归查询就是客户端想本地DNS服务器提交查询请求,然后该DNS服务器,一次性给出答案. DNS的安