DNS服务搭建详解


个人博客: http://www.johnlee.ink/

一、DNS域名:

根域名:.
一级域名:Top Level Domain: tld
com(公司)、edu(教育)、mil(军事)、gov(政府)、net、org(组织)、int(反向)、arpa(反向)
二级域名:

最多127级域名

二、DNS查询类型:

递归查询
迭代查询

三、解析类型:

FQDN --> IP
IP --> FQDN

四、DNS服务器类型

主DNS服务器: 管理和维护所负责解析的域内解析库的服务器
从DNS服务器: 从主服务器或从服务器“复制”(区域传输)解析库副本
缓存DNS服务器(转发器)

(一)主从服务器工作原理:
1.主从服务器同步机制:
推:主服务器节点发生变化立即主动推送给从服务器
拉:从服务器定时从主服务器询问拉取数据

2.区域传输:
完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容

3.解析答案:
肯定答案:
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:
非权威答案:

4.区域解析库: 由众多资源记录(RR)组成:
资源记录:Resource Record, RR

5.记录类型:
SOA: Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
NS: Name Server,专用于标明当前区域的DNS服务器
A: FQDN到IPv4地址解析;
AAAA: FQDN到IPv6地址解析;
PTR: IP 到FQDN域名解析;
CNAME: Canonical Name,别名记录
MX: Mail eXchanger,邮件交换器
TXT: 对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等

6.资源记录定义的格式:
语法:name [TTL] IN rr_type value
(1)name: FQDN全称域名,如www.test.com. ;当前域的名称可省略不写,直接写成www系统会自动补全;@可用于引用当前区域的名字;
(2) TTL: 存在的资源记录缓存时长;可从全局继承,后面每条记录可省略,如有特殊设定,则需要在记录上显示添加;全局设定如:$TTL 1D ;默认单位为秒;
(3)IN: 表示Internet资源,照抄即可,条目中可继承上一条记录,省略不写
(4)rr_type: 资源记录类型,如A,CNAME,NS等
(5)value: 资源记录类型对应的值,如A记录对应的值为域名解析对应的IP地址

每条资源记录中:
(1)正向解析中,同一个域名可以通过多条记录对应多个IP,此时DNS服务器会以轮询方式响应,实现负载均衡
(2)同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

区域数据库文件基本格式:

$TTL 1D
@       IN SOA  master  admin (
                  0       ; serial   #;serial 表示注释
                  1D      ; refresh
                  1H      ; retry
                  1W      ; expire
                  3H )    ; minimum                                                                                                                  
       NS      master
www    A   192.168.37.100

可简写为:

$TTL 1D
@       IN SOA  master  admin ( 0 1D 1H 1W 3H )                                                                                                               
        NS      master
www     A       192.168.37.100

SOA记录格式
@ :表示当前域
$TTL: 表示自己去其他DNS的域名解析的结果缓存的时间;1D表示一天,默认单位是秒
IN:表示intnet的类型;可以继承上一条记录的;
SOA:表示资源记录类型;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
serial:序列号主服务器解析库变化时,其序列递增
refresh:刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
retry:重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
expire:过期时长:从服务器联系不到主服务器时,多久后停止服务
minimum:不存在的记录的缓存时长
NS:指定谁提供DNS服务;

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

test.com. 86400 IN SOA ns.test.com.  mail.test.com. ( 1 2H 10M 1W  1D )

NS记录:
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns1.test.com.
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

test.com. IN NS ns1.test.com.
test.com. IN NS ns2.test.com.
ns1.test.com. IN A 192.168.37.100
ns2.test.com. IN A 192.168.37.101

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

www.test.com. IN A 1.1.1.1
www.test.com. IN A 2.2.2.2

mx1.test.com. IN A 3.3.3.3
mx2.test.com. IN A 4.4.4.4

$GENERATE 1-254  HOST$  IN A 192.168.37.$                   #连续范围主机对应写法

*.test.com. IN A 5.5.5.5

PTR记录:
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.

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

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

www.test.com. IN CNAME websrv.test.com.
websrv.test.com.  IN	A	192.168.37.100

五、搭建DNS服务:使用bind工具

环境准备:
1.安装包yum install bind
2.配置文件

  • 主配置文件:/etc/named.conf
  • 区域名称存放文件:/etc/named.rfc1912.zones
  • 区域数据库存放路径:/var/named/
  • 正向解析区域数据库模板文件:/var/named/named.localhost
  • 反向解析区域数据库模板文件:/var/named/named.loopback
  • 从服务器数据库文件存放路径:/var/named/slaves

3.启动服务systemctl start named.service

(一)只缓存DNS服务器

1.设置DNS主配置文件

vim /etc/named.conf
(1)设置监听主机为本机:整行注释掉或改为localhost

     //   listen-on port 53 { localhost; };

(2)设置允许查询的主机:整行注释掉或改为any

    //      allow-query     { any; };

以上两条配置可为局域网内客户端访问互联网域名提供解析服务;

2.添加区域管理名称

[root@CentOS7 ~]#vim /etc/named.rfc1912.zones
zone "test.com" IN {                                                                                                                                                     
        type master;
        file "test.com.zone";
};

3.添加区域数据库

vim /var/named/test.com.zone
$TTL   1D
@      IN SOA master admin (1 3H 1M 1D 3H )
       NS master
master IN A 192.168.37.100
www    IN A 192.168.37.20
mail   IN A 192.168.37.30
ftp    IN A 192.168.37.40  

4.修改数据库文件所属组以及权限

chgrp named /var/named/test.com.zone 
chmod 640 /var/named/test.com.zone 

5.启动服务/重新加载配置文件

systemctl start named
rndc reload

在这里插入图片描述
客户机测试:
在这里插入图片描述

(二)主从复制DNS服务器

所有服务器虚拟机环境都禁用防火墙和selinux

1.主DNS服务器

(1)配置主配置文件,设置允许为其他主机提供服务,添加允许同步的从服务器IP

[root@master ~]#vim /etc/named.conf
options {
//      listen-on port 53 { localhost; };
//      allow-query     { any; };
        allow-transfer {192.168.37.103;};       #添加允许同步的从服务器IP

(2)添加区域名称:

[root@master ~]#vim /etc/named.rfc1912.zones
zone "test.com" IN {
	type master;
	file "test.com.zone";
};

(3)创建数据库文件:指定从服务器地址;需手工修改版本号

[root@master ~]#vim  /var/named/test.com.zone
    $TTL   1D
    @      IN SOA master admin (1 3H 1M 1D 3H )         #需修改版本号
           NS master
           NS slave                    #指定从服务器域
    master IN A 192.168.37.100          
    www    IN A 192.168.37.20
    slave  IN A 192.168.37.103     #从服务器域名对应的IP地址

[root@master ~]chgrp named /var/named/test.com.zone    #修改数据库文件所属组
[root@master ~]chmod 640 /var/named/test.com.zone      #修改数据文件权限

(4)启动服务/重新加载配置文件

[root@master ~]systemctl start named
[root@master ~]rndc reload
2.从DNS服务器

(1)设置允许为其他主机提供服务;设置同步安全策略,不允许其他主机同步从服务器

vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//      allow-query     { localhost; };
        allow-transfer {none;};

(2)配置区域名称:

[root@slave slaves]# vim /etc/named.rfc1912.zones 
    zone "test.com" IN {   #区域名称与主节点区域名称一致
      type slave;           #区域类型
      masters {192.168.37.100;};       #指定从的主节点IP
      file "slaves/test.com.zone.slave";
    };

(3)启动服务/同步服务配置

[root@slave slaves]# systemctl start named
[root@slave slaves]# rndc reload
3.客户端测试:

设定主从DNS 地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.37.101
DNS1=192.168.37.100
DNS2=192.168.37.103
PREFIX=24
DEFROUTE=yes
NAME="System eth0"
dig www.test.com

在这里插入图片描述
模拟主服务器宕机:

[root@master ~]#systemctl stop named

再次测试客户机:

在这里插入图片描述

(三)DNS子域委派
父DNS

1.主配置文件

[root@father ~]# vim /etc/named.conf
(1)开启对外服务功能:
    options {
    //      listen-on port 53 { 127.0.0.1; };
    //      allow-query     { localhost; };
(2)关闭安全验证:
    dnssec-enable no;
    dnssec-validation no; 

2.配置父域的区域名称文件:

[root@father ~]#vim /etc/named.rfc1912.zones 
    zone "baidu.com" IN {
            type master;
            file "baidu.com.zone";
    };  

[root@CentOS7 cd]#named-checkconf

3.父域的区域文件数据库:

[root@father ~]#vim /var/named/baidu.com.zone
$TTL 1D
@      IN SOA master admin ( 0 1D 1H 1D 1D )                                                                                                                               
          NS  master
shanghai  NS  ns.shanghai                #指定委派的子域DNS服务器
ns.shanghai A 192.168.37.103

[root@CentOS7 cd]#named-checkzone baidu.com /var/named/baidu.com.zone

4.启动服务

子DNS

1.主配置文件:配置可提供对外服务功能

[root@father ~]# vim /etc/named.conf
开启对外服务功能:
        options {
        //      listen-on port 53 { 127.0.0.1; };
        //      allow-query     { localhost; };
        }

2.区域名称文件:创建子区域信息

zone "shanghai.baidu.com" IN {
        type master;
        file "shanghai.baidu.com.zone";

};

3.创建子域的区域数据库

[root@CentOS7 ~]# vim /var/named/shanghai.baidu.com.zone 
$TTL 1D
@       IN  SOA  master admin ( 0 1H 1H 1D 1D )
            NS   master
master      A    192.168.37.103
www     CNAME    websrv
websrv      A    192.168.37.199

[root@CentOS7 ~]# chgrp named /var/named/shanghai.baidu.com.zone   #修改数据库组为named组
[root@CentOS7 ~]# chmod 640 /var/named/shanghai.baidu.com.zone  #修改区域数据库权限为640

4.启动服务/重新加载配置文件

[root@CentOS7 ~]# systemctl start named
[root@CentOS7 ~]# rndc reload
(四)转发DNS服务器

1.转发服务器配置

[root@CentOS7 cd]#vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
      
        forward only;
        forwarders {192.168.37.103;};
      
        dnssec-enable no;
        dnssec-validation no;
}
[root@CentOS7 cd]#systemctl start named		#启动服务

2.指定转到的服务器配置

[root@CentOS7 cd]#vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

        dnssec-enable no;
        dnssec-validation no;

[root@CentOS7 cd]#systemctl start named 		#启动服务
(五)智能DNS服务器(CDN)

场景:企业站点分不同地区服务器存放,为不同地区用户访问提供更快速访问,用户访问提交到DNS调度器,DNS调度器根据不同地区的IP用户,找到对应地区距离近的主机上,返回对应应用服务器IP给用户,用户直接访问离自己近的主机。

在这里插入图片描述

[root@CentOS7 named]#vim /etc/named.conf
acl beijingnet {
        192.168.37.0/24;
        192.168.38.0/24;
};
acl shanghainet {
        172.16.0.0/16;
        172.18.0.0/16;
};
acl othernet {
        any;
};

options {
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
};


logging {
};


view view_beijing {
        match-clients { beijingnet;};               #match-clients中名称对应acl名称
        include "/etc/named.rfc1912.zones.bj";
};

view view_shanghai {
        match-clients { shanghainet;};
        include "/etc/named.rfc1912.zones.sh";                                                              
};

view view_othernet {
        match-clients { othernet;};
        include "/etc/named.rfc1912.zones.other";
};

include "/etc/named.root.key";

[root@CentOS7 named]#vim /etc/named.rfc1912.zones
zone "." IN {             #把named.conf中的根域移动到区域文件中
        type hint;
        file "named.ca";
};

zone "magedu" IN {
        type master;
        file "magedu.com.zone.bj";
};

[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.other
[root@CentOS7 named]#chgrp named /etc/named.rfc1912.zones.*

[root@CentOS7 named]#vim /var/named/magedu.com.zone.bj
$TTL 1D
@      IN SOA master admin ( 0 1H 1H 1D 3H)
          NS  master
master    A   192.168.37.100
www       A   192.168.37.200  

[root@CentOS7 named]#vim /var/named/magedu.com.zone.sh
$TTL 1D
@      IN SOA master admin ( 0 1H 1H 1D 3H)
          NS  master
master    A   192.168.37.100
www       A   172.16.0.200  

[root@CentOS7 named]#vim /var/named/magedu.com.zone.other
$TTL 1D
@      IN SOA master admin ( 0 1H 1H 1D 3H)
          NS  master
master    A   192.168.37.100
www       A   10.0.0.200

配置时需要注意:
数据文件中SOA记录小括号()两边有空格,至少右边的括号左侧需要空格;正常情况括号内的值为红色,如有白色则可能会带来问题,rndc reload 检测不出来此情况。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值