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

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:

DNS是应用层的协议,默认使用UDP的53端口,也会用到TCP的53端口。

DNS名称解析方式:

名称 --> IP:正向解析

wKioL1cTI2_RHR3YAAK6uLUozo4821.png

第一段这种方式叫递归查询,只发出去一次请求,就给它返回答案;第二段这种方式就迭代查询,要发出多次请求,需要自己查询不同域名,最后才返回答案;这就是DNS的查询类型。

一般内网递归,外网迭代。


IP --> 名称:反向解析

wKiom1cTIwXjUuEDAAGHCVnpT9g722.png

每一层服务器都有各自的数据库,来存储各自负责的网段,这与正向解析的数据库是两个各自独立的数据库。


一次完整的查询请求经过的流程:

Client --> hosts文件 --> DNS Local Cache --> DNS  Server (recursion) --> 分两种情况:

(1)自己负责解析的域:直接查询数据库并返回答案

(2)不是自己负责解析域:Server Cache --> iteration(迭代)


主-辅DNS服务器:

主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行

从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作


在linux系统上实现DNS服务的程序是bind,安装bind程序,而bind程序安装后运行的进程名为named;

]# yum install bind

主配置文件:/etc/named.conf、/etc/named.rfc1912.zones

解析库文件/var/named/目录下,以区域名字命名:ZONE_NAME.zone

正向解析库文件:/var/named/named.localhost

反向解析库文件:/var/named/named.loopback


注意:根区域解析库文件named.ca、正向解析库文件named.localhost、反向解析库文件named.loopback都不是程序提供的,而是rpm包制作者提供的。


配置主DNS服务器

正向区域:

第一步:定义正向区域zone

]# vim /etc/named.con

修改内容:


listen-on port 53 { 127.0.0.1; 172.18.252.23; };

dnssec-enable no

//allow-query  { localhost; };


添加本地主机地址;把dnssec都改为no;关闭仅允许本地查询即加//注释:


]# vim /etc/named.rfc1912.zones 

添加内容:

zone "magedu.com" IN {

    type master;

    file "magedu.com.zone";

};


注意:在区域中定义的这个file指明的magedu.com.zone区域数据库文件还不存在,需要自己创建,如果在上面配置文件的file中定义的是相对路径,默认为在/var/named/目录下创建,且这个目录默认是不存在的


第二步:建立正向区域解析数据库文件(主要记录为A或AAAA记录)

一般默认在/var/named目录下建立,为magedu.com.zone区域创建编辑一个正向区域数据库文件,创建正向区域数据库文件,自己取名为magedu.com.zone。

区域数据库文件除了宏定义外,都是资源记录,第一条必须为soa记录。


]# vim /var/named/magedu.com.zone


$TTL 3600:单位是秒;

$ORIGIN magedu.com.

@       IN      SOA     ns1.magedu.com.     403868144.qq.com. (

    2016041001

    1H

    10M 

    3D

    1D )

             IN      NS      ns1

             IN      NS      ns2 

             IN      MX   10 mx1

             IN      MX   20 mx2

ns1     IN      A       172.18.11.2

ns2     IN      A       172.18.11.3

mx1     IN      A       172.18.11.4

mx2     IN      A       172.18.11.5

www     IN      A       172.18.11.2

web     IN      CNAME   www

bbs     IN      A       172.18.11.2


第三步:修改正向区域数据库文件的权限为其它不可读,属组为named

]# chown :named magedu.com.zone

]# chmod o= magedu.com.zone


第四步:语法检查

]# named-checkconf

]# named-checkzone magedu.com /var/named/magedu.com.zone


查看区域信息

]# rndc status

注意:正向区域名一定要与在/etc/named.rfc1912.zones文件中的zone定义的正向区域名一致;但zone中的区域名后的.可省略。


第五步:让服务器重载配置文件和区域数据文件

]# rndc reload


第六步:测试DNS服务器是否能解析

]# dig -t A www.magedu.com @172.18.250.131

]# host -t A bbs.magedu.com @172.18.11.2

]# dig -t NS magedu.com @172.18.11.2

]# host -t MX magedu.com @172.18.11.2


配置反向区域,配置步骤同配置正向解析区域相同

第一步:定义反向区域

]# vim /etc/named.rfc1912.zones


zone "11.18.172.in-addr.arpa" IN {

    type master;

    file "172.18.11.zone";

};


第二步:定义反向区域解析库文件(主要记录为PTR)
一般默认在/var/named目录下建立;反向区域解析库文件自己取名为172.18.250.zone。

]# vim 172.18.11.zone


$TTL 3600

$ORIGIN 250.18.172.in-addr.arpa.设置自动补上完整IP的内容;

@   IN  SOA     ns1.magedu.com.  403868144.qq.com. (

        2016041001

        1H

        10M

        3D

        12H ) 

   IN  NS      ns1.magedu.com. 

2 IN  PTR     ns1.magedu.com. 

3 IN  PTR     ns2.magedu.com.

4 IN  PTR     mx1.magedu.com.

5 IN  PTR     mx2.magedu.com.

2 IN  PTR     www.magedu.com. 

2 IN  PTR     bbs.magedu.com.

2 IN  PTR     bbs.magedu.com.


第三步:修改反向区域数据库文件的权限为其它不可读,属组为named


]# chgrp named 172.18.11.2.zone

]# chmod o= 172.18.11.2.zone 


第四步:检查语法

]# named-checkconf

]# named-checkzone 11.18.172.in-addr.arpa /var/named/172.18.11.zone

注意:反向区域名一定要与在/etc/named.rfc1912.zones文件中的zone定义的反向区域名一致;但zone中的区域名后的.可省略。


第五步:让服务器重载配置文件和区域数据文件

]# rndc reload


第六步:测试DNS服务器是否能反向解析


]# dig -x 172.18.11.2



以上配置为主DNS服务器配置过程。


配置从DNS服务器:

首先配置正向区域的从,再配置反向区域的从。

在从服务器上配置:

第一步:定义从区域

]# vim /etc/named.conf

listen-on port 53 { 127.0.0.1; 172.18.252.23; };

dnssec-enable no

//allow-query  { localhost; };


第二步:
配置从服务器为正向区域的DNS服务器

]# vim /etc/named.rfc1912.zones


zone "magedu.com"       IN {    

        type slave;

        file "slaves/magedu.com.zone";

        masters { 172.18.11.2; }

};


第三步:检查语法

]# named-checkconf


第四步:在主服务器上配置

]# vim /var/named/magedu.com.zone

ns2     IN      A       172.18.11.3


提示:添加一条ns记录,例如可以为NS2,这个名字和从服务器的自身主机名没关系,但是NS2要有一条A记录,指向从服务器主机即172.18.11.3是从服务器的IP地址;这条记录必须得有。


第五步:检查主服务器区域文件语法

]# named-checkzone magedu.com /var/named/magedu.com.zone


第六步:重载配置文件

]# rndc reload


第七步:在从服务器上操作,重载配置文件

]# rndc reload


测试从DNS服务器正向解析

]# dig -t A www.magedu.com @172.18.11.3 


验证从服务器能同步到正向解析数据库文件


在主服务器区域文件中新增一条pop3的记录,并递增序列号;

2016041003:系列号递增;

pop3    IN      A       172.18.11.6:添加pop3的A记录;

]# rndc reload


在从服务器上查看是否收到更新的区域数据库文件

]# dig -t A pop3.magedu.com @172.18.11.3


配置从服务器为反向区域的DNS服务器

第一步:在从服务器上主配置文件中添加反向区域

]# vim /etc/named.rfc1912.zones


zone "11.18.172.in-addr.arpa" IN {

        type slave;

        file "slaves/172.18.11.zone";

        masters { 172.18.11.2; };

};


第二步:检查主配置文件语法

]# named-checkconf


第三步:在主服务器的反向区域数据库文件中要确保有一条NS记录必须要有,还可以有ns对应的ptr记录

]# vim /var/named/172.18.11.zone


2016041002

    IN  NS      ns2.magedu.com.

3   IN  PTR     ns2.magedu.com.


第四步:检查反向区域文件语法

]# named-checkzone 11.18.172.in-addr.arpa /var/named/172.18.11.zone


第五步:重载

]# rndc reload


第六步:从服务器重载

]# rndc reload


查看从服务器是否同步到反向解析数据库文件

]# ls /var/named/slaves


测试从DNS服务器反解析

]# dig -x 172.18.11.2 @172.18.11.3


子域授权方法:

第一步:在父域的主DNS服务器上的正向区域数据库文件/var/named/magedu.com.zone上授权子域

]# vim /var/named/magedu.com.zone


2016041004

ops     IN      NS      ns1.ops

ns1.ops IN      A       172.18.11.4


第二步:重载

]# rndc reload


在子域服务器(172.18.11.4)上操作

第一步:编辑主配置文件

]# vim /etc/named.conf


listen-on port 53 { 127.0.0.1; 172.18.11.4; };

dnssec-enable no

//allow-query  { localhost; };


第二步:启动named程序

]# systemctl start named.service


第三步:配置172.18.11.4的服务器为ops.magedu.com子域的主服务器

]# vim /etc/named.rfc1912.zones


zone "ops.magedu.com" IN {

    type master;

    file "ops.magedu.com.zone";

};


第四步:在var/named/目录下创建file中指明的ops.magedu.com.zone正向区域数据库文件

]# vim var/named/ops.magedu.zone


$TTL 3600

$ORIGIN ops.magedu.com.

@   IN  SOA       ns1.ops.magedu.com.   403868144.qq.com. (

        2016041101 

        1H  

        10M 

        1D  

        2H ) 

    IN  NS          ns1 

ns1 IN  A           172.18.11.4

www IN  A           172.18.11.4


第五步:修改正向区域数据库文件权限为其它没有写权限,属组为named

]# chmod o= ops.magedu.zone 

]# chgrp named ops.magedu.zone


第六步:语法检查

]# named-checkzone ops.magedu.com ops.magedu.com.zone


第七步:重载

]# rndc reload


第八步:测试正向解析

]# dig -t A www.ops.magedu.com @172.18.11.4


在子域服务器上定义转发区域:

 第一步:编辑主配置文件

]# vim /etc/named.rfc1912.zones

zone "magedu.com" IN {

    type forward;

    forward only;

    forwaders { 172.18.11.2; 172.18.11.3; };

};


第二步:检查语法

]# named-checkconf


第三步:重载

]# rndc reload


第四步:测试

在父域服务器上解析子域

]# dig -t A www.ops.magedu.com @172.18.11.2


在子域服务上解析父域

]# dig -t A www.magedu.com @172.18.11.4


在子域服务器上定义全局转发:

第一步:编辑主配置文件

]# vim /etc/named.conf

在options段编辑:

forward only;

forwarders { 172.18.11.2; };



第二步:重载

]# rndc reload


第三步:测试baidu

]# dig -t A www.baidu.com @172.18.11.4


安全相关的配置

在子域服务器上,应该仅设定为允许从服务器区域传送

在主服务器上配置:仅允许从服务器区域传送;访问控制列表allow-transfer


]# vim /etc/named.rfc1912.zones

zone "magedu.com" IN {

    type master;

    file "magedu.com.zone";

    allow-transfer { slaves; };

};



在主服务器上配置访问控制列表:

编辑/etc/named.conf配置文件,在options段前添加slaves访问控制列表:

]# vim /etc/named.conf

acl slaves {

        172.18.11.3;

        127.0.0.1;

};


检查语法:

]# named-checkconf


重载:

]# rndc reload


在非从服务器上测试:

]# dig -t axfr magedu.com @172.18.11.2

设置成功。


在从服务器上测试区域传送:

]# dig -t axfr magedu.com @172.18.11.2


在主服务器上测试:

]# dig -t axfr magedu.com @172.18.11.2

]# dig -t axfr magedu.com @127.0.0.1


均显示区域传送失败;因为,使用本机172.18.11.2这个地址,在访问控制列表中没有定义所以不能传送;而127.0.0.1这个地址即使在访问控制列表中定义了,但因为没有在options段定义监听的地址,所以也不能进行区域传送;


修改主服务器配置文件/etc/named.conf,

]# vim /etc/named.conf

添加监听127.0.0.1:

listen-on port 53 { 127.0.0.1; 172.18.11.2; };

重启服务:

]# systemctl restart named.service

即可;


配置访问控制列表中的递归,仅允许为本地客户端做递归


修改主服务器配置文件/etc/named.conf,添加递归访问控制列表;

]# vim /etc/named.conf

添加:

acl mynet {

        127.0.0.0/8;

};

仅允许本地127网段做递归查询;

(把recursion yes;改为:)allow-recursion { mynet; };


重载:

]# rndc reload


因此,使用其它主机做递归都拒绝,如使用子域服务器递归查询baidu

]# dig -t A www.baidu.com @172.18.11.4

递归查询失败;


当在主服务器配置文件/etc/named.conf,添加172.18.11.4到递归访问控制列表即可实现递归;

]# vim /etc/named.conf

acl mynet {

        172.18.11.4/16;

        127.0.0.0/8;

};


重载:

]# rndc reload


此时,使用子域服务器递归查询baidu;

]# dig -t A www.baidu.com @172.18.11.4

成功递归;


对于从服务器,也要修改主配置文件/etc/named.rfc1912.zones,设定区域传送和递归查询的访问控制列表;

]# vim /etc/named.rfc1912.zones

zone "magedu.com"  IN {

        type slave;

        file "slaves/magedu.com.zone";

        masters { 172.18.11.2; };

        allow-transfer { none; };

        allow-update { none; }; 禁止进程动态更新,跟区域传送没关系;

};

zone "11.18.172.in-addr.arpa" IN {

        type slave;

        file "slaves/172.18.11.zone";

        masters { 172.18.11.2; };

        allow-transfer { none; };

        allow-update { none; };

};


在子域服务器上测试是否能通过从服务器对magedu.com域进行区域传送;

]# dig -t axfr magedu.com @172.18.11.3

显示失败;


]# dig -t axfr ops.magedu.com @172.18.11.4:子域可以为自己进行传送区域;因为子域没有做访问控制;


正常情况下,每一个域名服务器,只要没有从服务器,allow-transfer都应该是none,有从服务器,allow-transfer应该仅指向从服务器;而且每一个区域都应该是allow-update设为none,除非使用DDNS。










本文转自 crystaleone 51CTO博客,原文链接:http://blog.51cto.com/linsj/1764741,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
182 3
|
3月前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
3月前
|
安全 测试技术 数据安全/隐私保护
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
|
4月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
250 0
|
3月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
140 2
|
4月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
101 1
|
4月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
88 0
|
2月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
2月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
2月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

相关产品

  • 云解析DNS
  • 推荐镜像

    更多