DNS构建实战(上篇)

1.DNS技术概述

1.1.互联网为什么要使用域名

  • 在互联网中,使用IP地址作为机器的绝对地址根本行不通,原因:
  1. 不好记忆,例如百度官网的IP地址是“201.15.3.188",不太好记忆。
  2. 计算机可能常常更换IP地址,所以,通过IP地址去访问某台机器,数量多的时候根本行不通。
  • DNS协议应运而生,它主要解决把一个域名(比较好记忆的一串字符:例如:www.baidu.com)和一个IP地址(难记忆)的关系对应起来。
  • 例如:www.baidu.com-------->ip地址 201.15.3.188

1.2.什么是DNS

  • DNS(Domain Name System)是“域名系统”的英文缩写,是一种
    分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。

  • DNS可以理解为酒店前台,比如:你(计算机)想要去品如的房间,你会咨询酒店前台(DNS),酒店前台通过查询后台系统告诉你坐标某层的302房间(远程服务器IP地址),然后你拿着这个地址就可以去某层302找到品如的房间(你想访问的服务器)做你想做的事情。计算机也一样。
    如图:

1.3.域的基本结构

例如:mail.tsinghua.edu.cn.

  • 根root:“.”, cn后面的“.”我们平时浏览器访问网站看不到
  • 顶级域TLD:cn
  • 二级域名:edu
  • 三级域名:tsinghua
  • 四级域名:mail

1.4.域的相关概念

根域:

  • 全世界只有13组根服务器,名字分别为"A"到"M",其中10台设置在美国,另外三台设置于英国、日本、和瑞典。

顶级域:

  • 顶级域有两种:通用域(generic)和国家域(country)
    通用域:com、net、org。。。
    国家域:cn 、jp、us。。。
    顶级域名由ICANN委任的注册机构负责运行。

二级域名:

  • 无需到ICANN进行申请,只需要到运行顶级域名的注册机构去检查待申请的名字是否可用,并且不是别人的商标
  • 如果没有问题的话,只需要缴纳一小笔年费,即可得到你心仪的域名
    万网域名购买连接

三级域名:

  • 自己维护,比如:www,blog,mail,随便,但是一般用到四级域名就很长的了。五级很少有人用。

1.5.域的相关规则

  • 域名是大小写无关的,OD.COM和od.com是一样的
  • 各组成部分的名字最多有63个字符长,整个路径不超过255个字符
  • 没有规则限制同时在两个或多个顶级域名下的注册(例如:sony.com 和 sony.net),防止你的业务被别人山寨,保护知识产权
  • 要创建一个新的域,创建者必须得到该新域的上级域的许可,一旦创建成功,该新域就可创建子域,无需征得上级域的同意
  • 域名遵循的是组织的边界而不是物理网络的边界

1.6.DNS的解析原理

访问百度网站 www.baidu.com

1、在浏览器地址栏输入URL后回车,首先识别URL中协议,域名,文件路径,端口等信息。
2、查找本地hosts文件,如果有这个网址映射关系,则完成解析
3、询问本地DNS解析器缓存,有则完成解析
4、查找TCP/IP参数中设置的首选DNS服务器,称之为本地DNS服务器(LocalDNS)。此服务器收到查询时,如果在在其本地配置区域资源中找到要查询的域名,则完成解析,此解析具有权威性
5、如果要查询的域名不在本地DNS服务器本地配置资源中,但其缓存了该映射关系,则也完成解析,但此解析不具有权威性
6、如果以上方法(递归查询)都失效,由本地DNS服务器(LocalDNS)进行迭代查询,先向根域名DNS服务器发出请求(13台),再查二级域,三级域,直到查询到要解析的地址或名字为止,本地DNS服务器收到应答后,先在缓存中存储,然后将解析结果返回客户机。
7、没有找到则返回错误。

2.BIND 9软件安装部署详解

2.1.企业中自建DNS服务的背景

2.1.1.企业中的DNS服务

我们需要构建至少一套企业内部的DNS服务,
原因:

  • 常规做法:购买域名,完成ICP备案,并使用公网DNS服务(万网、新网、易名中国、dnspod、dns.la等等)进行免费(付费)解析
  • 有一些内网web服务,例如:zabbix,jenkins,wiki,jira等,不适合解析到公网
  • 服务器都有hostname,hostname应该设置为FQDN,维护主机名和主机内网的ip映射关系
  • 一些中间件服务(mysql,redis,mq),由于经常迁移和扩缩容,应该使用域名对外提供配置信息,方便维护,不能改个IP重新发下版
  • 甚至有的企业对解析至公网的域名有更高的要求(效率-ttl更短、安全-dnssec)又不愿意付费,会选择自建公网DNS

2.1.2.DNS服务器的类型

  • 主DNS服务器
  • 辅助DNS服务器
  • 缓存DNS服务器

2.2.BIND 9 软件的安装部署

2.2.1.系统架构

内网ip 主机名 功能
10.4.7.11 hdss7-11.host.com 主DNS服务
10.4.7.12 hdss7-12.host.com 辅DNS服务

2.2.2.软件版本

OS:CentOS 7.6
Bind 9:bind.x86_64 32:9.9.4-73.el7_6

2.2.3.安装BIND 9

2.2.3.1.操作系统版本和内核版本
#cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
#uname -a
Linux node 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
2.2.3.2.使用yum安装BIND9
#yum install bind
Installing:bind x86_64 32:9.9.4-73.el7_6 updates 1.8 M
2.2.3.3.BIND9主配置文件/etc/named.conf
  1. 主配置文件格式
options{ 
       //全局选项
}
zone "zone name" { 
     //定于区域
}
logging{   
      //日志文件
}
include:加载别的文件
  1. 主配置文件的配置注意事项
  • 语法严格,分号,空格
  • 文件的权限,

属主:root,
属组:named,
权限:640

3.主配置文件范例

options {
        listen-on port 53 { 10.4.7.11; };
        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     { any; };
        forwarders { 10.4.7.254; };

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable no;
        dnssec-validation no;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.root.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;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
  • directory:区域数据文件目录
  • allow-query any:允许所有主机查询
  • recursion yes:开启递归查询,内网DNS用recursion比较好,递归查询让它干
  • dnssec-enable yes:如果外面有一些域名加了dnssec签名,我们通过此dns递归查询的时候,可以把签名查出来
  • zone:主配置文件带了一个根域,提示,file ”name.ca“相对于区域数据文件目录,里面的内容是整个世界上13组根域服务器的A记录
  • rfc1912.本机域,反解域
2.2.3.4.BIND9服务启动
  • 检查配置文件
~]# named-checkconf
  • 启动BIND9服务
~]# systemctl start named.service
  • 检查BIND9服务状态
~]# systemctl status  named.service
  • 验证解析
    在/etc/resolv.conf配置DNS服务器ip地址为我们部署的主机ip
[root@hdss7-11 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search host.com
nameserver 10.4.7.11
  • 验证解析
[root@hdss7-11 ~]# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.

3.自建DNS正解、反解区域

3.1.自定义区域配置文件概述

3.2.资源记录配置格式概述

3.3.自定义区域数据库文件配置概述

3.4.自定义区域配置文件

自定义区域的配置范例如下:

named]# vi /etc/named.rfc1912.zones 
zone "host.com" IN {
        type  master;
        file  "host.com.zone";
        allow-update { 10.4.7.11;10.4.7.12 };
};
[root@hdss7-11 named]# named-checkconf 
[root@hdss7-11 named]# systemctl restart named

注意:这里自定义了一个host.com的主机域,可以放在/etc/named.rfc1912.zones文件中,也可以自定义,在/etc/named.conf里include进来。

  • 主机域

主机域和业务域无关,且建议分开
主机域其实是一个假域,也就是说,主机域其实是不能解析到互联网上的,他只对局域网(内网)提供服务

3.5.自定义区域数据库文件

  • 一般而言是文本文件,且只包含 资源记录、宏定义、注释
  • 需在自定义区域配置文件中指定存放路径,可以绝对路径或相对路径(相对于/var/named目录)
  • 注意文件的属性(属主、属组和权限)

3.5.1.范例:

$ORIGIN .
$TTL 600	; 10 minutes
host.com			IN SOA	ns1.host.com. dnsadmin.host.com. (
				2018121601 ; serial
				10800      ; refresh (3 hours)
				900        ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
				NS   ns1.host.com.
$ORIGIN host.com.
$TTL 60	; 1 minute
ns1                             A    10.4.7.11

3.5.2.资源记录(Resource Record)

3.5.2.1.资源记录格式
name [ttl(缓存时间)]  IN  资源记录类型(RRtype)  Value
3.5.2.2.常用资源记录类型(RR-type)
  • SOA记录
    SOA:起始授权,只能有一条

name:只能是区域名称,通常可以简写为@,例如:od.com
value:有n个数值,最主要的是主DNS服务器的FQDN,点不可省略
注意:SOA必须是区域数据文件第一条记录
例子:

@ 600 IN SOA  dns.host.com. 管理员邮箱(dnsadmin.host.com.)(
     序列号(serial number) ;注释内容,十进制数据,不能超过10位,通常使用日期时间戳,例如2018121601
     刷新时间(refresh time) ;即每隔多久到主服务器检查一次
     重试时间(retry time) ;应该小于refresh time
     过期时间(expire time);当辅助DNS服务器无法联系上主DNS服务器时,辅助DNS服务器可以在多长时间内认为其缓存是有效的,并供用户查询。
     netgative answer ttl ;非权威应答的ttl,缓存DNS服务器可以缓存记录多长时间
 )
  • NS记录
    NS:可以有多条,每一个NS记录,必须对应一个A记录

name:区域名称,通常可以简写为@
value:DNS服务器的FQDN(可以使用相对名称)
例子:

@  600  IN  NS  ns1
  • A记录
    A:只能定义在正向区域数据库文件中(ipv4-->FQDN)

name:FQDN(可以使用相对名称)
value:IP
例子:

www   600(单位s)   IN   A    10.4.7.11
www   600(单位s)   IN   A     10.4.7.12

注意:可以做轮询

  • MX记录
    MX:邮件交换记录,可以有多个(用的不多)

name:区域名称,用于表示smtp服务器
value:包含优先级和FQDN
优先级 0-99,数字越小,级别越高
例子:

@  600  IN  MX  10  mail
@  600  IN  MX  20  smtp
  • CNAME记录
    CNAME:canonical name,别名(FQDN-->FQDN)

name:FQDN
value:FQDN
例子:

eshop  IN  CNAME  www
  • 宏定义
$ORIGIN .
$TTL 60
  • 注释
区域数据文件中使用“;” (分号)来进行注释

3.6.实战正解主机域配置

3.6.1查看resolv.conf

[root@hdss7-11 named]# cat /etc/resolv.conf 
# Generated by NetworkManager
search host.com
nameserver 10.4.7.11
[root@hdss7-12 named]# cat /etc/resolv.conf 
# Generated by NetworkManager
search host.com
nameserver 10.4.7.11

3.6.2.(自定义区域配置)/etc/named.rfc1912.zones文件内结尾,添加以下内容

zone "host.com" IN {
        type  master;
        file  "host.com.zone";
        allow-update { 10.4.7.11;10.4.7.12; };
};

3.6.3.(区域数据库文件)/var/named下创建host.com.zone文件,写入以下内容

$TTL 600	; 10 minutes
@       		IN SOA	dns.host.com. 444160226.qq.com. (
				2018121601 ; serial
				10800      ; refresh (3 hours)
				900        ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			NS   dns.host.com.
$ORIGIN host.com.
$TTL 60	; 1 minute
HDSS7-11 	        A    10.4.7.11
dns                     A    10.4.7.11

三种配置方式:

  • 用宏定义$ORIGIN,下面用host.com
  • 不用宏定义,下面用@
  • 不用宏定义,下面用host.com

3.6.4.检查自定义区域配置

[root@hdss7-11 named]# named-checkzone host.com. /var/named/host.com.zone 
zone host.com/IN: loaded serial 2019111001
OK

3.6.5.检查主配置文件

[root@hdss7-11 named]# named-checkconf

3.6.6.修改区域配置文件属组和权限

[root@hdss7-11 named]# chgrp named host.com.zone 
[root@hdss7-11 named]# chmod 640 host.com.zone

3.6.7.重启named服务并检查是否生效

重启

[root@hdss7-11 named]# systemctl restart named

检查

[root@hdss7-11 named]# hostname
hdss7-11.host.com

//另一台虚机配好DNS,去ping验证解析
[root@hdss7-12 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search host.com
nameserver 10.4.7.11

[root@hdss7-12 ~]# ping hdss7-11.host.com
PING HDSS7-11.host.com (10.4.7.11) 56(84) bytes of data.
64 bytes from 10.4.7.11 (10.4.7.11): icmp_seq=1 ttl=64 time=1.23 ms
64 bytes from 10.4.7.11 (10.4.7.11): icmp_seq=2 ttl=64 time=0.173 ms

3.7.维护正解域(增、删、改)

3.7.1.增加一条资源记录

$TTL 600	; 10 minutes
@       		IN SOA	dns.host.com. 87527941.qq.com. (
				2018121602 ; serial
				10800      ; refresh (3 hours)
				900        ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			NS   dns.host.com.
$ORIGIN host.com.
$TTL 60	; 1 minute
HDSS7-11 	        A    10.4.7.11
HDSS7-12 	        A    10.4.7.12
dns      	        A    10.4.7.11

增加一个dns.host.com 的A记录解析,并验证
注意:前滚 serial号

3.7.2.修改一条资源记录

  • 给10.4.7.12这台主机增加一个辅助ip
 ip addr add 10.4.7.13/24 dev eth0
  • 修改DNS服务器上的区域数据文件(修改和hdss7-12的A记录解析,指向新增辅助ip:10.4.7.13)
$TTL 600	; 10 minutes
@       		IN SOA	dns.host.com. 87527941.qq.com. (
				2018121603 ; serial
				10800      ; refresh (3 hours)
				900        ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			NS   dns.host.com.
$ORIGIN host.com.
$TTL 60	; 1 minute
HDSS7-11 	        A    10.4.7.11
HDSS7-12 	        A    10.4.7.13
dns      	        A    10.4.7.11
  • 检查
ping HDSS7-12.host.com
ING hdss7-12.host.com (10.4.7.13) 56(84) bytes of data.
64 bytes from 10.4.7.13 (10.4.7.13): icmp_seq=1 ttl=64 time=0.318 ms
64 bytes from 10.4.7.13 (10.4.7.13): icmp_seq=2 ttl=64 time=0.206 ms

3.7.3.删除一条资源记录

  • 删除hdss7-12.host.com的A记录解析
$TTL 600	; 10 minutes
@       		IN SOA	ns1.host.com. dnsadmin.host.com. (
				2018121604 ; serial
				10800      ; refresh (3 hours)
				900        ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			NS   ns1.host.com.
$ORIGIN host.com.
$TTL 60	; 1 minute
ns1      	        A    10.4.7.11
HDSS7-11 	        A    10.4.7.11
  • 验证
~]# ping HDSS7-12.host.com
ping: hdss7-12.host.com Name or service not known

3.8.实战反解主机域配置

3.8.1.(自定义区域配置)/etc/named.rfc1912.zones文件内结尾,添加以下内容

zone "7.4.10.in-addr.arpa" IN {
        type master;
        file "7.4.10.in-addr.arpa.zone";
        allow-update { 10.4.7.11;10.4.7.12; };
};

3.8.2.(区域数据库配置)/etc/named/7.4.10.in-addr.arpa.zone文件,写入以下内容

$TTL 600	; 10 minutes
@	     		IN SOA	dns.host.com. dnsadmin.host.com. (
				2018121603 ; serial
				10800      ; refresh (3 hours)
				900       ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			    NS   ns1.host.com.
$ORIGIN 7.4.10.in-addr.arpa.
$TTL 60	; 1 minute
11			PTR		 HDSS7-11.host.com.
12			PTR		 HDSS7-12.host.com.

注意:一个IP只能对应唯一的FQDN反解PTR记录,且应该与正解A记录对应

3.8.3.检查反解域配置(记得改属组和权限)

[root@hdss7-11 ~]# named-checkzone 7.4.10.in-addr.arpa /var/named/7.4.10.in-addr.arpa.zone
zone 7.4.10.in-addr.arpa/IN: loaded serial 2018121603
OK

3.8.4.重启BIND9服务并检查解析是否生效

  • 重启BIND9服务
[root@hdss7-11 named]# systemctl restart named
  • 验证:
方法1:
root@hdss7-11 ~]# dig -t PTR 11.7.4.10.in-addr.arpa. @10.4.7.11 +short
HDSS7-11.host.com.

方法2:
[root@hdss7-11 ~]# dig -x 10.4.7.11 @10.4.7.11 +short
HDSS7-11.host.com.

3.9.维护反解域(增、删、改)

3.9.1.增加一条反解记录

增加一条反解 10.4.7.13--->hdss7-13.hsot.com.

$TTL 600	; 10 minutes
@	     		IN SOA	dns.host.com. dnsadmin.host.com. (
				2018121604 ; serial
				10800      ; refresh (3 hours)
				900       ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			    NS   ns1.host.com.
$ORIGIN 7.4.10.in-addr.arpa.
$TTL 60	; 1 minute
11			PTR		 HDSS7-11.host.com.
12			PTR		 HDSS7-12.host.com.
13			PTR		 HDSS7-13.host.com.
3.9.2.删除一条反解记录
$TTL 600	; 10 minutes
@	     		IN SOA	dns.host.com. dnsadmin.host.com. (
				2018121605 ; serial
				10800      ; refresh (3 hours)
				900       ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			    NS   ns1.host.com.
$ORIGIN 7.4.10.in-addr.arpa.
$TTL 60	; 1 minute
11			PTR		 HDSS7-11.host.com.
12			PTR		 HDSS7-12.host.com.
3.9.3.修改一条反解记录

10.4.7.12--->hdss7-12.host.com.修改为10.4.7.12-->hdss7-13.host.com.

$TTL 600	; 10 minutes
@	     		IN SOA	dns.host.com. dnsadmin.host.com. (
				2018121606 ; serial
				10800      ; refresh (3 hours)
				900       ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			    NS   ns1.host.com.
$ORIGIN 7.4.10.in-addr.arpa.
$TTL 60	; 1 minute
11			PTR		 HDSS7-11.host.com.
12			PTR		 HDSS7-13.host.com.

4.实战DNS主辅同步

4.1.DNS主辅同步架构

IP 主机名 功能
10.4.7.11 hdss7-11.host.com DNS主
10.4.7.12

4.2.辅助DNS主机上安装bind9

4.2.1.安装bind9软件:

[root@hdss7-12 ~]# yum install bind -y

注意:这里7-12是辅助DNS,它的版本应<或=主DNS的BIND9软件版本

4.2.2.修改辅助DNS主配置文件:

[root@hdss7-12 ~]# vi /etc/named.conf
options {
        listen-on port 53 { 10.4.7.12; };                         //修改监听IP
        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     { any; };                                  //设置所有都可查询
        masterfile-format text;                                  //增加masterfile-format

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.root.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;
        file "named.ca";
};

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

4.3.修改主DNS主配置文件

4.3.1.加入以下配置

[root@hdss7-11 named]# vi /etc/named.conf 
allow-transfer { 10.4.7.12; };
also-notify { 10.4.7.12; };

4.3.2.检查配置并重启主辅DNS

[root@hdss7-11 named]# named-checkconf 
[root@hdss7-11 named]# systemctl restart named
[root@hdss7-12 ~]# named-checkconf 
[root@hdss7-12 ~]# systemctl restart named

4.3.3.检查完全区域数据传送

[root@hdss7-12 ~]# dig -t axfr host.com @10.4.7.11

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t axfr host.com @10.4.7.11
;; global options: +cmd
host.com.		600	IN	SOA	dns.host.com. dnsadmin.host.com. 2019111001 10800 900 604800 86400
host.com.		600	IN	NS	dns.host.com.
dns.host.com.		60	IN	A	10.4.7.11
HDSS7-11.host.com.	60	IN	A	10.4.7.11
HDSS7-12.host.com.	60	IN	A	10.4.7.12
host.com.		600	IN	SOA	dns.host.com. dnsadmin.host.com. 2019111001 10800 900 604800 86400
;; Query time: 0 msec
;; SERVER: 10.4.7.11#53(10.4.7.11)
;; WHEN: Wed Dec 18 19:01:57 CST 2019
;; XFR size: 9 records (messages 1, bytes 278)

4.4.辅助DNS上创建自定义正解区域配置

4.4.1.辅助DNS上创建自定义正解区域配置并重启

[root@hdss7-12 ~]# vi /etc/named.rfc1912.zones 
zone "host.com" IN {
  type  slave;
  masters { 10.4.7.11; };
  file  "slaves/host.com.zone";
};

[root@hdss7-12 ~]# named-checkconf 
[root@hdss7-12 ~]# systemctl restart named

4.4.2.检查同步过来的区域数据库文件

[root@hdss7-12 ~]# cat /var/named/slaves/host.com.zone 
$ORIGIN .
$TTL 600	; 10 minutes
host.com		IN SOA	dns.host.com. dnsadmin.host.com. (
				2019111001 ; serial
				10800      ; refresh (3 hours)
				900        ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			NS	dns.host.com.
$ORIGIN host.com.
$TTL 60	; 1 minute
dns			A	10.4.7.11
HDSS7-11		A	10.4.7.11
HDSS7-12		A	10.4.7.12

4.4.3.检查解析是否正确

  • 使用主DNS查询一个A记录
[root@hdss7-11 named]# dig -t A HDSS7-11.host.com @10.4.7.11 +short
10.4.7.11
  • 使用辅DNS查询一个A记录
[root@hdss7-11 named]# dig -t A HDSS7-11.host.com @10.4.7.12 +short
10.4.7.11

4.5.辅助DNS上创建自定义反解区域配置

4.5.1.辅助DNS上创建自定义反解区域配置并重启

[root@hdss7-12 ~]# vi /etc/named.rfc1912.zones 
zone "7.4.10.in-addr.arpa" IN {
  type  slave;
  masters { 10.4.7.11; };
  file  "slaves/7.4.10.in-addr-arpa.zone";
};
[root@hdss7-12 ~]# named-checkconf 
[root@hdss7-12 ~]# systemctl restart named

4.5.2.检查同步过来的区域数据库文件

[root@hdss7-12 ~]# cat /var/named/slaves/
7.4.10.in-addr-arpa.zone  host.com.zone             
[root@hdss7-12 ~]# cat /var/named/slaves/7.4.10.in-addr-arpa.zone 
$ORIGIN .
$TTL 600	; 10 minutes
7.4.10.in-addr.arpa	IN SOA	dns.host.com. dnsadmin.host.com. (
				2018121603 ; serial
				10800      ; refresh (3 hours)
				900        ; retry (15 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			NS	ns1.host.com.
$ORIGIN 7.4.10.in-addr.arpa.
$TTL 60	; 1 minute
11			PTR	HDSS7-11.host.com.
12			PTR	HDSS7-12.host.com.

4.5.3.检查解析是否正确

  • 使用主DNS查询一个PTR记录
[root@hdss7-12 ~]# dig -x 10.4.7.11 @10.4.7.11 +short
HDSS7-11.host.com.
  • 使用辅DNS查询一个PTR记录
[root@hdss7-12 ~]# dig -x 10.4.7.11 @10.4.7.12 +short
HDSS7-11.host.com.

4.6.动态域和静态域的维护

4.6.1.静态域的维护

4.6.1.1.删掉allow-update,使其成为静态域
zone "host.com" IN {
        type master;
        file "host.com.zone";
};
4.6.1.2.使用nsupdate更新(测试不可用 update failed)
[root@hdss7-11 named]# nsupdate
> server 10.4.7.11
> update add hdss7-13.host.com 60 A 10.4.7.13
> send
update failed: REFUSED
> quit

4.6.1.3.更改/var/named/host.com.zone,不前滚serial号,测试

修改

[root@hdss7-11 named]# vi /var/named/host.com.zone 
添加A记录
hdss7-13        A    10.4.7.13
[root@hdss7-11 named]# systemctl restart named

查看完全区域传送

[root@hdss7-12 slaves]# dig -t AXFR host.com @10.4.7.11
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t AXFR host.com @10.4.7.11
;; global options: +cmd
host.com.		600	IN	SOA	dns.host.com. 444160226.qq.com. 2019122502 10800 900 604800 86400
host.com.		600	IN	NS	dns.host.com.
dns.host.com.		60	IN	A	10.4.7.11
hdss7-11.host.com.	60	IN	A	10.4.7.11
hdss7-12.host.com.	60	IN	A	10.4.7.12
hdss7-13.host.com.	60	IN	A	10.4.7.13
host.com.		600	IN	SOA	dns.host.com. 444160226.qq.com. 2019122502 10800 900 604800 86400
;; Query time: 0 msec
;; SERVER: 10.4.7.11#53(10.4.7.11)
;; WHEN: Thu Dec 26 00:29:29 CST 2019
;; XFR size: 7 records (messages 1, bytes 231)

测试(7-12并没有更新)

[root@hdss7-11 named]# dig -t A hdss7-13.host.com @10.4.7.11 +short
10.4.7.13
[root@hdss7-11 named]# dig -t A hdss7-13.host.com @10.4.7.12 +short
无结果

4.6.1.3.更改/var/named/host.com.zone,前滚serial号,测试

修改(这里修改serial号,前滚1):

[root@hdss7-11 named]# vi /var/named/host.com.zone 
[root@hdss7-11 named]# systemctl restart named

测试(7-12已经更新)

[root@hdss7-11 named]# dig -t A hdss7-13.host.com @10.4.7.12 +short
10.4.7.13
[root@hdss7-11 named]# dig -t A hdss7-13.host.com @10.4.7.11 +short
10.4.7.13

4.6.1.4.结论

静态域的维护依赖serial号前滚来触发增量同步,
每次增删改,都需要前滚serial号

4.6.2.动态域的维护(不建议手动修改文件,不生效)

4.6.2.1.使用nsupdate增加记录(测试可用)
[root@hdss7-11 named]# nsupdate 
> server 10.4.7.11
> update add 13.7.4.10.in-addr.arpa. 60 PTR hdss7-13.host.com.
> send
> quit
4.6.2.2.验证是否主辅同步(直接生效)
[root@hdss7-11 named]# dig -t PTR 13.7.4.10.in-addr.arpa.  @10.4.7.11 +short
hdss7-13.host.com.
[root@hdss7-11 named]# dig -t PTR 13.7.4.10.in-addr.arpa.  @10.4.7.12 +short
hdss7-13.host.com.
4.6.2.3.使用nsupdate修改记录
[root@hdss7-11 named]# nsupdate
> server 10.4.7.11
> update del 13.7.4.10.in-addr.arpa. 60 PTR hdss7-13.host.com.
> update add 13.7.4.10.in-addr.arpa. 60 PTR hdss7-14.host.com.
> send
> quit

验证

 dig -t AXFR 7.4.10.in-addr.arpa. @10.4.7.11
4.6.2.3.使用nsupdate删除记录
[root@hdss7-11 named]# nsupdate
> server 10.4.7.11
> update del 13.7.4.10.in-addr.arpa. 60 PTR hdss7-14.host.com.    
> send
> quit

验证

 dig -t AXFR 7.4.10.in-addr.arpa. @10.4.7.11
4.6.2.4.结论

nsupdate使用小结:

  • 优点:

命令简单,便于记忆
不在手动变更SOA的serial序列号,自动滚动
不需要重启重载bind9服务/配置,生效快
可以通过配置acl实现远程管理

  • 缺点:

jnl文件无法使用文本文件的方式打开
只能依赖完全区域传送查看所有的区域的记录
更新操作复杂,先删后增
远程管理有安全隐患,需要加审计
动态域在rndc管理上多一步

4.7.再增加一个od.com的业务域,并验证主辅同步

4.7.1.添加区域配置文件(记得改权限属组)

[root@hdss7-11 named]# vi /etc/named.rfc1912.zones
zone "od.com" IN {
        type master;
        file "od.com.zone";
        allow-update { none; };
};

4.7.2.创建区域数据文件(记得改权限属组)

[root@hdss7-11 named]# vi /var/named/od.com.zone
$ORIGIN .
$TTL 600 ; 10 minutes
od.com     IN    SOA  ns1.od.com. 444160226.qq.com. (
                        2019122501  ;serial number
                        10800       ;refresh time 3 hours
                        900         ;retry time 15 minutes
                        604800      ;expire time 1 week
                        86400       ;negative answer ttl 1 day
)
                NS ns1.od.com.
                NS ns2.od.com.
$ORIGIN od.com.
$TTL 60 ;1 minute
ns1           A     10.4.7.11
ns2           A     10.4.7.22

4.7.3.检查数据文件和配置文件,重启

[root@hdss7-11 named]# named-checkzone od.com. /var/named/od.com.zone 
zone od.com/IN: loaded serial 2019122501
OK
[root@hdss7-11 named]# systemctl restart named

4.7.4.检查是够生效

[root@hdss7-11 named]# dig -t A ns1.od.com @10.4.7.11 +short
10.4.7.11
[root@hdss7-11 named]# dig -t A ns2.od.com @10.4.7.11 +short
10.4.7.12

4.7.5.配置辅助DNS

[root@hdss7-12 named]# vi /etc/named.rfc1912.zones 
zone "od.com" IN {
        type slave;
        masters { 10.4.7.11 ;};
        file "slaves/od.com.zone";
};
[root@hdss7-12 named]# named-checkconf 
[root@hdss7-12 named]# systemctl restart named

4.7.6.验证辅助DNS

[root@hdss7-11 named]# dig -t A ns1.od.com @10.4.7.11 +short
10.4.7.11
[root@hdss7-11 named]# dig -t A ns1.od.com @10.4.7.12 +short
10.4.7.11

4.7.7.统一NS记录

  • 修改主机域正解域(前滚serial 修改ns记录)
[root@hdss7-11 named]# vi /var/named/host.com.zone 
$ORIGIN .
$TTL 600        ; 10 minutes
host.com                        IN SOA  ns1.od.com. 444160226.qq.com. (
                                2019122504 ; serial
                                10800      ; refresh (3 hours)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                                NS   ns1.od.com.
                                NS   ns2.od.com.
$ORIGIN host.com.
$TTL 60 ; 1 minute
hdss7-11           A    10.4.7.11
hdss7-12           A    10.4.7.12
hdss7-13           A    10.4.7.13
[root@hdss7-11 named]# systemctl restart named
[root@hdss7-11 named]# dig -t NS host.com. @10.4.7.11 +short
ns1.od.com.
ns2.od.com.
[root@hdss7-11 named]# dig -t NS host.com. @10.4.7.12 +short
ns1.od.com.
ns2.od.com.

  • 修改主机域反解域(nsupdate修改)
[root@hdss7-11 named]# nsupdate
> server 10.4.7.11
> update add 7.4.10.in-addr.arpa. 600 NS ns1.od.com
> update add 7.4.10.in-addr.arpa. 600 NS ns2.od.com
> update del 7.4.10.in-addr.arpa. NS dns.host.com
> send
> quit
hdss7-12上查看完全区域传送:
[root@hdss7-12 named]# dig -t AXFR 7.4.10.in-addr.arpa. @10.4.7.11

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t AXFR 7.4.10.in-addr.arpa. @10.4.7.11
;; global options: +cmd
7.4.10.in-addr.arpa.	600	IN	SOA	dns.host.com. dnsadmin.host.com. 2019122505 10800 900 604800 86400
7.4.10.in-addr.arpa.	600	IN	NS	ns1.od.com.
7.4.10.in-addr.arpa.	600	IN	NS	ns2.od.com.
11.7.4.10.in-addr.arpa.	60	IN	PTR	HDSS7-11.host.com.
12.7.4.10.in-addr.arpa.	60	IN	PTR	HDSS7-12.host.com.
7.4.10.in-addr.arpa.	600	IN	SOA	dns.host.com. dnsadmin.host.com. 2019122505 10800 900 604800 86400
;; Query time: 0 msec
;; SERVER: 10.4.7.11#53(10.4.7.11)
;; WHEN: Thu Dec 26 02:00:13 CST 2019
;; XFR size: 7 records (messages 1, bytes 253)
  • 检查NS修改
[root@hdss7-12 named]# dig -t NS  od.com @10.4.7.12 +short
ns1.od.com.
ns2.od.com.
[root@hdss7-12 named]# dig -t NS  host.com @10.4.7.12 +short
ns1.od.com.
ns2.od.com.
[root@hdss7-12 named]# dig -t NS 7.4.10.in-addr.arpa. @10.4.7.12 +short
ns2.od.com.
ns1.od.com.

4.8.客户端配置DNS解析高可用

  • 配置网卡DNS1和DNS2
[root@hdss7-11 named]# dig -t A ns1.od.com +short
10.4.7.11
[root@hdss7-11 named]# dig -t A ns2.od.com +short
10.4.7.12
[root@hdss7-11 named]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
[root@hdss7-11 named]# systemctl restart network
[root@hdss7-12 named]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
[root@hdss7-12 named]# systemctl restart network
  • 修改 /etc/resolv.conf ,加入业务域
[root@hdss7-11 named]# vi /etc/resolv.conf
# Generated by NetworkManager
search host.com  od.com
nameserver 10.4.7.11
nameserver 10.4.7.12
[root@hdss7-12 named]# vi /etc/resolv.conf
# Generated by NetworkManager
search host.com  od.com
nameserver 10.4.7.11
nameserver 10.4.7.12
  • 测试自动补全
[root@hdss7-11 named]# ping ns1
PING ns1.od.com (10.4.7.11) 56(84) bytes of data.
64 bytes from HDSS7-11.host.com (10.4.7.11): icmp_seq=1 ttl=64 time=0.009 ms
64 bytes from HDSS7-11.host.com (10.4.7.11): icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from HDSS7-11.host.com (10.4.7.11): icmp_seq=3 ttl=64 time=0.024 ms
posted @ 2019-12-26 17:40  Javis的BLOG  阅读(587)  评论(0编辑  收藏  举报