人心不同 各如其面 如之奈何 如之奈何

——引子


  我们的目标很明了——构建一个具有根的、私有的DNS(Domain Name System)。

这里不会陈述太多关于DNS与BIND的基础知识,如果您需要查看一些基础性的文章,文章末尾附录之中有传送门。

上图摘自《DNS与BIND》中文第四版。

上图便是我们整个DNS系统的鸟瞰,您需要特别注意,由于我们整个过程需要启动6个相互关联的、位于GNU/Linux操作系统上的DNS服务器,一个小小的失误,极可能导致最终的失败,所以,在接下来的“游戏”里,您应该时刻知道我们目前处于系统的哪个位置。

此次实验共有6台服务器参与,他们皆位于VMnet2:192.168.31.0/24网络中,当然,如果加上Host主机,就是7台。

Host主机的IP地址默认为192.168.31.1,我们将Clone 1的IP设置为192.168.31.98,他将担负根DNS服务器的职责。Clone 2至Clone 6便直接对应设置为192.168.31.2依次至192.168.31.6。

下面,我们便开始此次游历。

Step root:

  目前位置——服务器Clone 1,192.168.31.98,职能为根DNS服务器。

各配置文件如下。

# /etc/named.conf
 acl listen_acl
{
any;
};
acl allow_query_acl
{
any;
};
acl allow_recursion_acl
{
none; # allow_recursion none
};
acl allow_transfer_acl
{
none;
};
acl allow_update_acl
{
none;
};
options
{
listen-on port { listen_acl; };
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 { allow_query_acl; };
allow-recursion { allow_recursion_acl; };
allow-transfer { allow_transfer_acl; };
allow-update { allow_update_acl; };
}; zone "." IN {
type master; #master
file "root.zone";
};
# /var/named/root.zone
 .         IN      SOA     dns-.dns.mil.  dns.mail.dns.mil.      

 .                    IN      NS      dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98
. IN NS dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98 cc. IN NS dns-cc-.dns.cc.
dns-cc-.dns.cc. IN A 192.168.31.3
org. IN NS dns-org-.dns.org.
dns-org-.dns.org. IN A 192.168.31.3 ;根域划分 子域授权

确认、启动根DNS服务。

Step cc & Step org

目前位置——顶级域DNS服务器Clone 3,192.168.31.3,我们将cc与org域的DNS服务皆放在Clone 3服务器上,其将担负顶级域DNS服务器的职能。

各配置文件如下。

# /etc/named.conf
 acl listen_acl
{
any;
};
acl allow_query_acl
{
any;
};
acl allow_recursion_acl
{
none;
};
acl allow_transfer_acl
{
none;
};
acl allow_update_acl
{
none;
};
options
{
listen-on port { listen_acl; };
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 { allow_query_acl; };
allow-recursion { allow_recursion_acl; };
allow-transfer { allow_transfer_acl; };
allow-update { allow_update_acl; };
};
zone "." IN {
type hint; #hint
file "root.cache"; #指定root DNS服务器的IP地址与FQDN
};
zone "cc" IN {
type master;
file "cc.zone";
};
zone "org" IN {
type master;
file "org.zone";
};
# /var/named/root.cache
 .                    IN      NS      dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98
. IN NS dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98
# /var/named/cc.zone
 $TTL 

 cc. IN SOA dns-cc-.dns.cc. dns-cc.mail.dns.cc.  (

         3H
15M
3D
1D
); cc. IN NS dns-cc-.dns.cc.
dns-cc-.dns.cc. IN A 192.168.31.3 eecs.cc. IN NS dns.eecs.cc.
dns.eecs.cc. IN A 192.168.31.4
# /var/named/org.zone
 $TTL 

 org. IN SOA dns-org-.dns.org. dns-org.mail.dns.org.  (

         3H
15M
3D
1D
); org. IN NS dns-org-.dns.org.
dns-org-.dns.org. IN A 192.168.31.3 free.org. IN A 192.168.31.3 just.org. IN NS dns.just.org.
dns.just.org. IN A 192.168.31.5

确认、启动顶级域DNS服务。

  Step eecs.cc

目前位置——eecs.cc域DNS服务器Clone4,192.168.31.4。

各配置文件如下。

# /etc/named.conf
 # /etc/named.conf
acl listen_acl
{
any;
};
acl allow_query_acl
{
any;
};
acl allow_recursion_acl
{
none;
};
acl allow_transfer_acl
{
none;
};
acl allow_update_acl
{
none;
};
options
{
listen-on port { listen_acl; };
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 { allow_query_acl; };
allow-recursion { allow_recursion_acl; };
allow-transfer { allow_transfer_acl; };
allow-update { allow_update_acl; };
}; zone "." IN {
type hint;
file "root.cache";
};
zone "eecs.cc" IN {
type master;
file "eecs.cc.zone";
};
# /var/named/root.cache
 ; /var/named/root.cache
. IN NS dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98
. IN NS dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98
# /var/named/eecs.cc.zone
 ; /var/named/eecs.cc.zone
$TTL eecs.cc. IN SOA dns.eecs.cc. dns.mail.eecs.cc. ( 3H
15M
3D
1D
); eecs.cc. IN NS dns.eecs.cc.
dns.eecs.cc. IN A 192.168.31.4 eecs.cc. IN A 192.168.31.4
mail.eecs.cc. IN A 192.168.31.4
www.eecs.cc. IN A 192.168.31.4
ftp.eecs.cc. IN A 192.168.31.4
cs.eecs.cc. IN A 192.168.31.4

确认、启动eecs.cc域DNS服务。

Step just.org

  目前位置——just.org域DNS服务器Clone 5,192.168.31.5。

各配置文件如下。

# /etc/named.conf
 # /etc/named.conf
acl listen_acl
{
any;
};
acl allow_query_acl
{
any;
};
acl allow_recursion_acl
{
none;
};
acl allow_transfer_acl
{
none;
};
acl allow_update_acl
{
none;
};
options
{
listen-on port { listen_acl; };
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 { allow_query_acl; };
allow-recursion { allow_recursion_acl; };
allow-transfer { allow_transfer_acl; };
allow-update { allow_update_acl; };
}; zone "." IN {
type hint;
file "root.cache";
};
zone "just.org" IN {
type master;
file "just.org.zone";
};
# /var/named/root.cache
 ; /var/named/root.cache
. IN NS dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98
. IN NS dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98
# /var/named/just.org.zone
 ; /var/named/just.org.zone
$TTL just.org. IN SOA dns.just.org. dns.mail.just.org. ( 3H
15M
3D
1D
); just.org. IN NS dns.just.org.
dns.just.org. IN A 192.168.31.5 www.just.org. IN A 192.168.31.5
mail.just.org. IN A 192.168.31.5

确认、启动just.org域DNS服务。

Step DNS Server

目前位置——递归DNS服务器Clone 6,192.168.31.6,此服务器直接向用户提供DNS服务。

各配置文件如下。

# /etc/named.conf
 acl listen_acl
{
any;
};
acl allow_query_acl
{
any;
};
acl allow_recursion_acl
{
any; # allow_recursion any
};
acl allow_transfer_acl
{
none;
};
acl allow_update_acl
{
none;
};
options
{
listen-on port { listen_acl; };
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 { allow_query_acl; };
allow-recursion { allow_recursion_acl; };
allow-transfer { allow_transfer_acl; };
allow-update { allow_update_acl; }; }; zone "." IN {
type hint;
file "root.cache";
};
# /var/named/root.cache 
 ; /var/named/root.cache
. IN NS dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98
. IN NS dns-.dns.mil.
dns-.dns.mil. IN A 192.168.31.98

确认、启动递归DNS服务。

至此,整个系统构建完成。

我们使用Clone 2主机对我们的DNS系统进行测试。

1.编辑/etc/resolv.conf文件,已达到设置系统默认nameserver的目的;

2.进行测试,结果如下图:

附录:

基础资料传送门:http://www.cnblogs.com/smilenana/p/3414077.html http://www.cnblogs.com/xiaoluo501395377/tag/CentOS/  

构建一个完整的DNS系统的更多相关文章

  1. 构建一个简单的Linux系统 MenuOs —— start_kernel到init进程(20135304刘世鹏)

    构建一个简单的Linux系统 MenuOs —— start_kernel到init进程 作者:刘世鹏20135304 <Linux内核分析>MOOC课程http://mooc.study ...

  2. 第三周——构建一个简单的Linux系统MenuOS

    [洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ] 第三周  构建一个 ...

  3. 快速构建一个完整的Selenium框架

    今天跟大家细讲如何构建一个完整的selenium框架,当你学会了这一篇你就也可以说自己会selenium自动化测试了. 1.新建项目,结构如图: 注意:整个项目除了最外层的是文件夹,其他的都是包(pa ...

  4. 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...

  5. Java程序员如何运用所掌握的技术构建一个完整的业务架构

    1.通用架构概述 创业之初,我们往往会为了快速迭代出产品,而选择最简单的技术架构,比如LAMP架构,SSH三层架构.这些架构可以适应初期业务的快速发展,但是,随着业务变得越来越复杂,我们会发现这些架构 ...

  6. 20135323符运锦----第三周:构建一个简单的Linux系统MenuOS

    相关知识点 1.arch目录 占据相当庞大的空间,X86目录下代码需要重点关注. 2.init目录 内核启动的相关代码基本都在此目录下,内含MAIN.C,文件中START_KERNEL是整个LINUX ...

  7. 【MEF】构建一个WPF版的ERP系统

    原文:[MEF]构建一个WPF版的ERP系统 引言 MEF是微软的一个扩展性框架,遵循某种约定将各个部件组合起来.而ERP系统的一大特点是模块化,它们两者的相性很好,用MEF构建一个ERP系统是相当合 ...

  8. 转载自 BotVS 「 珍藏版 」如何搭建一个完整的交易框架

    [img]http://dn-filebox.qbox.me/8c218c119046b2a25df2d9c7b00c1e0fa6899bdd.png[/img]NO:01 交易策略 ≠ 交易系统. ...

  9. Linux下一个简单的日志系统的设计及其C代码实现

    1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...

随机推荐

  1. 利用gcc 4.4 优化的方法

    Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...

  2. quick3.3rc1导入工程到ADT

    1.libcocos2dx  路径到/quick-3.3rc1/cocos/platform/android/java这一层 2.quick项目 路径到D:\codeide\test11\framew ...

  3. 笔记:webpack 打包参数 mode development

    webpack 打包参数 mode development 在开发时使用 webpack 打包后不压缩,所以只需要在 webpack 打包命令中加上 --mode mode development 即 ...

  4. table样式的下拉框(angularjs)

    前言 虽然使用的技术比较老了,但是思想却还是适用于现在的vue等框架. 一:实现的样式 二:实现包括的功能点 1:下拉框内容是表格,类似于一个弹窗 表格内容最多六行,超出的显示滚动条,表头固定,可滚动 ...

  5. SharePoint2013 中集成AD RMS 与Office Web App 2013集成

    SharePoint2010时Office Web App2010是一个让人又爱又恨的产品,尽管能够在WEB上查看与编辑文档,甚至能够多能协同编辑,但总会遇到两个看似普通的需求却需要给业务人员大费口舌 ...

  6. Xbox360游戏收藏

    xbox360游戏下载地址 http://dl.3dmgame.com/SoftList_221.html   XBLA游戏总结.http://tieba.baidu.com/p/3174478602 ...

  7. JAVA代码实现从文件写入东西后有读出来=========FileInputStream

    总结: 这个原理是,先把for循环里的数从程序读到文件里,然后把文件把内容读到程序里 package com.a.b; import java.io.FileInputStream; import j ...

  8. LockSupport分析

    LockSupport是java.util.concurrent.locks包中的一个工具类,主要提供了一些在创建锁和同步类中用来阻塞其他线程的原始操作. 当有多个线程需要获取同一个资源的锁的时候,如 ...

  9. [转]自己做 Visual Studio 2013 代码折叠插件

    本文代码来自:https://msdn.microsoft.com/zh-cn/library/ee197665.aspx 第一步.引用 -> 程序集 -> 扩展 里找到对应 .dll 添 ...

  10. Hessian简要入门

      原本系统之间通信采用Restful Web Service,但其中没有考虑安全性问题,因此决定使用稍微复杂点的二进制协议,Hessian服务.   Hessian是一个轻量级的Remoting O ...