构建一个完整的DNS系统
人心不同 各如其面 如之奈何 如之奈何
——引子
我们的目标很明了——构建一个具有根的、私有的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系统的更多相关文章
- 构建一个简单的Linux系统 MenuOs —— start_kernel到init进程(20135304刘世鹏)
构建一个简单的Linux系统 MenuOs —— start_kernel到init进程 作者:刘世鹏20135304 <Linux内核分析>MOOC课程http://mooc.study ...
- 第三周——构建一个简单的Linux系统MenuOS
[洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ] 第三周 构建一个 ...
- 快速构建一个完整的Selenium框架
今天跟大家细讲如何构建一个完整的selenium框架,当你学会了这一篇你就也可以说自己会selenium自动化测试了. 1.新建项目,结构如图: 注意:整个项目除了最外层的是文件夹,其他的都是包(pa ...
- 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...
- Java程序员如何运用所掌握的技术构建一个完整的业务架构
1.通用架构概述 创业之初,我们往往会为了快速迭代出产品,而选择最简单的技术架构,比如LAMP架构,SSH三层架构.这些架构可以适应初期业务的快速发展,但是,随着业务变得越来越复杂,我们会发现这些架构 ...
- 20135323符运锦----第三周:构建一个简单的Linux系统MenuOS
相关知识点 1.arch目录 占据相当庞大的空间,X86目录下代码需要重点关注. 2.init目录 内核启动的相关代码基本都在此目录下,内含MAIN.C,文件中START_KERNEL是整个LINUX ...
- 【MEF】构建一个WPF版的ERP系统
原文:[MEF]构建一个WPF版的ERP系统 引言 MEF是微软的一个扩展性框架,遵循某种约定将各个部件组合起来.而ERP系统的一大特点是模块化,它们两者的相性很好,用MEF构建一个ERP系统是相当合 ...
- 转载自 BotVS 「 珍藏版 」如何搭建一个完整的交易框架
[img]http://dn-filebox.qbox.me/8c218c119046b2a25df2d9c7b00c1e0fa6899bdd.png[/img]NO:01 交易策略 ≠ 交易系统. ...
- Linux下一个简单的日志系统的设计及其C代码实现
1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...
随机推荐
- 利用gcc 4.4 优化的方法
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...
- quick3.3rc1导入工程到ADT
1.libcocos2dx 路径到/quick-3.3rc1/cocos/platform/android/java这一层 2.quick项目 路径到D:\codeide\test11\framew ...
- 笔记:webpack 打包参数 mode development
webpack 打包参数 mode development 在开发时使用 webpack 打包后不压缩,所以只需要在 webpack 打包命令中加上 --mode mode development 即 ...
- table样式的下拉框(angularjs)
前言 虽然使用的技术比较老了,但是思想却还是适用于现在的vue等框架. 一:实现的样式 二:实现包括的功能点 1:下拉框内容是表格,类似于一个弹窗 表格内容最多六行,超出的显示滚动条,表头固定,可滚动 ...
- SharePoint2013 中集成AD RMS 与Office Web App 2013集成
SharePoint2010时Office Web App2010是一个让人又爱又恨的产品,尽管能够在WEB上查看与编辑文档,甚至能够多能协同编辑,但总会遇到两个看似普通的需求却需要给业务人员大费口舌 ...
- Xbox360游戏收藏
xbox360游戏下载地址 http://dl.3dmgame.com/SoftList_221.html XBLA游戏总结.http://tieba.baidu.com/p/3174478602 ...
- JAVA代码实现从文件写入东西后有读出来=========FileInputStream
总结: 这个原理是,先把for循环里的数从程序读到文件里,然后把文件把内容读到程序里 package com.a.b; import java.io.FileInputStream; import j ...
- LockSupport分析
LockSupport是java.util.concurrent.locks包中的一个工具类,主要提供了一些在创建锁和同步类中用来阻塞其他线程的原始操作. 当有多个线程需要获取同一个资源的锁的时候,如 ...
- [转]自己做 Visual Studio 2013 代码折叠插件
本文代码来自:https://msdn.microsoft.com/zh-cn/library/ee197665.aspx 第一步.引用 -> 程序集 -> 扩展 里找到对应 .dll 添 ...
- Hessian简要入门
原本系统之间通信采用Restful Web Service,但其中没有考虑安全性问题,因此决定使用稍微复杂点的二进制协议,Hessian服务. Hessian是一个轻量级的Remoting O ...