Linux 部署安装DNS(域名解析)系统与理论详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 部署安装DNS(域名解析)系统与理论详解相关的知识,希望对你有一定的参考价值。

本章Blog相关知识点:


    DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,方便用户使用名称的访问互联网。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP或TCP协议之上,使用端口号53


dns查询类型:

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

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

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


FQDN:全称域名,例:www.itwish.cn 的FQDN为 www.itwish.cn.   ,其中  www(主机名).itwish(是二级域名).cn(一级域名).(根)

实现名称到IP解析的有三种方式:

    分散式解决方案:/etc/hosts,不易管理

    集中式解决方案:NIC,如果主机太多,对单一服务的压力太大

    分布式数据库方案:DNS,解决了上俩个方式的不足

dns的工作原理

    1.客户端提起域名解析请求,并将该请求发送给本地dns服务器;本地域名服务器收到该请求时,首先查询本地缓存(该过程属于递归查询 )www.itwish.cn 域名解析  

    2.若本地dns服务器有记录则直接可以返回给客户端;若没有记录则去根DNS服务器请求,根dns服务器返回给本地dns服务器所请求顶级域的dns服务器ip地址。即本地dns服务器会得到.cn域的dns服务器IP

    3.然后再将请求发往cn.域的主dns服务器,若找到则返回请求域名的ip地址 ;若没有找到,则.cn 域dns服务器则返回给本地dns服务器所请二级域的dns服务器ip地址即本地dns服务器会得到itwish.cn域的dns服务器IP

    4.最后再将请求发往itwish.cn.域的主dns服务器,找到www主机ip地址,把IP地址返回给本地dns服务器,同时本地DNS服务器也会缓存一份到本地 (2,3,4步属于迭代查询)

    5.本地dns服务器把查询到的ip地址返回到客户端 。至此完成域名解析的请求


dns域名

    根域:目前有13个根集群服务器,美国10台,日本1台,荷兰1台,瑞典1台

    一级域: .com, .edu, .mil, .gov, .net, .org, cn, .ca, .hk, .tw, .in-addr.arpa等

    二级域   

    最多127级域名

dns解析类型:正反向解析是两个不同的名称空间,是两棵不同的解析树

    正向解析:FQDN --> IP ,域名解析为ip地址

    反向解析:IP ---> FQDN ,ip地址解析为域名

dns服务器的类型:

    主dns服务器:管理和维护所负责解析的域内解析库的服务器,主dns服务器可以是一个或多个区域的权威名称服务器

    辅助dns服务器:用作同一区域中主服务器的备份服务器,从主服务器或从服务器“复制"(区域传输)解析库副本

    缓存名称务器

主从dns服务器:主服务器记录发生变化,会同步到从服务器,(主从复制),实现容错机制

    序列号:解析库版本号,主服务器解析库变化时,其序列递增

    刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔

    重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔

    过期时长:从服务器联系不到主服务器时,多久后停止服务

    否定答案的TTL值

区域传送,辅助DNS服务器从主DNS服务器或其他的辅助DNS服务器请求数据传输过程

    完全区域传送:传送区域的所有数据,AXFR

    增量区域传送:传送区域中改变的数据部分,IXFR

安全控制选项:

    allow-query {} :允许查询的主机;此项仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端

    allow-transfer {}:允许区域传送的主机;通常都需要启用,从服务器

    allow-recursion {可以使用网段}  :允许递归的主机,建议全局使用

    allow-update {}: 允许更新区域数据库中的内容


DNS服务管理


DNS服务管理

  • 实现:bind(Bekerley Internat Name Domain )

  • 服务名:named 

  • 进程:named

  • # chkconfig named on   开机自启named服务 

  • # service named start   启动named 服务

  • 主配置文件:/etc/named.conf ,注:语句后面的 ;  号

[[email protected] named]# vi /etc/named.conf 
options {  #全局选项
    listen-on port 53 { 127.0.0.1;|192.168.4.150; };  #默认监听本机的53号端口,可注释掉或调整为指定ip ,注ip地址后加";"
    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     { localhost|any; };  #授权为指定的主机解析,默认只为本机解析,可调整为any或注释掉
    recursion yes|no;         #递归查询,默认开启 
    dnssec-enable yes;         #sec功能,与安全加密传输相关的选项,可注释掉
    dnssec-validation yes;    #同上一条,可注释掉
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";    #named 启动文件pid 
    session-keyfile "/run/named/session.key";
    allow-transfer { none|ip; };  #允许区域传送的主机;可拒绝所有、指定ip传送,默认开启,建议指定ip进行区域传送
};
logging {  #日志子系统配置
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {  #根区域定义,若要做内网根服务器,要注释掉
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";  #加载指定区域文件
include "/etc/named.root.key";


  • 区域配置文件:/etc/named.rfc1912.zones ,区域类型:hint(根)、master(主)、slave(从)、forward(转发)


[[email protected] ~]# vi /etc/named.rfc1912.zones 

zone "itwish.cn" IN {   #区域记录
        type master|slave|forward|hint;   #类型,主dns服务器、辅助dns服务器、转发dns、根dns服务器
        file "itwish.cn.zone";   #区域数据库文件
        allow-transfer { 192.168.4.120; }; #允许区域传送的主机
};


  • 区域文件目录 : /var/named/  ,注:区域文件的权限为640,属组为named


[[email protected] ~]# vi /var/named/itwish.cn.zone 

$TTL 1D   #默认的TTL值
@       IN SOA  ns1  admin.itwish.cn. (  #SOA记录,记录域中的主DNS服务器,一个区域解析库中只能有且仅能有一个SOA记录,必须位于解析库的第一条记录 
                                        2018061004      ; serial #序列号
                                        1D      ; refresh        #主从复制的时间间隔
                                        1H      ; retry          #如果主从复制失败重试时间
                                        1W      ; expire         #失效时间
                                        3H )    ; minimum        #否定答案的TTL值
        IN      NS      ns1                    #名字服务器记录
        IN      NS      ns2                    #针对itwish.cn区域,ns1与ns2共2台ns服务器,实现主从复制功能
        IN      MX      10      mail           #邮件mx记录 
ns1     IN      A       192.168.4.110          #正向解析记录
ns2     IN      A       192.168.4.120
*       IN      A       192.168.4.110          #泛域名解析,解析未找到的主机则返回该ip地址
www     IN      CNAME   ns1                    #别名记录
mail    IN      A       192.168.4.110
tech    IN      NS      ns3.tech               #子域名字服务器记录
        IN      NS      ns4.tech               #针对tech.itwish.cn区域,ns3与ns4共2台ns服务器,实现主从复制功能
ns3.tech        IN      A       192.168.4.130
ns4.tech        IN      A       192.168.4.140


  • 反向解析区域文件:区域名称以逆向的网络地址,并以.in-addr.arpa为后缀 ,区域文件保存在/var/named/ 目录

    应该具有NS记录,但不能出现MX和A记录

    较常见的为PTR记录

[[email protected] named]# vi /etc/named.rfc1912.zones 
zone "4.168.192.in-addr.arpa" IN {    #定义反向区域名称
        type slave;
        masters { 192.168.4.120; };
        file "slaves/192.168.4.zone";
        allow-transfer { none; };
};

[[email protected] named]# vi /var/named/192.168.4.zone 
$TTL 3H
@       IN SOA  ns1.itwish.cn. adminns.itwish.cn. (  #第一条为SOA记录
                                        20180522012     ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        2W      ; expire
                                        24H )   ; minimum
        IN      NS              ns1.itwish.cn.
        IN      NS              ns2.itwish.cn.
110     IN      PTR             ns1.itwish.cn.     #PTR 记录
120     IN      PTR             ns2.itwish.cn.


  • DNS的数据库文件(区域数据文件):为文本文件,只能包含资源记录或宏定义,每行一个 

资源记录的格式:name① [TTL]②  IN③  Rrtype④ Value⑤     注:FQDN中最后的 . 号

①name:当前区域的名字,列如 www.itwish.cn. ,

         注意:最后的 "." 一定要加,如果不加则会把你的域名当成区域名字,再在后边加上你的默认域名。 “@”:默认,代表当前域名

②TTL (Time- To-Live):表示一条域名解析记录在DNS服务器上缓存时间;例如$TTL 1D的意思是默认的TTL值为1天

③IN:关键字

④dns资源记录类型(Resource Record)

    SOA:Start of Authority  起始授权记录,记录域中的主DNS服务器,一个区域解析库中只能有且仅能有一个SOA记录,必须位于解析库的第一条记录


@       IN SOA  ns1  admin.itwish.cn. (  # SOA记录
                                        2018061004      ; serial #序列号
                                        1D      ; refresh        #主从复制的时间间隔
                                        1H      ; retry          #如果主从复制失败重试时间
                                        1W      ; expire         #失效时间
                                        3H )    ; minimum        #否定答案的TTL值
#注释 
@:区域名称 itwish.cn,通常可简写为@ 符号
IN:关键字,可省略
SOA:资源记录类型
ns1:主dns服务器的名称,可以是相对名称ns1或 FQDN ns1.itwish.cn.
admin.itwish.cn. :邮箱地址,把@转换成. ,如邮箱[email protected] 格式为admin.itwish.cn.

  

     NS :Name server 域名服务器,记录指定负责给定区域的名称服务器 ,注:区域内包含几条NS记录,就需对多台NS服务器配置相对应的A记录 ,示例为2台NS服务器ns1 和ns2 ,就需配置ns1 和ns2 服务器的A记录


        IN      NS      ns1                    #名字服务器记录
        IN      NS      ns2                    #针对itwish.cn区域,ns1与ns2共2台ns服务器,实现主从复制功能
ns1     IN      A       192.168.4.110          #正向解析记录
ns2     IN      A       192.168.4.120        

#注释 
named :可省略,代表itwish.cn 区域  
IN:关键字,可省略
NS:资源记录类型 
ns1:主dns服务器的名称,可以是相对名称ns1或 FQDN ns1.itwish.cn.  
ns2:针对itwish.cn区域,ns1与ns2共2台ns服务器,实现主从复制功能

   

    MX :邮件交换记录 ,记录列出了负责接收发到域中的电子邮件的主机记录


        IN      MX      10      mail           #邮件mx记录 

#注释 
named :可省略,代表itwish.cn 区域  
IN:关键字,可省略
MX:资源记录类型 
mail:邮件交换记录名称,可以是相对名称mail或 FQDN mail.itwish.cn.

   

    A记录 :FQDN --> IP ,列出特定主机名的 IP 地址


ns1     IN      A       192.168.4.110          #正向解析记录
ns2     IN      A       192.168.4.120

#注释 
ns1 :主机名,可以是相对名称ns1或 FQDN ns1.itwish.cn.
IN:关键字,可省略
A:资源记录类型 
192.168.4.110:ip地址

   

    AAAA:FQDN-->ipv6

    PTR:指针记录 IP --> FQDN ,只能定义在反向区域数据文件中,反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成,如 “0.0.127.in-addr.arpa” 反向解析区域


1               PTR     localhost.
#注释 
1:ip地址
IN:关键字,可省略
PTR:资源记录类型 
localhost. :主机名称,可以是相对名称或 FQDN

  

    CNAME :别名记录 ,此记录指定标准主机名的别名


www     IN      CNAME   ns1                    #别名记录
#注释 
www:主机别名,可以是相对名称或 FQDN
IN:关键字,可省略
CNAME:资源记录类型 
ns1 :主机名称,可以是相对名称或 FQDN


⑤Value ,通过对以上记录类型示例分析——针对不同的资源记录类型,Value值也不尽相同

    SOA:有n个数值,主DNS服务器及邮箱地址;最主要的是主DNS服务器,格式可为相对名称或FQDN ,注:FQDN点不可省略

    NS:DNS服务器的FQDN(或相对名称)  如 IN  NS  ns1 ,最后一组ns1代表了Value

    MX:包含优先级和FQDN(或相对名称),如   IN  MX  10  mail ,后面两组10  mail代表了Value

    A:ip地址  ,如  ns1  IN  A  192.168.4.110 ,最后一组 192.168.4.110 代表了Value

    CNAME:FQDN(或相对名称),如 www  IN  CNAME  ns1  ,最后一组ns1代表了Value

    PTR:FQDN ,如  1 IN  PTR  localhost.    ,最后一组 localhost. 代表了Value

  

  • dig 命令,DNS查询使用程序

语法:dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m] [-p port#] [-q name] [-t type] [-x addr]  

    [-y [hmac:]name:key] [-4] [-6] [name] [type] [class] [queryopt...]    

常用选项:

    -x addr:测试反向解析

    -t type:指定查询记录类型

    -t axfr ZONE_NAME @SERVER :模拟区域传送

    -t NS .  :查询根DNS服务器

    -f filename :通过从文件 filename 读取一系列搜索请求加以处理

    -p port#  :查询一个非标准的端口号,标准的DNS端口号 53

    +[no]trace :[不]适用迭代

    +[no]tcp :是否使用tcp

    +[no]recurse:是否使用递归host


  • rndc

    reload: 重载主配置文件和区域解析库文件

    reload zonename: 重载区域解析库文件

    retransfer zonename: 手动启动区域传送,而不管序列号是否增加

    notify zonename: 重新对区域传送发通知

    reconfig: 重载主配置文件

    querylog: 开启或关闭查询日志文件/var/log/message

    trace: 递增debug一个级别

    trace LEVEL: 指定使用的级别

    notrace:将调试级别设置为 0

    flush:清空DNS服务器的所有缓存记录

  • rndc:密钥

    rndc:持有一半密钥,保存于rndc的配置文件中

    BIND:持有一般密钥,保存在主配置文件中

    rndc的配置文件/etc/rndc.conf

    生成密钥 # rndc-confgen -r  /dev/urandom  > /etc/rndc.conf

# named-checkconf:检查配置文件的语法
# named-checkzone "itwish.cn" /var/named/itwish.cn.zone :查询区域数据库文件的语法

# service named configtest  :检查所有区域文件的语法


DNS正向解析,反向解析,主从复制,子域委派,区域转发,acl 及view视图案例


DNS正向解析案例配置


1)安装bind
[[email protected] ~]# yum install bind bind-utils -y   #yum 安装bind 
[[email protected] ~]# chkconfig named on          
[[email protected] ~]# service named start
Starting named: named: already running                     [  OK  ]
[[email protected] named]# ss -tunl     #确认named 进程启用,tcp 及 udp 53端口处于监听状态
Netid  State      Recv-Q Send-Q                                                                                   Local Address:Port                                                                                     Peer Address:Port 
udp    UNCONN     0      0                                                                                       192.168.23.110:53                                                                                                  *:*     
tcp    LISTEN     0      3                                                                                       192.168.23.110:53                                                                                                  *:* 

2)停止iptables 和selinux 功能
[[email protected] ~]# service iptables stop   #停止iptables 服务
[[email protected] ~]# chkconfig iptables off
[[email protected] ~]# vi /etc/selinux/config   
SELINUX=disabled    #修改为disabled,其他行注释掉,禁用selinux功能

3)定义主配置文件
[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.110; };   #定义监听指定ip 53端口
        directory       "/var/named";   
        allow-query     { any; };     #允许给所有客户端请求解析
        recursion yes;                #允许递归
};
include "/etc/named.rfc1912.zones";

3)定义区域配置文件
[[email protected] ~]# vi /etc/named.rfc1912.zones 
zone "itwish.cn" IN {   #区域定义
        type master;    #类型,主服务器
        file "itwish.cn.zone";    #区域数据库文件,指向/var/named/itwish.cn.zone
};

4)新建区域解析数据库文件 /var/named/itwish.cn.zone
[[email protected] ~]# vi /var/named/itwish.cn.zone 
$TTL 1D
@       IN SOA  ns1  admin.itwish.cn. (              #SOA记录
                                        2018061004      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1             #NS记录
        IN      MX      10      mail    #MX记录
ns1     IN      A       192.168.4.110      #正向A解析记录
www     IN      A       192.168.4.110

5)分配权限
[[email protected] ~]# chown root:named /var/named/itwish.cn.zone #修改文件的权限和所属组,保证named进程有此文件的可读属性
[[email protected] ~]# chmod 640 /var/named/itwish.cn.zone
[[email protected] ~]# ll /var/named/itwish.cn.zone
-rw-r-----. 1 root named 120 Jun  11 10:39 /var/named/itwish.cn.zone

6)测试
[[email protected] ~]# named-checkconf     #检查配置文件
[[email protected] ~]# named-checkzone "itwish.cn" /var/named/itwish.cn.zone  #检查itwish.cn 区域配置语法
[[email protected] ~]# service named configtest    # 测试所有配置区域
[[email protected] ~]# rndc reload    #重载配置文件
[[email protected] ~]# dig -t A www.itwish.cn  @192.168.4.110   //使用dig命令测试,返回以下值说明成功

;; QUESTION SECTION:
;www.itwish.cn.            IN    A

;; ANSWER SECTION:
www.itwish.cn.        10800    IN    A    192.168.23.110

[[email protected] ~]# dig -t NS itwish.cn  @192.168.4.110  

;; QUESTION SECTION:
;itwish.cn.            IN    NS

;; ANSWER SECTION:
itwish.cn.        10800    IN    NS    ns1.itwish.cn.


DNS反向解析案例配置


[[email protected] ~]# vi /etc/named.rfc1912.zones  # 加入反向区域
zone "4.168.192.in-addr.arpa" IN {    #地址需要反着写,加上.in-addr.arpa 
        type master;
        file "192.168.4.zone";
};

2)新建区域解析数据库文件
[[email protected] ~]]# vi /var/named/192.168.4.zone 
$TTL 3H
@       IN SOA  ns.itwish.cn. adminns.itwish.cn. (
                                        20180522012     ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        2W      ; expire
                                        24H )   ; minimum
        IN      NS              ns1.itwish.cn.
110     IN      PTR             ns1.itwish.cn.
        IN      PTR             www.itwish.cn.

3)分配权限
[[email protected] ~]# chown root:named /var/named/192.168.4.zone #修改文件的权限和所属组,保证named进程有此文件的可读属性
[[email protected] ~]# chmod 640 /var/named/192.168.4.zone


4)测试
[[email protected] ~]# named-checkconf     #检查配置文件
[[email protected] ~]# named-checkzone "192.168.4.zone" /var/named/192.168.4.zone  #检查192.168.4.zone 区域配置语法
[[email protected] ~]# service named configtest    # 测试所有配置区域
[[email protected] ~]# rndc reload    #重载配置文件

[[email protected] ~]# dig -x 192.168.4.110  @192.168.4.110   #使用dig命令测试,返回以下值说明成功

;; QUESTION SECTION:
;110.4.168.192.in-addr.arpa.    IN    PTR

;; ANSWER SECTION:
110.4.168.192.in-addr.arpa. 10800 IN    PTR    ns1.itwish.cn.
110.4.168.192.in-addr.arpa. 10800 IN    PTR    www.itwish.cn.


区域中添加从服务器的关键项:

    在上级获得授权,允许区域传送:# allow-transfer {127.0.0.1;127.16.100.1}

    在上级区域数据文件中为从服务器添加一条NS记录和对应的A或PTR记录


DNS主从复制案例配置


1)配置主dns服务器
[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.110; };   
        directory       "/var/named";   
        allow-query     { any; };      
        recursion yes;     
};
include "/etc/named.rfc1912.zones";

[[email protected] ~]# vi /etc/named.rfc1912.zones 
zone "itwish.cn" IN {  
        type master;    
        file "itwish.cn.zone";    
        allow-transfer { 192.168.4.120; };   #允许把该区域传送给从DNS服务器192.168.4.120
};

[[email protected] ~]# vi /var/named/itwish.cn.zone 
$TTL 1D
@       IN SOA  ns1  admin.itwish.cn. (              
                                        2018061004      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1   
        IN      NS      ns2             #新增一条ns记录 ,将从DNS服务器的NS记录添加到此
        IN      MX      10      mail   
ns1     IN      A       192.168.4.110   
www     IN      A       192.168.4.110
ns2     IN      A       192.168.23.120   #新增一条A记录 ,将从DNS服务器的A记录添加到此

2)配置从dns服务器
[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.120; };   
        directory       "/var/named";   
        allow-query     { any; };      
        recursion yes;     
};
[[email protected] ~]# vim /etc/named.rfc1912.zones
zone "itwish.cn" IN {
    type slave;                      #类型为从服务器
    masters { 192.168.4.110; };     #同步DNS服务器的IP地址
    file "slaves/itwish.cn.zone";   #数据库文件保存到 /var/named/slaves/ 文件夹下,名字叫itwish.cn.zone
    allow-transfer { none; };    #禁止区域传送
};
[[email protected] ~]# service named  restart    #重启服务
[[email protected] ~]# ls /var/named/slaves/  #可以看到数据库文件则证明已经同步成功dongfei.com.zone.slave
itwish.cn.zone


BIND子域授权的实现,在父域的配置文件中添加如下项:

    授权的子区域名称

    子区域的名称服务器

    子区域的名称服务器的IP地址

    如 tech      IN      NS      ns3.tech.itwish.cn.   

         ns3.tech.itwish.cn.  IN        A    192.168.4.130

区域转发类型:

    1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器,在/etc/named.conf 中配置

    2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高,在区域文件zone 中配置

转发器类型:

    first模式:优先先转发到目标DNS服务器,如果区域不存在,再转发到根上去查询

    onyl模式:只转发到目标DNS服务器,如果目标主机没有此查询的信息则转发失败


DNS子域委派与区域转发案例配置


1)配置dns父域
[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.110; };   
        directory       "/var/named";   
        allow-query     { any; };      
        recursion yes;  
         forward first;  //first模式 ,全局转发
                forwarders { 192.168.4.110;192.168.4.120; };  #目标DNS服务器IP   
};
include "/etc/named.rfc1912.zones";

[[email protected] ~]# vi /etc/named.rfc1912.zones 
zone "itwish.cn" IN {  
        type master;    
        file "itwish.cn.zone";    
        allow-transfer { 192.168.4.120; };   #允许把该区域传送给从DNS服务器192.168.4.120
};

[[email protected] ~]# vi /var/named/itwish.cn.zone   #在区域添加子域NS记录及其A记录
$TTL 1D
@       IN SOA  ns1  admin.itwish.cn. (              
                                        2018061004      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1   
        IN      NS      ns2             
        IN      MX      10      mail   
ns1     IN      A       192.168.4.110   
www     IN      A       192.168.4.110
ns2     IN      A       192.168.23.120  
tech    IN      NS              ns3.tech.itwish.cn.    #将tech子域授权给ns3.tech.itwish.cn.
ns3.tech.itwish.cn.     IN      A               192.168.23.130          #添加相对应的正向解析A记录


2)配置子域及区域转发 
[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.130; };   
        directory       "/var/named";   
        allow-query     { any; };      
        recursion yes;     
};
include "/etc/named.rfc1912.zones"; 

[[email protected] ~]# vi /etc/named.rfc1912.zones 
zone "tech.itwish.cn" IN {  
        type master;    
        file "tech.itwish.cn.zone";    
}; 
zone "itwish.cn" IN {     
        type forward;     #转发区域
        forwarders { 192.168.4.110; 192.168.4.120; };   #转发目标服务器
        forward first;      #优先先转发到目标DNS服务器,如果区域不存在,再转发到根上去查询
}; 

[[email protected] named]# vi /var/named/tech.itwish.cn.zone    #配置子域区域文件
$TTL 10800      ; 3 hours
tech.itwish.cn          IN SOA  ns3.tech.itwish.cn. adminns.tech.itwish.cn. (
                                1884700031 ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                1209600    ; expire (2 weeks)
                                86400      ; minimum (1 day)
                                )
                        NS      ns3.tech.itwish.cn.
                        MX      10 mail.tech.itwish.cn.
$ORIGIN tech.itwish.cn.
mail                    A       192.168.23.130
ns3                     A       192.168.23.130
www                     A       192.168.23.110


acl: 把一个或多个地址归并为一个集合,并通过一个统一的名称调用;只能先定义,后使用,因此一般定义在配置文件中,处于options的前面

格式:

    acl acl_name {

        ip;     

        net/prelen;

        ……

    };

bind有四个内置的acl:

    none: 没有一个主机

    any: 任意主机

    localhost: 本机

    localnet: 本机的IP同掩码运算后得到的网络地址

view:视图:实现智能DNS

    一个bind服务器可定义多个view,每个view中可定义一个或多个zone

    每个view用来匹配一组客户端

    多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件

注意:

    (1) 一旦启用了view,所有的zone都只能定义在view中

    (2) 仅在允许递归请求的客户端所在view中定义根区域

    (3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表


[[email protected] named]# vi /etc/named.rfc1912.zones 

acl uniom {   #定义acl ,注意acl的匹配顺序关系,至上而下
        192.168.4.0/24 ;
};
acl telom {
        172.16.10.0/24;
};
acl othom {
        any;
};
view uninet {   #定义view 视图 ,所有的zone都需定义在view中
match-clients { uniom; };   #匹配的acl 选项
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
 zone "itwish.cn" IN {
        type master;
        file "itwish.cn.zone.uniom";
 };
};

view telnet {
match-clients { telom; };
 zone "itwish.cn" IN {
        type master;
        file "itwish.cn.zone.telom";
 };
view anynet {
match-clients { othom; };
 zone "itwish.cn" IN {
        type master;
        file "itwish.cn.zone.uniom";
 };
};

[[email protected] named]# vi itwish.cn.zone.uniom 

$TTL 1D
@       IN SOA  ns1  admin.itwish.cn. (
                                        2018061004      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1
        IN      MX      10      mail
ns1     IN      A       192.168.4.110
www     IN      A       192.168.4.120

[[email protected] named]# vi itwish.cn.zone.telom 
$TTL 1D
@       IN SOA  ns1  admin.itwish.cn. (
                                        2018061004      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1
        IN      MX      10      mail
ns1     IN      A       172.16.10.1
www     IN      A       172.16.10.2

[[email protected] named]# dig -t A www.itwish.cn @172.16.10.1  #确认通过172.16.10.x的客户端进行访问,获取的ip 为172.16.10.2

;; QUESTION SECTION:
;www.itwish.cn.            IN    A

;; ANSWER SECTION:
www.itwish.cn.        86400    IN    A    172.16.10.2

;; AUTHORITY SECTION:
itwish.cn.        86400    IN    NS    ns1.itwish.cn.

;; ADDITIONAL SECTION:
ns1.itwish.cn.        86400    IN    A    172.16.10.1

[[email protected] named]# dig -t A www.itwish.cn @192.168.4.110  #确认通过192.168.4.x的客户端进行访问,获取的ip 为192.168.10.120

;; QUESTION SECTION:
;www.itwish.cn.            IN    A

;; ANSWER SECTION:
www.itwish.cn.        86400    IN    A    192.168.4.120

;; AUTHORITY SECTION:
itwish.cn.        86400    IN    NS    ns1.itwish.cn.

;; ADDITIONAL SECTION:
ns1.itwish.cn.        86400    IN    A    192.168.4.110


部署安装DNS(域名解析)系统


部署实验:

    1、部署根域名解析服务器

    2、部署一级域名.cn 域名解析服务器

    3、部署二级域名.itwish 和.goodoing 域名解析系统,ns1 与 ns2 服务器实现主从复制功能

    4、部署子域tech域名解析服务器,ns3 与 ns4 服务器实现主从复制 ,部署转发区域itwish.cn 及goodoing.cn ,转发服务器为ns1 和 ns2

    5、部署缓存域名解析服务器,client用户dns 地址指向 192.168.4.100 ,测试解析

实验拓扑:


技术分享图片


1)对所有服务器,安装bind组件,禁用selinux功能并停止iptables功能


# yum install bind bind-utils -y   #yum安装bind          
# service named start  
# service iptables stop   #停止iptables 服务
# chkconfig iptables off
# vi /etc/selinux/config   
SELINUX=disabled    //修改为disabled ,其他行注释掉 ,禁用selinux功能


2)部署根域名解析服务器


[[email protected] named]# vi /etc/named.conf
options {

        listen-on port 53 { 192.168.4.150; };
        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";
        recursion yes;
};
include "/etc/named.rfc1912.zones";

[[email protected] named]# vi /etc/named.rfc1912.zones 

zone "." IN {          #增加根域
        type master;
        file "root.zone";
        allow-transfer { none; };
};

[[email protected] named]# vi /var/named/root.zone   #定义根域数据库文件
$TTL 1D
@       IN SOA  root. radmin. (
                                        2018061005      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      root.
root.   IN      A       192.168.4.150
cn      IN      NS      dns.cn.          #定义子域 cn
dns.cn. IN      A       192.168.4.160

[[email protected] ~]# chown root:named /var/named/*.zone #修改文件的权限和所属组,保证named进程有此文件的可读属性
[[email protected] ~]# chmod 640 /var/named/*.zone
[[email protected] ~]# named-checkconf     #检查配置文件
[[email protected] ~]# service named configtest    # 测试所有配置区域
[[email protected] ~]# rndc reload    #重载配置文件


3)部署cn域名解析服务器


[[email protected] named]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.160; };
        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";
        recursion yes;

};
include "/etc/named.rfc112.zones";

[[email protected] named]# vi /etc/named.rfc1912.zones 

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

[[email protected] named]# vi /var/named/cn.zone 
$TTL 1D
@       IN SOA  dns  admin.cn. (
                                        2018061004      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns
dns     IN      A       192.168.4.160
itwish  IN      NS      ns1.itwish
        IN      NS      ns2.itwish
ns1.itwish.cn.  IN      A       192.168.4.110
ns2.itwish.cn.  IN      A       192.168.4.120

[[email protected] ~]# chown root:named /var/named/*.zone 
[[email protected] ~]# chmod 640 /var/named/*.zone
[[email protected]~]# named-checkconf     
[[email protected] ~]# service named configtest   
[[email protected] ~]# rndc reload


4)部署ns1域名解析服务器


[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.110; };
        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";
        recursion yes;

};
include "/etc/named.rfc1912.zones";

[[email protected] ~]# vi /etc/named.rfc1912.zones  
zone "itwish.cn" IN {
        type master;
        file "itwish.cn.zone";
        allow-transfer { 192.168.4.120; };
};
zone "goodoing.cn" IN {
        type slave;
        masters { 192.168.4.120; };
        file "slaves/goodoing.cn.zone";
        allow-transfer { none; };
};

[[email protected] ~]# vi /var/named/itwish.cn.zone 
$TTL 1D
@       IN SOA  ns1  admin.itwish.cn. (
                                        2018061004      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1
        IN      NS      ns2
        IN      MX      10      mail
ns1     IN      A       192.168.4.110
ns2     IN      A       192.168.4.120
www     IN      A       192.168.4.110
mail    IN      A       192.168.4.110
tech    IN      NS      ns3.tech
        IN      NS      ns4.tech
ns3.tech        IN      A       192.168.4.130
ns4.tech        IN      A       192.168.4.140

[[email protected] ~]# chown root:named /var/named/*.zone 
[[email protected] ~]# chmod 640 /var/named/*.zone
[[email protected] ~]# named-checkconf     
[[email protected] ~]# service named configtest   
[[email protected] ~]# rndc reload


5)部署ns2域名解析服务器


[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.120; };
        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";
        recursion yes;

};
include "/etc/named.rfc1912.zones";

[[email protected] ~]# vi /etc/named.rfc1912.zones 
zone "goodoing.cn" IN {
        type master;
        file "goodoing.cn.zone";
        allow-transfer { 192.168.4.110; };
};
zone "itwish.cn" IN {
        type slave;
        masters { 192.168.4.110; };
        file "slaves/itwish.cn.zone";
        allow-transfer { none; };
};

[[email protected] ~]# vi /var/named/goodoing.cn.zone 
$TTL 1D
@       IN SOA  ns2  admin.goodoing.cn. (
                                        2018061004      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1
        IN      NS      ns2
        IN      MX      10      mail
ns1     IN      A       192.168.4.110
ns2     IN      A       192.168.4.120
www     IN      A       192.168.4.120
mail    IN      A       192.168.4.120
tech    IN      NS      ns3.tech
        IN      NS      ns4.tech
ns3.tech        IN      A       192.168.4.130
ns4.tech        IN      A       192.168.4.140

[[email protected] ~]# chown root:named /var/named/*.zone 
[[email protected] ~]# chmod 640 /var/named/*.zone
[[email protected] ~]# named-checkconf     
[[email protected] ~]# service named configtest   
[[email protected] ~]# rndc reload


6)部署ns3域名解析服务器


[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.130; };
        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";
        recursion yes;

};
include "/etc/named.rfc1912.zones";

[[email protected] ~]# vi /etc/named.rfc1912.zones 
zone "tech.itwish.cn" IN {
        type master;
        file "tech.itwish.cn.zone";
        allow-transfer { 192.168.4.140; };
};
zone "tech.goodoing.cn" IN {
        type slave;
        masters { 192.168.4.140; };
        file "slaves/tech.goodoing.cn.zone";
        allow-transfer { none; };
};
zone "itwish.cn" IN {
        type forward;
        forward first;
        forwarders { 192.168.4.110; 192.168.4.120; };
};
zone "goodoing.cn" IN {                     
        type forward;
        forward first;
        forwarders { 192.168.4.110; 192.168.4.120; };
};

[[email protected] ~]# vi /var/named/tech.itwish.cn.zone 
$TTL 1D
@       IN SOA  ns3  admin.tech.itwish.cn. (
                                        2018061002      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                IN      NS      ns3
                IN      NS      ns4
        IN      MX      10      mail
ns3     IN      A       192.168.4.130
ns4     IN      A       192.168.4.140
www     IN      A       192.168.4.130
mail    IN      A       192.168.4.130

[[email protected] ~]# chown root:named /var/named/*.zone 
[[email protected] ~]# chmod 640 /var/named/*.zone
[[email protected] ~]# named-checkconf     
[[email protected] ~]# service named configtest   
[[email protected] ~]# rndc reload


7)部署ns4域名解析服务器


[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.140; };
        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";
        recursion yes;

};
include "/etc/named.rfc1912.zones";

[[email protected] ~]# vi /etc/named.rfc1912.zones 
zone "tech.goodoing.cn" IN {
        type master;
        file "tech.goodoing.cn.zone";
        allow-transfer { 192.168.4.130; };
};
zone "tech.itwish.cn" IN {
        type slave;
        masters { 192.168.4.130; };
        file "slaves/tech.itwish.cn.zone";
        allow-transfer { none; };
};
zone "itwish.cn" IN {
        type forward;
        forward first;
        forwarders { 192.168.4.110; 192.168.4.120; };
};
zone "goodoing.cn" IN {                     
        type forward;
        forward first;
        forwarders { 192.168.4.110; 192.168.4.120; };
};

[[email protected] ~]# vi /var/named/tech.goodoing.cn.zone 
$TTL 1D
@       IN SOA  ns4  admin.tech.goodoing.cn. (
                                        2018061002      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                IN      NS      ns3
                IN      NS      ns4
        IN      MX      10      mail
ns3     IN      A       192.168.4.130
ns4     IN      A       192.168.4.140
www     IN      A       192.168.4.130
mail    IN      A       192.168.4.130

[[email protected] ~]# chown root:named /var/named/*.zone 
[[email protected] ~]# chmod 640 /var/named/*.zone
[[email protected] ~]# named-checkconf     
[[email protected] ~]# service named configtest   
[[email protected] ~]# rndc reload


8)配置cach缓存DNS服务器,测试域名解析


[[email protected] ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 192.168.4.100; };
        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";
        recursion yes;

};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";

[[email protected] ~]# vi /var/named/named.ca  
.                        3600000      NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     192.168.4.150    #将根服务器指向我们自己搭建的根DNS服务器

[[email protected] named]# dig -t NS .

;; QUESTION SECTION:
;.                IN    NS

;; ANSWER SECTION:
.            82572    IN    NS    root.


[[email protected] named]# dig -t NS cn

;; QUESTION SECTION:
;cn.                IN    NS

;; ANSWER SECTION:
cn.            86400    IN    NS    dns.cn.

[[email protected] named]# dig -t NS itwish.cn

;; QUESTION SECTION:
;itwish.cn.            IN    NS

;; ANSWER SECTION:
itwish.cn.        86400    IN    NS    ns1.itwish.cn.
itwish.cn.        86400    IN    NS    ns2.itwish.cn.


[[email protected] named]# dig -t NS tech.itwish.cn

;; QUESTION SECTION:
;tech.itwish.cn.            IN    NS

;; ANSWER SECTION:
tech.itwish.cn.        86400    IN    NS    ns4.tech.itwish.cn.
tech.itwish.cn.        86400    IN    NS    ns3.tech.itwish.cn.


[[email protected] named]# dig -t NS tech.goodoing.cn

;; QUESTION SECTION:
;tech.goodoing.cn.        IN    NS

;; ANSWER SECTION:
tech.goodoing.cn.    86400    IN    NS    ns4.tech.goodoing.cn.
tech.goodoing.cn.    86400    IN    NS    ns3.tech.goodoing.cn.


[[email protected] named]# dig -t A www.tech.goodoing.cn

;; QUESTION SECTION:
;www.tech.goodoing.cn.        IN    A

;; ANSWER SECTION:
www.tech.goodoing.cn.    86400    IN    A    192.168.4.130


至此,linux DNS系统部署并调配完成,实现了内网根域及各主机的解析。


以上是关于Linux 部署安装DNS(域名解析)系统与理论详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux之bind服务(DNS)部署配置

DNS域名解析服务(理论秘籍大全)

Linux中搭建DNS服务器

linux-DNS域名正向解析服务程序BIND安装与配置

Linux (二十三)剖析DNS服务主从分离反向解析等部署方式

企业dns服务器部署详解(下)—dns双向解析/dns集群/ddns安全动态域名解析