搭建DNS主从服务器实现反向解析,子域,转发,智能DNS及排错和互联网DNS架构实验

1基本知识点

DNS服务

DNS:Domain Name System 应用层协议
C/S,53/udp, 53/tcp
BIND:Bekerley Internat Name Domain
ISC (www.isc.org)
本地名称解析配置文件:hosts

DNS域名

根域
一级域名:Top Level Domain: tld
com, edu, mil, gov, net, org, int,arpa
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
二级域名
三级域名
最多127级域名
ICANN(The Internet Corporation for Assigned Names and Numbers)
互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名
(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统
的管理

DNS域名结构

DNS解析

DNS查询类型:
递归查询
迭代查询
名称服务器:域内负责解析本域内的名称的主机
根服务器:13组服务器
解析类型:
FQDN --> IP
IP --> FQDN
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树

DNS服务器类型

DNS服务器的类型:
主DNS服务器
从DNS服务器
缓存DNS服务器(转发器)

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

资源记录

区域解析库:由众多RR组成:
资源记录: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,邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:
SPF(反垃圾邮件)记录,https验证等
示例:_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x

2基本环境安装

root:~ # yum install -y bind
root:~ # vim /etc/named.conf
  • 修改这两行,让所有主机都可访问

    listen-on port 53 { localhost; };
    allow-query { any; }

root:/etc/named # systemctl start named.service

3主从服务器搭建

搭建主服务器

  • 修改bind 配置文件
vim /etc/named.conf
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };
allow-transfer {从服务器IP;};          #只允许从服务器同步

vim /etc/named.rfc1912.zones
添加
zone "qh.com" IN {
        type master;
        file "qh.com.zone";
}
  • 编辑DNS区域数据库文件
root:/etc/named # cp -p /var/named/named.localhost /var/named/qh.com.zone
root:/var/named $ vi /var/named/qh.com.zone
$TTL 1D
@       IN SOA  master qh.com. (
                                        2019042210      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS       master
master      A    192.168.64.151
dbserver1   A    1.1.1.1
dbserver2   A    2.2.2.2

root:~ # systemctl restart named.service #重启服务

  • 测试
root:~ $ dig dbserver1.qh.com @192.168.64.151

搭建从服务器

yum install bind
vim /etc/named.conf
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };
allow-transfer {none;};                                        #不允许任何机器同步
vim /etc/named.rfc1912.zones
zone "qh.com" {
    type slave;
    masters {主服务器IP;};
    file "slaves/qh.com.slave";
};
root:~ # systemctl start named.service 
  • 从服务器进行同步
root:/var/named/slaves # cp -p /var/named/named.localhost /var/named/slave/qh.com.slave
root:/var/named # cd slaves/
root:/var/named/slaves # chmod g+w qh.com.slave
root:/var/named/slaves # rndc reload
server reload successful
root:/var/named/slaves # ll
total 4
-rw-rw---- 1 root named 152 Jun 21  2007 qh.com.slave
  • 测试

    root:~ $ vi /etc/sysconfig/network-scripts/ifcfg-ens33

root:~ $ service network restart
Restarting network (via systemctl):                        [  OK  ]
root:~ $ cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
search localdomain
nameserver 192.168.64.151
nameserver 192.168.64.152
  • 断开151网卡
  • 在客户机测试
  • 说明是从从服务器解析地址的,主从服务器已成功

4搭建反向主服务器

  • 配置文件
zone "64.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.64.zone";
};
  • 区域数据库文件
root:/var/named $ cp -p qh.com.zone 192.168.64.zone
root:/var/named $ vim 192.168.64.zone
$TTL 1D
@ IN SOA master qh.com. ( 1 1H 10M 12H 1D )
     NS  master
master A 192.168.64.151
7    PTR websrv.qh.com.
6    PTR  websrv.qh.com.
100  PTR mail.qh.com.
root:~ $ rndc reload
root:~ $ systemctl restart named.service
  • 测试

5父域委派子域到另一台服务器上

  • 主服务器

    yum install bind
    vim /etc/named.conf
    //  listen-on port 53 { 127.0.0.1; };
    //  allow-query     { localhost; };
  • 在子域的DNS服务器上192.168.64.153
root:/var/named # vi /etc/named.rfc1912.zones
zone "beijing.qh.com" IN {
        type master;
        file "beijing.qh.com.zone";
};

root:/var/named # cp -p named.empty beijing.qh.com.zone
root:/var/named # chmod g+w beijing.qh.com.zone
root:~ $ vim /var/named/beijing.qh.com.zone
$TTL 1D
@   IN SOA  master beijing.qh.com. (
                    2019042214  ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
            NS   master
master      A    192.168.64.153
websrv     A    3.3.3.3
www       CNAME  websrv    #此处可使用别名

root:~ $ systemctl start named.service
  • 测试成功

    6实现智能DNS

  • 主DNS
root:~ # vim /etc/named.conf #三个不同地区网段
acl beijingnet{
        192.168.64.0/24;
};
acl shanghainet{
        192.168.65.0/24;
};
acl othernet{
        any;
};
view beijingview{
        match-clients {beijingnet;};
        include "/etc/named/named.rfc1912.zones.bj";
};
view shanghaiview{
        match-clients {shanghainet;};
        include "/etc/named/named.rfc1912.zones.sh";
};
view otherview{
        match-clients {othernet;};
        include "/etc/named.rfc1912.zones";
};

############################## zone开头的记录要放到includ包含的/etc/named.rfc1912.zones文件里

root:/var/named # cp -p qh.com.zone qh.com.bj    ##创建北京与上海数据库
root:/var/named # cp -p qh.com.zone qh.com.sh

root:/var/named # cat qh.com.bj
$TTL 1D
@   IN  SOA master qh.com ( 1 1D 1H 1W 3H )
        NS master
master  A  192.168.64.151
www     A  6.6.6.6

root:/var/named # vi qh.com.sh
$TTL 1D
@   IN  SOA master qh.com ( 1 1D 1H 1W 3H )
        NS master
master  A  192.168.64.151
www     A  7.7.7.7

root:/var/named # cp qh.com.sh qh.com.zone  #其他地区数据库
cp: overwrite ‘qh.com.zone’? y

root:/var/named # vi qh.com.zone
$TTL 1D
@   IN  SOA master qh.com ( 1 1D 1H 1W 3H )
        NS master
master  A  192.168.64.151
www     A  8.8.8.8
  • 共三个数据库,对应不同地区
root:~ $ cp -p /etc/named.rfc1912.zones /etc/named/named.rfc1912.zones.bj
root:~ $ cp -p /etc/named.rfc1912.zones /etc/named/named.rfc1912.zones.sh
  • 共三个区域数据库文件
  • 开始关联数据库
root:/etc/named # vi named.rfc1912.zones.bj

root:/etc/named # vi named.rfc1912.zones.sh


原有named.rfc1912.zones配置不变

  • 语法检查

  • 重启服务
#报错
root:/var/named # rndc reload
rndc: connect failed: 127.0.0.1#953: connection refused
# 尝试先重启服务在加载

  • 测试
    必须把DNS指向所配服务器
  • DNS服务器 有两个ip段
  • 以64网段
  • 以65网段
  • 其他网段
    临时加一个网段
    服务器:ip a a 192.168.63.1/24 dev ens33
    客户端:ip a a 192.168.63.2/24 dev ens33
  • 测试均已成功
    /images/blog/201904/23/0c181b664c6773ed2c32d1d336ae799a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=" alt="搭建DNS主从服务器实现反向解析,子域,转发,智能DNS及排错和互联网DNS架构实验" />

    7互联网DNS架构实验

  • 架构图
  • 共7台主机,联合实现互联网dns架构
  • 1将客户端dns服务器指向本地dns服务器
  • 2将网站搭建好
root:~ # yum install httpd
root:~ # cd /var/www/html/
root:/var/www/html # echo 192.168.64.57,hello >index.html
root:/var/www/html # chmod a+r index.html
root:/var/www/html # service httpd restart
  • 3客户端测试
  • 4配置主masterDNS
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
allow-transfer {192.168.64.47;};
root:~ # vi /etc/named.rfc1912.zones
zone "qh.com" IN {
        type master;
        file "qh.com.zone";
};

root:~ # cd /var/named/
root:/var/named # vi qh.com.zone
$TTL 1D
@ IN SOA ns1 qh.mail.com. ( 1 1H 10M 1D 3H )
        NS ns1
        NS ns2

ns1 A 192.168.64.37
ns2 A 192.168.64.47
www A 192.168.64.57

root:/var/named # chgrp named qh.com.zone
root:/var/named # chmod 640 qh.com.zone
#### 语法检查
root:/var/named # named-checkconf
#### 启动服务
root:/var/named # systemctl start named.service
  • 5客户端测试master服务器
  • 6搭建从服务器
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
allow-transfer {none;};
root:~ # vi /etc/named.rfc1912.zones
zone "qh.com" {
    type slave;
    masters {192.168.64.37;};
    file "slaves/qh.com.slave";
};
root:/var/named/slaves # systemctl start named.service
root:/var/named/slaves # rndc reload
root:/var/named/slaves # ll
total                                  #已同步
-rw-r--r-- 1 named named 269 Apr 23 16:34 qh.com.slave
  • 7测试从服务器
  • 8配置com域服务器
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
allow-transfer {none;};
------------------------------------------------
root:~ # vi /etc/named.rfc1912.zones
zone "com" IN {
        type master;
        file "com.zone";
};
---------------------------------------------------------
root:~ # cd /var/named/
root:/var/named # vim com.zone
$TTL 1D
@ IN SOA NS1 qh.mail.com. (1 1D 1H 1W 3D )
        NS ns1
qh      NS qhns1
qh      NS qhns2
ns1 A 192.168.64.27
qhns1 A 192.168.64.37   #主服务器
qhns2 A 192.168.64.47   #从服务器

root:/var/named # chgrp named com.zone
root:/var/named # chmod g+w com.zone
root:/var/named # systemctl start named.service
root:/var/named # rndc reload
server reload successful
  • 9测试 (通过父域192.168.64.27测试)
  • 10搭建根DNS
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
zone "." IN {
        type master;          #改为master自己做根
        file "root.zone";
};

root:~ # cd /var/named/
root:/var/named # vim root.zone
$TTL 1D
@ IN SOA ns1 qh.mail.com. (1 1D 1H 1W 3D )
        NS ns1
com     NS comns1
ns1 A 192.168.64.17
comns1 A 192.168.64.27

root:/var/named # chgrp named com.zone
root:/var/named # chmod g+w com.zone
root:/var/named # systemctl start named.service 
  • 11测试(通过主根服务器测试)
  • 12配置本地dns服务器
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

root:/etc/sysconfig/network-scripts # vi /var/named/named.ca #改为下面配置
.                       518400  IN      NS      a.root-servers.net.

a.root-servers.net.     3600000 IN      A       192.168.64.17
  • 13清缓存

    root:/var/named # rndc flush #清理所有dns缓存
  • 14在本地dns修改安全配置
root:~ # vi /etc/named.conf
dnssec-enable no;
dnssec-validation no;
  • 15测试

一些过程中可能遇到的错误

root:/var/named # systemctl start named.service
Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.

一般可以通过systemctl status named.service -l 命令可以查看当前错误类型

#dig A example.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523
...
SERVFAIL:The nameserver encountered a problem while processing the query.
? 可使用dig +trace排错,可能是网络和防火墙导致
NXDOMAIN:The queried name does not exist in the zone.
? 可能是CNAME对应的A记录不存在导致
REFUSED:The nameserver refused the client‘s DNS request due to policy
restrictions.
? 可能是DNS策略导致
? NOERROR不代表没有问题,也可以是过时的记录
?查看是否为权威记录,flags:aa标记判断
?被删除的记录仍能返回结果,可能是因为*记录存在
?如:*.example.com. IN A 172.25.254.254
?注意“.”的使用
?避免CNAME指向CNAME记录,可能产生回环
?est.example.com. IN CNAME lab.example.com.
?lab.example.com. IN CNAME test.example.com.
?正确配置PTR记录,许多服务依赖PTR,如sshd,MTA
?正确配置轮询round-robin记录

原文地址:https://blog.51cto.com/9019400/2383531

时间: 2024-11-29 00:30:13

搭建DNS主从服务器实现反向解析,子域,转发,智能DNS及排错和互联网DNS架构实验的相关文章

从DNS基础到在CentOS6.5上“玩着”搭建一个支持正向、反向解析的“

1.什么是DNS? (Domain Name System)域名系统. DNS其实实现的功能很简单也很有效,它能够让用户可以不用记得那些经常要访问服务器的ip地址,直接要你输入类似拼音格式的就可以访问到那些数字串的ip地址.假设以61.120.155.14(举个例子),我们总是用这些数字进行网页服务器的访问岂不是很蛋疼,毕竟很多人还是对文字甚至拼音字母更容易让正常人记忆.这就是DNS的功能. 当然,它不仅能把那些你输入的拼音字母转换成ip地址的数字串,它还支持把那些数字串转换成你想访问的实际的网

使用Bind9搭建DNS主从服务器

一.前提    互联网中的主机是基于ip地址来联系通信的,而ip地址不太容易记住,所以为了方便访问网络中的主机,人们为主机分配一个名称.通过将每台主机的名称与 它的ip地址建立一个一对一的映射,在访问网络中的主机时,可以直接使用主机的名称.而提供这种映射与查询的系统就叫名称解析系统,现在常用的为DNS(Domin Name System)系统. 二.使用Bind9搭建DNS主从服务器 在实际的工作中,可能需要我们自己配置的就是本地DNS服务器. 一套完整的DNS需要提供正向解析与反向解析的功能.

DNS服务之反向解析&子域&区域转发

测试环境说明        主DNS服务器:CentOS 6.8    192.168.1.6/24    10.1.154.97/16 zmingbo.com        从DNS服务器:CentOS 6.8    192.168.1.8/24    10.1.154.94/16        子域:CentOS 6.8  10.1.110.54/16 tech.zmingbo.com DNS检测命令 dig命令: dig [-t type ] [ -x addr ] [name] [@se

DNS服务正向、反向解析区域,主/从区域数据库复制,子域授权及基本安全控制

DNS是应用层的协议,默认使用UDP的53端口,也会用到TCP的53端口. DNS名称解析方式: 名称 --> IP:正向解析 第一段这种方式叫递归查询,只发出去一次请求,就给它返回答案:第二段这种方式就迭代查询,要发出多次请求,需要自己查询不同域名,最后才返回答案:这就是DNS的查询类型. 一般内网递归,外网迭代. IP --> 名称:反向解析 每一层服务器都有各自的数据库,来存储各自负责的网段,这与正向解析的数据库是两个各自独立的数据库. 一次完整的查询请求经过的流程: Client --

linux redhat6.5 中 构建DNS主从服务器

DNS主从服务器简介:主DNS服务器: 维护所负责解析的域内解析库的服务器:解析库由管理维护从DNS服务器: 从主DNS服务器或其它的从DNS服务器那里"复制"(区域传递)一份解析库 首先在两台linux中 构建DNS服务器 DNS的构建之前的文章中有详细教程:http://blog.51cto.com/13630803/2114574下面开始配置 主从同步.1:将虚拟机1 作为主DNS 编辑它的区域文件named.rfc1912.zones配置 正反解析allow-transfer

搭建mysql主从服务器

搭建mysql主从服务器: //注:注释掉my.cn文件中的skip-federated字段[[email protected] ]# /bin/cp -r /usr/local/mysql/share/mysql/my-huge.cnf  /etc/my.cnf 配置主服务器:修改my.cnf文件server-id=1 //每个数据库服务器都要指定唯一一个server-id log-bin=mysql-bin //mysql进行主从复制时通过二进制日志文件来进行的,所以必须开启mysql日志功

DNS服务正向、反向解析以及主从同步实操(有图有字,易做易懂)

DNS解析大体实操分为:1.DNS正向解析2.DNS反向解析3.DNS主从同步 一.DNS正向解析 1.安装bind工具包通过在线yum库进行安装bind软件包,构建DNS服务.2.修改全局配置文件 只需要修改两个选项:(1)将listen-on后面的IP地址修改为自身IP,作用为监听本机53端口.无论是谁通过本机DNS服务进行域名解析,都能够监听到:(2)将allow-query后面更改为any--这里允许任何人使用本机的DNS服务 3.修改区域配置文件 添加域名和区域数据文件名的文件,在zo

CentOS7上使用bind9搭建DNS主从服务器

一.bind简介 一.bind简介 Linux中通常使用bind来实现DNS服务器的架设,bind软件由isc(https://www.isc.org/downloads/bind/)维护.在yum仓库中可以找到软件,配置好yum源,直接使用命令yum install bind就可以安装.当前bind的稳定版本为bind9,bind的服务名称为named,监听的端口为53号端口.bind的主要配置文件为/etc/named.conf,此文件主要用于配置区域,并指定区域数据库文件名称.区域数据库文

架设DNS服务器(DNS主从服务器架设)

搭建DNS服务器 试验要求:以workstation(92.168.1.105)作为服务器,(可以做正向解析和反向解析),以server1(192.168.1.103)作为客户机验证 #安装bind服务 yum install bind-chroot bind-utils -y bind安装好之后会产生若干程序和配置文件:常见的如下: 主程序:/usr/sbin/named 主配置文件:/etc/named.conf 区域配置文件:/etc/named.rfc.1912.zones #配置bin