您的位置:首页 > 其它

DNS正反解析、主从复制、子域授权、安全相关配置

2016-05-25 16:13 639 查看

原理:

我们都知道,在"记忆"的角色上,人脑总是不如计算机,而人们对文字的印象又比数字高。因此,想要使用纯粹的TCP/IP来上网,实在不好记忆又很麻烦,为了适应人类的使用习惯,一个名为DNS的服务帮我们将主机名解析为IP好让大家只要记得主机名就能使用Internet,由于目前的IPv4已经接近分配完毕的阶段,因此128bits的IPv6会逐渐热门起来,如果背128位的IP上网想必是不可能的,可以想象它会越来越重要。

域名和服务概述

FQDN:Fully Qualified Domaim Name 完全限定的全球唯一的主机名FQDN是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。

TLD:顶级域名

一般顶级域名:gTLD

.com 公司、行号、企业.org 不以盈利为目的的组织、机构.edu 教育单位.gov 政府单位.net 网络通信.mil 军事单位

国家顶级域名:ccTLD

.iq伊拉克.tw台湾.hk香港.jp日本.cn中国

DNS查询类型

客户机主机发送请求-->运营商-->存在,返回目标地址-->不存在--->(进行分布式DNS系统根节点,分布式运作向下迭代级别查询)-->根域-->顶级域-->二级域-->目标主机 客户机:递归查询,只请求查询一次运营商:迭代查询,求爷爷告奶奶式请求

DNS名称解析方式

正向解析:名称-->IP 域名转换为IP地址的操作反向解析:IP-->名称 IP地址转换为域名的操作以ip地址为线索查询,最顶端位置名字:in-addr.arpa例:1.2.3.4 -->写成4.3.2.1.in-addr.arpa,网段3.2.1.in-addr.arpa(加上4就是地址)注意:二者的名称空间,非为同一个空间,即非为同一棵树,也不是同一个解析库。

DNS服务器类型

负责解析至少一个域主名称服务器 (主胡同长)辅助名称服务器 (副胡同长)不负责解析域的(只告诉你去哪里找)本地缓存名称服务器 ,运营商就是缓存服务器

DNS服务器解析流程

首先查找本机HOSTS表,有就直接使用表中定义,无查找网络连接中设置的DNS 服务器由他来解析。 Client --> hosts文件 --> DNS LocalCache (本地DNS缓存)--> DNS Server (recursion,递归请求) -->--->自己负责解析的域:直接查询数据库并返回答案;--->不是自己负责解析域:Server Cache --> iteration(迭代方式查找分布式DNS系统根)解析答案分类: 1) 肯定答案:返回肯定答案 否定答案:不存在查询的键,因此,不存在与其查询键对应的值; 2) 权威答案:由直接负责的DNS服务器返回的答案; 非权威答案:从缓存中读取的答案

DNS区域(zone)和域(domain)

区域是物理概念,域是逻辑概念一个域由两个区域组成,magedu.com这个域,有正向解析区域和反向解析区域,但是域未必比区域大。(区域就是一个解析库zone)(域是一个概念模型domain)FQDN --> IP 正向解析库区域IP --> FQDN 反向解析库区域

区域数据库文件

资源记录:Resource Record, 简称rr;记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX

SOA:

语法:  name  [TTL]  IN   SOA  value
name:当前域的名字:例如"magedu.com."或"2.3.4.in-addr.arpa"
value:由多部分组成
(1)当前域的区域名称(也可以使用DNS服务器名称)
(2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般使用点号代替(3)主从服务协调属性的定义以及否定答案的TTL(4)一个区域解析库只能有一个SOA,而且必须放在第一条
magedu.com. 	86400 	IN 		SOA 	magedu.com. 	admin.magedu.com.  (				2017010801	; serial  序列号  				2H 			; refresh 刷新时间				10M 		; retry   重试时间				1W			; expire  终止时间				1D			; negative answer ttl 否定答案存活时间 )

NS:

用来记录域名解析服务器name:当前区域的区域名称(回想区域概念,正向解析区域..说明它就是个域名解析服务器)value:当前区域的某DNS服务器的名称,例如ns.magedu.com.一个区域可以有多个ns记录
语法:  name  [TTL]  IN   NS  value
magedu.com. 	86400 	IN 	NS  	ns1.magedu.com.    ns1和ns2就是用来解析magedu.com这个域的magedu.com. 	86400 	IN 	NS  	ns2.magedu.com.

A:

就是地址的缩写,后面记录着的IP地址与前面的域名相对应;同一域名可有多个IP地址,同一IP地址可有多个域名。name:某FQDN,例如www.magedu.com.value:某IPv4地址
www.magedu.com.   IN  A  1.1.1.1www.magedu.com.   IN  A  1.1.1.2bbs.magedu.com.   IN  A  1.1.1.1

AAAA:

主机名与IPv6的对应关系name:FQDNvalue: IPv6

PTR:

name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;value:FQND
4.3.2.1.in-addr.arpa.  	IN  PTR	www.magedu.com.

CNAME:

name:FQDN格式的别名;value:FQDN格式的正式名字;
web.magedu.com.  	IN  	CNAME  www.magedu.com.

MX:

name: 当前区域的区域名称value:当前区域某邮件交换器的主机名;注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;
magedu.com. 		IN 	MX 	10  	mx1.magedu.com.magedu.com. 		IN 	MX 	20  	mx2.magedu.com.
注意:(1) TTL可以从全局继承;(2) @表示当前区域的名称;(3) 相邻的两条记录其name相同时,后面的可省略;(4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

BIND的安装配置

概念、与所需程序包

BIND:美国加州伯克利大学研制,后交给ISC组织运营bind是nds协议的一种实现named:bind程序运行的进程名程序包:bind-libs:被bind和bind-utils包中的程序共同用到的库文件bind-utils:bind客户端程序集,例如dig host nslookupbind:提供dns server程序,以及几个常用的测试程序bind-chroot:选装,为了安全起见,让named进程运行在沙箱模式下,测试建议不装概念:将某个目录指定为BIND程序的根目录,由于已经是根目录,所以BIND便不能离开该目录,CentOS6.X默认将BIND锁在/var/named/chrootrpm -ql bind 查看安装各个文件的路径

BIND的配置文件

搭建BIND有两个数据要处理:BIND本身的配置文件,主要规范主机的设置、zone file的所在、权限的设置等正反解数据库文件(zone file)记录主机名与IP对应关系

配置文件作用:

BIND的配置文件为/etc/named.conf在这个文件里面可以规范zone file的完整文件名;也就是说zone file是由/etc/named.conf所指定的。所以zone file的文件名可以随意取。CentOS6.x默认目录:

主配置文件

rpm -ql bind 查看程序的配置文件、程序、库文件的路径/etc/named.conf 服务主配置文件    主配置文件组成:        /etc/named.iscdlv.key        /etc/named.rfc1912.zones  -->最重要        /etc/named.root.key

解析库文件

/var/named 区域解析库文件存放位置(即正反向解析库)一般名称为:zone_name.zone注意:一台DNS服务器可同时为多个区域提供解析;     必须要有根区域解析库文件:/var/named/named.ca     应该有两个区域解析库文件:localhost和127.0.0.1的正反相解析分别是/var/named/named.localhost 正向解析库文件/var/named/named.loopback  反向解析库文件以上三个文件不是默认提供的,可手动自己添加进去
~]#cat /etc/sysconfig/named 是否启动chroot及额外的参数   ROOTDIR=/var/named/chroot/var/run/named 程序执行时默认放置pid-file在此目录内
注意:为了系统安全性考虑,一般发行商都已经自动的将BIND相关程序给chroot了,并记录在/etc/sysconfig/named里面

主配置文件格式:

全局配置段:option{...}日志配置段logging{...}区域配置段zone{...}定义由本机解析或转发的区域注意:每一个配置语句必须以分号结尾,否则即为语法错误

配置缓存名称服务器:

编辑配置文件/etc/named.conf
设置监听的端口和IP地址	
listen-on port 53;      CentOS-7默认不支持
listen-on port 53 { 172.18.164.2; }; 地址写要做为缓存服务器的IP地址
学习时建议关闭dnssec
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
//allow-query {localhost} <--关闭仅允许本地查询 //可以注释配置文件语法检查named-checkconf /etc/named.conf启动服务systemctl restart named.service查询哪个进程监听在TCP的53号端口netstat -tunlp -->(named程序同时监听在UDP的53号端口)通过测试工具测试没有问题,本地缓存NDS服务器就可以使用了注册域名后,在后台修改ns记录,指向你的这台缓存服务器的IP地址rndc默认监听在953端口
rndc原理      named控服务器制命令    名称解析服务器的远程名称解析工具,例如更新缓存、清除缓存。安装在tcp/953端口,但默认监听于127.0.0.1地址,因此仅允许本地使用bind程序安装完成后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接可启动服务    CentOS-6:system named start    CentOS-7:systemctl start named.servicerndc使用方法一:[root@localhost ~]# rndc status     [root@localhost ~]# systemctl start named  <--使用rndc命令之前必须启动服务[root@localhost ~]# rndc statusversion: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>  <--服务器的版本号CPUs found: 1      <--CPU一个有1颗worker threads: 1  <--工作线程有4个UDP listeners per interface: 1number of zones: 101debug level: 0xfers running: 0    <--有没有进行过xfersxfers deferred: 0soa queries in progress: 0 <--正在进行的SOA查询一个有多少个query logging is OFF   <--查询日志功能是关闭的recursive clients: 0/0/1000 <--递归查询客户端一共有多少个tcp clients: 0/100  <--TCP客户端一共有多少个最多有100个server is up and running <--说明服务器处于启动状态rndc使用方法二:[root@localhost ~]# rndc stop <--可以远程关闭named服务 等同于systemctl stop named.servicerndc使用方法三:[root@localhost ~]# rndc flush <--清空服务器缓存,适用于服务器内容变更,着急更新    类似于你注册域名,在后台修改信息后,两个小时之内才能生效,因为缓存是有时长的	[root@localhost ~]# rndc reload <-- 重新装载配置文件和区域数据库文件[root@localhost ~]# rndc reload zone <--重启某一个区域

DNS系统测试工具:

host

~]# host -a FQDN [server]
-a:代表列出该主机所有的相关信息,包括IP、TTL、与排错信息。
~]# host -l domain [server]
-l:若后面接的domain域 设置允许allow-transfer时,则列出该domain所管理的所有主机名对应数据
server:如果想要利用非/etc/resolve.conf内的DNS主机来查询主机名与IP对应关系时,就可以利用这个参数,可不写
[object Object][object Object][object Object][object Object][object Object][object Object]

nslookup

~]nslookup [FQDN] [server]~]nslookup选项与参数:直接在nslookup后面加上 主机名或IP如果什么都不加则将进入nslookup的查询功能,可输入参数进行特殊查询    set type=any  :列出所有的信息,变更查询,不是仅有A,全部信息都列出来    set type=mx   :列出 mx 相关信息
举例说明:[root@localhost ~]# nslookup www.baidu.comServer:		172.18.0.1Address:	172.18.0.1#53  <--特别要注意DNS的IP是否正确 Non-authoritative answer:www.baidu.com	canonical name = www.a.shifen.com.Name:	www.a.shifen.comAddress: 61.135.169.121Name:	www.a.shifen.comAddress: 61.135.169.125  <--返回给你的IP地址[root@localhost ~]# nslookup>120.114.100.20  <--执行反解的查询...>www.baidu.com   <--执行正解的查询...>set type=any    <--变更查询,不仅有A,全部信息都列出来>www.baidu.com Server:		172.18.0.1Address:	172.18.0.1#53Non-authoritative answer:www.baidu.com	canonical name = www.a.shifen.com.Authoritative answers can be found from:  <--这是相关授权 DNS 说明baidu.com	nameserver = ns2.baidu.com.baidu.com	nameserver = ns4.baidu.com.baidu.com	nameserver = ns3.baidu.com.baidu.com	nameserver = dns.baidu.com.baidu.com	nameserver = ns7.baidu.com.dns.baidu.com	internet address = 202.108.22.220ns2.baidu.com	internet address = 61.135.165.235ns3.baidu.com	internet address = 220.181.37.10ns4.baidu.com	internet address = 220.181.38.10ns7.baidu.com	internet address = 119.75.219.82

dig

~]# dig [options] FQDN [@server]选项与参数:@server:如果不以/etc/resolv.conf 的设置来做为DNS查询,可以此填入其他的IPoptions:    +trace:就是从根开始追踪解析过程    +notrace:不从根开始追踪    +[no]recurse:进行递归解析    -t type:查询的数据主要有MX、NX、SOA等类型    -x:查询反解信息,非常重要    -t axfr 域名 [@server] 模拟完全区域传送,主从复制使用
[object Object][object Object][object Object][object Object]

配置解析一个正向区域:

以magedu.com域为例

步骤一:定义区域
   在主配置文件中或主配置文件辅助配置文件中实现
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};<--分别代表主服务器、从服务器、根服务器、转发服务器
            file "ZONE_NAME.zone";  <--指明区域数据文件在什么地方;在/var/named目录下
};
重要:在/etc/named.conf 中只定义了一个域hint;指向的named.ca在/var/named/named.ca;里面存储着13台根DNS服务器;如果想定义其他的域可以在配置文件下方的/etc/named1912.zones ,如果有说明遵循rfc1912规范。rfc:请求驻进文档。所以我们编辑/etc/named.rfc1912.zoneszone "magedu.com" IN {type master; <--这就新增了一个正向区域file "magedu.com.zone"; <--此文件在/var/named目录下};

步骤二:建立正向区域数据文件
     在/var/named目录下建立区域数据文件
     /var/named创建一个区域数据库文件即步骤一的file" ",权限640、属主root属组named
~]#vim /var/named/magedu.com.zone$TTL 3600 <--宏定义缓存时间为1个小时@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. ( <--@表示引用步骤一所定义的区域名称"magedu.com"建立区域数据文件第一条必须是SOA;格式规范详见目录SOA2017010808 序列号1H 刷新时间1个小时10M 重试时间10分钟3D 过期时间3天1D 否定回答的TTL值1天 ) <--此时SOA就已经编辑完成了
IN
NS ns1.magedu.com. <-- 第一位@不写表示同上;ns1.magedu.com.可以简写为ns1,它会自动补充步骤一所定义的magedu.com这个域,也可以在行首宏定义:$ORIGIN magedu.com.而后简写它会自动补充。IN NS ns2IN MX 10 mx1 <--如果有邮件服务器可以定义;ns1 IN A 172.18.164.2 <--定义ns1解析库服务器的A记录mx1 IN A 172.18.164.3 <--定义邮件服务器A记录www IN A 172.18.164.4<--为公司在互联网上被访问的服务器提供解析,IP地址就是被访问服务器的地址web IN CNAME WWW <-- web是www的别名bbs IN A 172.18.164.5bbs IN A 172.18.164.6 <--两个IP地址对应同一个名字,在被解析的时候,两个IP轮流被访问

步骤三:让服务器重载配置文件和区域数据文件
~]#chown :named /var/named/magedu.com.zone <--修改区域数据文件的属组为named~]#chmod o= /var/named/magedu.com.zone <--将其他用户的读权限删除~]#named-checkconf <--为步骤二做语法检测~]#named-checkzone magedu.com /var/named/magedu.com.zone<--检查magedu.com.zone这个区域的语法,前面是区域名 后面是文件
~]#rndc status <--查看number of zones,此时没有reload所以应为101
~]#rndc reload <--重载整个区域的内容,此时number of zones为102;此处也可以通过重启named服务达到重载效果
~]#cat /etc/resolv.conf <-- 查看DNS指向是否已经改为本机
~]#dig -t A www.magedu.com  @172.18.164.2 <--通过刚刚新建的DNS服务器来解析刚刚创建的www.magedu.com
~]#host -t A magedu.com <--测试查看magedu.com的A记录
~]#host -t MX magedu.com <--测试查看MX记录注册域名后,在后台修改ns记录,指向你的这台缓存服务器的IP地址,就可以负责某区域解析了

配置解析一个反向区域

步骤一:定义区域
在主配置文件中或主配置文件辅助配置文件中实现
zone "ZONE_NAME" IN {
     type {master|slave|hint|forward};<--分别代表主服务器、从服务器、根服务器、转发服务器
     file "ZONE_NAME.zone";  <--指明区域数据文件在什么地方
};
注意:反向区域的名字,反写的网段地址 .in-addr.arpa 即:164.18.172.in-addr.arpa
步骤一:定义区域解析库文件      主要记录为PTRvim /etc/named.rfc1912.zones          <--编辑位置同正向解析库文件zone "164.18.172.in-addr.arpa" IN {           type  master;                    <--定义一个反向区域解析库文件      file "172.18.164.zone";};

步骤二:建立反向区域数据文件重要:在/var/named创建一个区域数据库文件即步骤一的file" ",权限640、属主root属组named区域名称为164.18.172.in-addr.arpa. <--注意区域数据库文件和区域名称是相反的vim 172.18.164.zone$TTL 3600 <--定义缓存时间为1个小时$ORIGIN 164.18.172.in-addr.arpa. <--在这里可以简写IP,而不能简写ns1.magedu.com@ IN SOA ns1.magedu.com. nsadmin.magedu.com. ( <--格式和正向区域数据文件一样20170108011H 刷新时间1小时10M 重试时间10分钟3D 过期时间3天12H 否定回答的TTL值12小时 )IN NS ns1.magedu.com. <--此处ns1后面不可以省略注意:反向区域数据文件中不需要标记MX记录,你的每一个A记录只需要有PTR记录就可以2 IN PTR ns1.magedu.com. <--此处2后面会自动补充$ORIGIN定义的值3 IN PTR mx1.magedu.com.4 IN PTR www.magedu.com.5 IN PTR bbs.magedu.com.6 IN PTR bbs.magedu.com. <--此5行内容与正向区域库文件步骤二相呼应
步骤三:让服务器重载配置文件和区域数据文件~]#chgrp named 172.18.164.zone~}#chmod o= 172.18.164.zone~]#named-checkconf 为步骤二做语法检测~]#named-checkzone 164.18.172.in-addr.arpa  /var/named/172.18.164.zone <--前面的164.18.172.in-addr.arpa是区域名,要与步骤二$ORIGIN定义的宏定义保持一致~]#rndc reload ~]#rndc status <--发现number of zones 变为103~]#dig -x 172.18.172.2 <--测试反向解析示例

配置主从DNS服务器

从服务器有一个同主服务器一模一样的区域解析库注意:从服务器是区域级别的概念,如果一台服务器上有三个区域("正反解析区域")都是主的,当我们配置一台服务器做为从服务器时,它是针对服务器上的某个区域的从服务器,从服务器上只有某一个区域的副本。如果一台主机即配置了正向区域解析又配置了反向区域解析,想通过从服务器备份时,都需要在从服务器上做配置。也可以两台服务器,A服务器做正向区域的主、B服务器做反向区域的从;A左反向区域的从、B做正向区域的主,因为他们是区域级别的概念,所以非常灵活在公司当中我们让一台服务器正向反向都是主,一台服务器正向反向都是从,我们如何让他们都提供服务呢

配置一个正向解析的从区域

步骤一定义一个从区域    ~]#ssh root@172.18.164.3 <--连接CentOS-6服务器    ~]#yum install bind -y    ~]#vim /etc/named.conf后续配置和缓存服务器配置方式一样 <--目录查询缓存服务器配置vim /etc/named.rfc1912.zoneszone  "magedu.com"  IN {     type slave;   <--类型为从服务器      file "slaves/magedu.com.zone";     masters { 172.18.164.2; };<--告诉它主服务器是谁}; ~]#named-checkconf <--检查主配置文件语法
步骤二返回172.18.164.2主服务器~]#vim /var/named/magedu.com.zone  <--编辑区域数据文件ns2    IN    A    172.18.164.3 <--添加一个A记录指向从服务器172.18.164.3~]#named-checkzone magedu.com /var/named/magedu.zone<--检查magedu.com.zone这个区域数据库文件的语法注意:如果从服务器启动了,在修改主服务器数据库文件后要将序列号版本号+1~]#rndc reload <--重载数据库文件~]#rndc status <--确认server is up and running

步骤三
返回172.18.164.3从服务器~]#rndc reload~]#systemctl status named.service <--可以查看到从服务器在执行重载命令之后,所做的动作~]#cd /var/named/slaves <--可以发现magedu.com.zone区域数据库文件已经传递到从服务器的此目录中~]#dig -t A www.magedu.com @172.18.164.3 <--使用从服务器解析发现解析成功

步骤四
返回172.18.164.2主服务器,添加区域数据文件从而可以对从服务器进行测试~]#vim /var/named/magedu.com.zone序列号+1pop3 IN A 172.18.164.7~]#rndc reload pop3.magedu.com <--将来区域特别多的时候,就要学会重启某一个区域~]#systemctl status named.service <--此时查看状态 ,此处缺一张图此时返回172.18.164.3从服务器~]#systemctl status named.service <-- 来这里确认从服务器有没有接收到通知~]#dig -t A pop3.magedu.com @172.18.164.3 <--使用从服务器对pop3进行解析,如果解析成功说明更新成功;成功的标志在于pop3的IP是不是在与前面定义的一致

配置一个反向解析的从区域:

配置方式与正向从服务器配置方式一致,此处注释略简
步骤一:连接172.18.164.3从服务器vim /etc/named.rfc1912.zones <--编辑从服务器的主配置文件zone "164.18.172.in-addr.arpa" IN {      type  slave      <--说明是从服务器      file "slaves/172.18.164.zone";   <--指明区域数据文件在什么地方      masters { 172.18.164.2; }; <--告诉它主服务器的IP地址};~]#named-checkconf <--检查语法

步骤二:
连接172.18.164.2主服务器,编辑反向解析区域数据文件,为从服务器添加新条目vim /var/named/172.18.164.zone序列号+1IN NS ns2.magedu.com. <--ns记录必须得有3 IN PTR ns2.magedu.com. <--为ns2填加一个反解记录,不是必须的~]#named-checkzone 164.18.172.in-addr.arpa /var/named/172.18.164.zone <--检查语法~]#rndc reload
步骤三:连接172.18.164.3从服务器~]#rndc reload  <--重载区域数据文件~]#dig -x 172.18.164.2 @172.18.164.3 <--使用从服务器解析主服务器

步骤四:
在主服务器反向区域库文件中添加pop3对从服务器进行测试
vim /var/named/172.18.164.zone <--编辑反向区域数据库文件序列号+17 IN PTR pop3.magedu.com. <--添加pop3的反解记录~]#rndc reload~]#systemctl status named.service <--详细参数的含义,可以查看上题步骤四~]#ssh root@172.18.164.3 <--返回从服务器172.18.164.3~]#dig -x 172.18.164.7 @172.18.164.3 <--使用从服务器来反向解析pop3---------------------至此反向解析的从区域已经制作成功----------------------------------

手动进行区域传送

区域传送:全量传送:axfr,传送整个数据库,一般在第一次传送增量传送:lxfr,仅传送变化的数据
dig -t axfr magedu.com @172.18.164.2 <--手动去传送主服务器的正向区域库文件,如果不成功可能防火墙dig -t axfr 164.18.172.in-addr.arpa @172.18.164.2 <--手动去传送主服务器的反向区域库文件    这种传送方式是特别不安全的,通过这两条记录就可以查看出公司的拓扑结构,所以我们的主服务器只能给从服务器做传送,其他服务器想要传送都要拒绝。方法:制作访问控制!!!在尾部有相关说明

时间控制

重要:主从两台服务器时间要同步ntpdate命令:连接到互联网上的一个时间服务器

子域授权

二级域是我们的三级域就可以随意定义,联系公司各个部门,都应该有自己的服务器,因为公司上万人让一台DNS服务器去解析压力会很大,分成部门每个部门一台子域DNS解析服务器,就轻松很多,过程就是在父DNS服务器中定义区域解析条目
例:www.magedu.com <--二级域www.fin.magedu.com <--三级域<--子域

正向解析区域授权子域的方法:

步骤一:连接172.18.164.2 父服务器vim /var/named/magedu.com.zone <--编辑正向区域库文件,且只能编辑正向,新加一个资源记录序列号+1fin IN NS ns1.fin <--为子域名加一台ns服务器,这句话意思是fin.magedu.com 这台服务器对应着ns1.fin.magedu.comns1.fin IN A 172.18.164.8 <--该A记录就是新加的子域服务器的IP地址注意:如果子域服务器还有从服务器,这里也可以把从服务器定义进来~]#rndc reload

步骤二:
新开辟一台服务器,做为一个子域服务器,它本身必须是主服务器(此处关系较为复杂,多想想)首先配置一个缓存DNS服务器yum install bind -y <--安装bindvim /etc/named.conf...{ 127.0.0.1; 172.18.164.8; } <--此处写明允许listen一个外部的主机... <--此处和缓存服务器过程一样略...~]#systemctl start named.service~]#ss tunlp <--查看53号端口是不是被named进程所占用vim /etc/named.rfc1912.zones <--新增一个区域主配置文件zone "fin.magedu.com" IN {type master;file "fin.magedu.com.zone"; <--此文件在/var/named/下};vim /var/named/fin.magedu.com.zone$TTL 3600$ORIGIN fin.magedu.com.@ IN SOA ns1.fin.magedu.com. nsadmin.fin.magedu.com. (20160110101H10M3D1D )IN NS ns1ns1 IN A 172.18.164.8www IN A 172.18.164.8<---至此子域服务器就定义好了
步骤三:连接到父域服务器172.18.164.2vim /var/named/fin.magedu.con.zone  <--在父域服务器上为子域添加正向解析数据库文件$TTL  3600$ORIGIN fin.magedu.com.@    IN    SOA    ns1.fin.magedu.com.    nsadmin.fin.magedu.com (           2018010801           1H             10M           1D           2H )      IN    NS     ns1ns1   IN    A      172.18.164.8    <--此处指向子域DNS服务器www   IN    A      172.18.164.8 ~]#chmod o= fin.magedu.com.zone    ~]#chgrp named fin.magedu.com.zone~]#named-checkzone fin.magedu.com /var/named/fin.magedu.com~]#rndc reload ~]#dig -t A www.fin.magedu.com @172.18.164.8 <--使用子域服务器测试解析~]#dig -t A www.fin.magedu.com @172.18.164.2 <--使用父域解析子域服务器

定义转发域:

因为子域无法解析父域的服务器,因为子域只是负责父域中的某一块儿,所以他要通过根去解析,此时我们不想让他通过根去解析父域中的内容,因为本来就是自家的事儿;
区域转发:仅准发特定区域的解析请求zone "ZONE_NAME" IN {type forward;  <--转发forward {first|only};<--转发方式forwarders { SERVER_IP; } <--转发给谁},first:首先转发,转发器不响应时自行迭代查询only:只转发,转发器不响应就一直等着
区域转发步骤一:
连接子域服务器:172.18.164.8
vim /etc/named.rfc1912.zones  <--编辑子域服务器的主配置文件
zone "magedu.com" IN {type forward; <--类型为转发forward only; <--只转发,转发器不响应就等着forwarders { 172.18.164.2; 172.18.164.3; }; <--即可以转发主域又可以转发从域};~]#named-checkconf~]#rndc reload~]#dig -t A www.magedu.com @172.18.164.8 <--使用子域服务器解析父域www.magedu.com 3600 IN A 172.18.164.2 <--子域成功解析父域注意:此时只能解析父域服务器上的数据文件,并不去、也不能解析百度,因为父域服务器中没哟定义百度,如果想解析百度需要定义全局转发,只要子域中没有的就让父域去解析
全局转发步骤一:连接子域服务器172.18.164.8vim /etc/named.conf <--编辑子域服务器的主配置文件,的options选项forward only;forworders { 172.18.164.2; }; <--此两项添加到options中,含义只要子域服务器不负责,统统转发给父域服务器,计算机会先找zone中有没有定义区域转发,如果没有就找options

bind中的安全相关的配置:

acl:访问控制列表;把一个或多个地址归并为一个命名集合,随后通过此名称即可对此集合内的所有主机实现统一调用。
示例:
递归就只应该对本地客户端递归,不能为互联网上的其他主机递归
acl mynet {172.16.0.0/16;127.0.0.0/8;};bind有四个内置的aclnone:没有一个主机any:任意主机local:本机localnet:本机所在的IP所属的网络

访问控制指令一:allow-query {}; 允许查询的主机;白名单allow-transfer {}; 允许向哪些主机做区域传送,默认为向所有主机;但应该配置为仅允许从服务器;dig -t A www.magedu.com @172.18.164.2 <--此时默认任意一台主机执行此命令都会被164.2所解析,但是这样及其不安全我们应该如何做呢?

步骤一~]#vim /etc/named.rfc.1912.zone <--编辑父域主DNS服务器的辅助配置文件即172.18.164.2allow-transfer { slaves; }; <--在正向解析配置文件zone "magedu.com" IN 中添加slaves访问控制列表;有从服务器就指向slaves没有就为none~]#vim /etc/namd.conf <--编辑主配置文件acl slaves {172.18.164.3;127.0.0.1; <--注意如果父域主DNS服务器想要解析自己出了在这里定义还要在options中监听127.0.0.1172.18.164.4; <--添加所有可以通过父域主DNS服务器解析地址 的子域服务器的IP或从服务器的IP};对于从DNS服务器172.18.164.3来说就要将/etc/named.rfc.1912.zones 中各个区域配置文件添加上allow-transfer { none; }; <-- 从服务器不需要为任何主机解析地址

访问控制指令二: allow-recursion {};允许哪些主机向当前DNS服务器发起递归查询请求;默认为全部允许,定义在了/etc/named.conf中的options下的recursion yes <--表示谁都允许,如果只想给本地主机递归可以自己定义

步骤一:vim /etc/named.confacl mynet {172.16.0.0/16; <--这表明只给这个网络中的所有主机递归127.0.0.0/8;};将resursion yes 替换为 allow-recursion { mynet; };-------至此即可实现只给这两个网络中的主机递归的效果了-------

访问控制指令三:allow-update {}; DDNS,是否允许动态更新区域数据库文件中的内容如果不是专门做DDNS,默认都是allow-update { none; };vim /etc/named.rfc.1912.zone <--编辑从区域服务器将allow-update { none; };放置在区域配置文件下方此时再使用:dig -t axfr magedu.com @172.18.164.3 就无法将数据库传送过来了,服务器才能保证安全

智能DNS的实现

内网主机访问线上的web服务器,需要解析到外网,然后又回到内网,这样是没必要的。同一个主机名解析不同用户的请求,可以让他得到不同的地址。如果是来自于内网的我们就解析成172.18.164.2 ,如果是来自互联网的我们就解析成1.1.1.1在天朝DNS服务器中,一般都有两个IP地址,一个是电信的一个是联通的;我们想要实现电信用户就自动解析为电信的IP地址,联通用户就解析成联通的IP地址,这样速度会很快在配置文件中定义 view 视图
   格式:       view internal {         <--面向于内网访问           match-clients { 172.16.0.0/8; }; <--这个网络中的所有主机只能通过内网访问       zone "magedu.com" IN {     type master;                file "magedu.com/internal";};};
view enternal {                  <--面向于外网的访问
match-clients { any; }; <--这个网络中的所有主机只能通过外网访问
zone "magedu.com" IN {
type master;
file magedu.com/external
};
};
重启服务也可以:定义一个acl把联通地址全写进去定义一个acl把电信地址全写进去whois有什么用对named做压力测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dns