一、什么是DNS?

1.1 简单的理解,Domain Name System,是互联网一项核心的服务,他作为一个桥梁可以将域名和IP地址相互因素的一个分布式数据库,能够使人更加方便的访问互联网,而不用去记复杂的IP地址。

1.2 DNS分成3类:

主DNS

从DNS

转发DNS

1.3 DNS的查询方式

1.3.1 递归查询:只要发出递归查询,服务器必需回答目标IP与域名的映射关系。一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外DNS服务器发出查询请求,得到结果后转交给客户机;

1.3.2 迭代查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以使其他的DNS服务器地址。

一般DNS服务器之间属迭代查询,若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便再向DNS3发出请求;

二、主从DNS的搭建及域名的正反向解析

2.1 测试环境

准备2台虚拟机,一台为主DNS,IP地址为192.168.1.10,另一台为从DNS,IP地址为192.168.1.11

2台虚拟机都装好bind,

1
[root@localhostcw ~]# yum -y install bind
1
[root@localhostcw ~]# yum install -y bind-utils (包含一些配置和测试工具)

bind服务器端程序 
主要执行程序:/usr/sbin/named 
服务脚本:/etc/init.d/named 
默认监听端口:UDP和TCP的53 
主配置文件: /etc/named.conf 
保存DNS解析记录的数据文件位于:/var/named/

2.2 主DNS的配置文件

配置主配置文件/etc/named.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
options {
//      listen-on port 53 { any; };
//      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";
//      allow-query     { any; };
        recursion yes;
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
        /* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
};
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";

2.3定义工作目录,添加两个区域,一个正向解析,一个反向解析

编辑/etc/named.rfc1912.zones

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
添加这2
zone "cwlinux.com" IN {                    //正向解析
        type master;                      //类型为主DNS
        file "cwlinux.com.zone";          //正向解析文件位置
        allow-transfer { 192.168.1.11; }; //授权从DNS连接主DNS
        allow-update { none; };           //允许自动更新
};
zone "1.168.192.in-addr.arpa" IN {      //反向解析
        type master;                     //类型为主DNS
        file "192.168.1.zone";           //反向解析文件位置
        allow-transfer { 192.168.1.11; };//授权从DNS连接主DNS
        allow-update { none; };          //允许自动更新
};

2.3.1 在/var/named/目录中添加正反向解析文件

添加正向解析文件 cwlinux.com.zone

1
[root@localhostcw ~]# vim /var/named/cwlinux.com.zone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$TTL 600
@        IN   SOA    dns.cwlinux.com   dnsadmin.cwlinux.com. (//SOA字段
                          2015031288   //版本号    同步一次  +1
                             1H        //更新时间
                             2M        // 更新失败,重试更新时间
                             2D        // 更新失败多长时间后此DNS失效时间
                             1D        //解析不到请求不予回复时间
)
         IN    NS   dns            //有两域名服务器
         IN    NS   ns2
         IN    MX  10 mial        // 定义邮件服务器,10指优先级  0-99 数字越小优先级越高
ns2      IN    A    192.168.1.113  //ns2域名服务器的ip地址
dns      IN    A    192.168.1.10   //dns域名服务器的ip地址
mail     IN    A    192.168.1.111   //邮件服务器的ip地址
www      IN    A    192.168.1.112   //www.cwlinux.com的ip地址
pop      IN   CNAME  mail         //pop的正式名字是mail
ftp      IN   CNAME  www         //ftp的正式名字是www

添加反向解析文件 192.168.1.zone

1
[root@localhostcw ~]# vim /var/named/192.168.1.zone
1
2
3
4
5
6
7
8
9
10
11
12
13
$TTL 600
@         IN   SOA    dns.cwlinux.com.   dnsadmin.cwlinux.com. (
                             2014031224
                             1H
                             2M
                             2D
                             1D
)
         IN   NS      dns.cwlinux.com.
10       IN   PTR     dns.cwlinux.com.     //反向解析PTR格式
111       IN   PTR     mail.cwlinux.com.
112       IN   PTR     www.cwlinux.com.
// 声明域的时候已经有了,192.168.1 所以我们只需要输入10既代表192.168.1.10

 

检查语法错误

把两个自定义区域文件的属组改为named

1
2
#chown :named /var/named/cwlinux.com.zone   //若这步没做正向解析会出现”server can't find www.cwlinux.com:SERVFAIL”的错误
#chown :named /var/named/192.168.1.zone  //若这步没做反向解析会出现”server can't find 10.1.168.192.in-addr.arpa:SERVFAIL”的错误

安全起见,把这2个文件权限改成640

1
[root@localhostcw ~]# chmod 640 cwlinux.com.zone 1.168.192.zone

2.4 重启主DNS,然后在主DNS上测试正反向解析

 

反向解析

2.5 从DNS主配置文件

vim /etc/named.conf 和主DNS配置一样

编辑区域文件 /etc/named.rfc1912.zones

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
添加以下2
zone  "cwlinux.com" IN {                //正向解析
          type slave;                   //类型为从DNS
          masters { 192.168.1.10; };    //主DNS ip地址
        file "slaves/cwlinux.com.zone"// cwlinux.com.zone拷贝到slaves目录下(/var/named/slaves)
      allow-update { none; };           //允许自动更新
};
zone "1.168.192.in-addr.arpa" IN {   // 反向解析
          type slave;                //类型为从DNS
          masters { 192.168.1.10; };  //主DNS ip地址
         file "slaves/192.168.1.zone";// 192.16.1.zone拷贝到slaves目录下(/var/named/slaves)
        allow-update { none; };       //允许自动更新
};
~

重启从DNS

查看/var/named/slaves/

测试正向解析

三、主从同步

在主DNS /var/named/cwlinux.com.zone 中加一条A记录

主DNS重读配置文件

1
[root@localhostcw named]# service named reload

到从DNS上查看是否同步复制过来

从上图看出,数据已经同步传输过来了

这次先介绍了下基于bind实现的主从DNS的配置,正反向域名解析,主从复制这些内容,由于初学DNS,不足之处在所难免,敬请见谅!下次再来介绍下DNS的子域授权和转发机制,view机制!

基于Bind实现的DNS正反向解析及主从DNS的配置的更多相关文章

  1. linux服务基础之DNS正反向解析、主从同步、子域授权及视图

    关键词: 正向解析 反向解析 主从复制 自域授权 视图 一.DNS基本原理 1.1 什么是DNS?BIND又是什么? DNS:Domain Name Service,它是一个基于应用层的协议,是C/S ...

  2. bind域名dns解析及主从服务的配置

    bind域名dns解析及主从服务的配置 1.dns解析介绍     人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是多对一的关系,一个ip地址不一定只对应一个域名,且一个域名只可以对应 ...

  3. 架构师成长之路6.4 DNS服务器搭建(部署主从DNS)

    点击返回架构师成长之路 架构师成长之路6.3 DNS服务器搭建(部署主从DNS)  部署主DNS : 点击 部署从DNS : 如下步骤 1.与主DNS一样,安装bind yum -y install ...

  4. DNS正反向区域解析(二)

    域名查询工具 Nslookup命令 >server 202.106.0.20 #指定DNS服务器 >set q=A #指定要查询的类型(A,PTR,MX,CNAME,NS) >www ...

  5. DNS服务搭建(正反向解析)

    版权声明:本文为博主原创文章,支持原创,转载请附上原文出处链接和本声明. 本文地址链接:https://www.cnblogs.com/wannengachao/p/11954625.html 1.安 ...

  6. linux下DNS服务器搭建,正反向解析配置

    dns服务器之前自己搭建玩过,一段时间不搞,加上当时没写文档,基本忘光光了,这次老实了,写个文档记下来,方便以后查阅. 1.服务器准备 为了避免不必要的问题,关闭防火墙,关闭selinux,hosts ...

  7. Linux搭建基于BIND的DNS服务器

    Linux搭建基于BIND的DNS服务器   实验目标: 通过本实验掌握基于Linux的DNS服务器搭建. 实验步骤: 1.安装BIND 2.防火墙放通DNS服务 3.编辑BIND的主配置文件 4.编 ...

  8. Bind+DLZ+MySQL智能DNS的正向解析和反向解析实现方法

    使用文本配置文件的配置方式结合bind的最新的acl和view特性来实现智能DNS想必很多人已经很熟悉了,使用MySQL数据库来存放zone文件的方式可能也不少.对于两者都熟悉的,实现 Bind+DL ...

  9. DNS原理及其解析过程 精彩剖析

    本文章转自下面:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址 ...

随机推荐

  1. rancher下的kubernetes之三:在linux上安装kubectl工具

    本章是<rancher下的kubernetes>系列之三,前面两章我们完成了racher下搭建kubernetes环境的实战,本章我们来安装kubectl工具: 系列文章地址 <ra ...

  2. 7-26 Harry Potter's Exam(25 分)

    In Professor McGonagall's class of Transfiguration, Harry Potter is learning how to transform one ob ...

  3. 抽取JDBCTemplate

    抽取JDBCTemplate 为了解决DAO实现类中代码的重复问题,另外使得代码更通用,所以抽取一个公共的模板,使其更具有通用性. DAO实现类的代码 public class StudentDAOI ...

  4. ①Jenkins集成—入门安装使用

    一.什么是Jenkins jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各 ...

  5. git推送报错: No path specified. See 'man git-pull' for valid url syntax或does not appear to be a git repository以及remote: error: insufficient permission for adding an object to repository databa

    本地(windows)代码想推送到linux自己搭建的git服务端,第一步是建立本地与服务端的关联,第二步是本地推送到服务端. 第一步需要看你的本地工程是否从git上clone来的,如果是clone来 ...

  6. mac自己安装python的路径

    自己安装的python包的路径( 编辑器 import sys   print sys.path  可以看到很多需要的东西的位置 如python的解析器等) /Library/Python/2.7/s ...

  7. appium的三种等待方式 (还没实践过,记录在此)

    参考:https://testerhome.com/topics/2576

  8. configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/

    编译php出现错误: configure: error: Please reinstall the libcurl distribution - easy.h should be in <cur ...

  9. ps -ef 输出具体含义

    ps -ef 输出具体含义 UID        PID  PPID  C STIME TTY          TIME CMD 各相关信息的意义: UID 程序被该 UID 所拥有 PID 就是这 ...

  10. ueditor上传图片时目录创建失败的问题解决方法,不用那么麻烦,其实修改php/config.json这个配置文件里面的路径就行!!

    ueditor的真实上传路径提示出来,我进行了如下步骤: 找到了编辑器的上传处理类 Uploader.class.php,大约110行的位置找到了上传失败的提示位置, 将 $this->stat ...