BIND 9 documentation阅读笔记

简介:

BIND

http://ftp.isc.org/isc/bind9/cur/9.7/doc/arm/Bv9ARM.ch01.html#id2564720


2013年08月06日 星期二 21时20分51秒

Chapter 1

一、DNS(The Domain Name System),是一个分层设计的,分布式的数据库

The Domain Name System (DNS) is a hierarchical, distributed database. It stores information for mapping Internet host names to IP addresses and vice versa, mail routing information, and other data used by Internet applications.


二、Domains和Domain Names

DNS中存储的数据称为domain names,domain names按照组织或管理边界组织成一个树状结构,树状结构中的每一个节点称为domain,每个domain都被指定一个标签。每个节点的domain name都是从该节点到root节点的所有标签中的一个环节,它在写法上表示成:从右到左,以‘.’分隔的一系列标签字符串;每个标签在其父domain中都是唯一的;例:ourhost.example.com。

为了管理方便,domain names分隔成多个区域,称之为zones,每一个zone都是从一个节点开始,向下延伸到节点的末尾,或者到其它节点开始的地方。每个zone中的所有数据(domain names)存储在一个name server中,name server用来响应关于该zone的查询请求。


2013年08月07日 星期三 13时22分15秒

三、zone和domain

每个zone都是DNS tree中的一个授权点。一个zone由doamain tree上相邻的区域组成,该zone的name server包含这些区域的完整信息(指domain names数据),并拥有这些区域的管理授权。

尽管BIND被称为“domain name server”,它却主要用于处理zone,named.conf配置文件中的master和salve声明,指是的zone,而不是domains。


四、Authoritative Name Servers(主域名服务器)

每个zone都至少有一台主域名服务器,它存储有该域中的所有数据(指domain names);为了网络和DNS的容错考虑,多数zone都会有两个或以上的主域名服务器部署于不同的网络中。

主域名服务器的应答包中包含'authoritative answer(AA)'标志,这使得排错更容易。


主域名服务器根据不同的角色,分为:primary、slave和stealth

primary:

   用于维护zone中的数据,数据通常从一个本地文件中载入,该本地文件一般是由人为编辑的,或以其它人为编辑的文件为模板,由机器生成,这个文件称为zone file或master file。某些情况下,master file根本不是由人来编辑的,而是由操作系统动态生成的。

slave servers:

   使用一种zone transfer的技术,从primary中获取zone数据,也可以从其它slave中获取数据,因此一个slave server也可以是其它slave的primary。  

stealth servers:

   通常,一个zone的所有主域名服务器都会在其父zone的NS记录中列出来;而一个zone的stealth server却不会被NS记录所列出;它通常用于保存一个zone的本地副本,以加速对该zone的访问,或者充当高可用角色,即使primary或slave不好用时,也可以保证该zone的可用。

   Usually all of the zone's authoritative servers are listed in NS records in the parent zone. A stealth server is a server that is authoritative for a zone but is not listed in that zone's NS records. Stealth servers can be used for keeping a local copy of a zone to speed up access to the zone's records or to make sure that the zone is available even if all the "official" servers for the zone are inaccessible.

   配置primary时,在配置文件中把它设置成"hidden primary",就可以把它设置成stealth server。当primary位于防火墙后面,不能被网络直接访问时,我们可以把它设置成stealth server.


五、Caching Name Servers

   操作系统中提供的DNS解析器通常是“stub resolver”,它不具备实施完整DNS解析的能力。stub解析器并不知道如何解析查询,它需要把所有查询发送给本地命名服务器来实施解析。关于stub resolver,参考:http://man.lupaworld.com/content/develop/rfc/RFC1612.htm

   实施查询的本地命名服务器,称之为“recursive name server”(递归命名服务器),它为本地客户端实施递归查询,为了提高查询性能,recursive servers通常会缓存它们查询结果,由于递归查询和缓存紧密联系在了一起,recursive servers和caching server经常作为同义词使用。

   Since the processes of recursion and caching are intimately connected, the terms recursive server and caching server are often used synonymously.

   cache的存活时间由资源记录(resource recoder)的TTL决定。


   forwarding:

   caching name server把自己不能解析的请求,转发到另外一个caching name server,那么后一个caching name server称为forwarder。配置DNS是一般会指定一个或多个forwarder,它们依次被查询,直到所有forwarder被遍历,或者解析到查询结果。

   forwarder很有用。在一个配置有防火墙的网络中,不是所有服务器都可以穿透防火墙进行传递数据,这时它可以把解析请求转发到一台可以穿透内网的forwarder,由它来解析查询。

   Servers unable to pass packets through the firewall would forward to the server that can do it, and that server would query the Internet DNS servers on the internal server's behalf.


六、Name Servers in Multiple Roles

   一台name server可以充当多个角色,它既可以是一个zone的primary,也可以其它zone的slave,或者是一大堆本地服务器的caching server;但是最好把这些角色分开运行于不同的服务器上。

   主域名服务器一般会禁用recursive,以提高可靠性和安全性;而如果一台name server只需要为本地client提供查询而不是为全部zone提供查询,则可以把它放到防火墙后面。


2013年08月08日 星期四 13时41分02秒 

chapter 3  Name Server Configuration    

   两个简单示例,一个是caching-only的配置示例,一个是authoritative-only的配置示例。详细的配置选项,参考文档的第六章。


   caching-only name server配置分析:

   这个配置示例,仅允许corpnets(即:192.168.4.0/24,以及192.168.7.0/24网段)中指定的主机使用该name server来解析其DNS请求。

   acl acl_name {ip/mask;};

       访问控制列表,acl关键字后面跟一个控制列表名称,后面跟一个花括号,花括号里是以;分隔的ip列表,可以使用any、none、localhost、localnets预定义匹配列表,花括号后面是一个分号。访问控制列表里的ip地址,将由options配置来决定是否允许他们访问该zone的name server。

   options {};

       options配置段中的选项用于配置其后面的所有zone的公共属性,也可以在相应的zone中指定相关属性,zone中的设定可以覆盖options里的设定。

   zone ip/domain {};

       配置每一个zone的特有属性。

       type:决定zone的角色;file:资源记录文件路径;notify:当zone data发生变化时,决定primary是否通知它的slave。


   authoritative-only name server配置分析:

   该配置指定了example.com的主域名服务器,以及eng.example.com的slave域名服务器。

   共同的部分略掉。

   allow-query-cache {none};   该name server禁用cache功能,对于用户发送过来的请求,name server不会在自己的cache数据中查询。

   recursion no;   禁止递归查询,防止被攻击。在BIND 9.4及以后版本中,禁止递归要同时关闭两个选项:recursion和allow-query-cache。

   allow-transfer {ip;};   该name server查找不到数据,该把向哪个forwarder转发请求


dig语法:dig @ip domain


chapter 6 --> Configuration File Grammar

   BIND 9配置文件中可以有很多种配置段,最常用的有如下几个:

   acl:定义一个ip列表,用于访问控制,及其它用途

   include:很好用的选项,可以使用配置文件模块化,规则化。可以把通用的,或最常用的配置写成一个或几个文件,当用到它们的时候,直接include

   logging:使用channel语句和category语句来定义日志输出。channel语句配置设定日志输出位置(输出到单独的文件、还是syslog,或stderr)、日志记录级别,category设定日志类别

   options:公共属性设定

   zone:最主要的配置

   view:用于DNS分离策略

每个配置段中的选项,用到时候查看一下官方文档。      


本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/1266871


相关文章
|
2月前
|
中间件
SAP UI5 Tooling 实战:动手创建自己的 Custom UI5 Server Middleware 试读版
SAP UI5 Tooling 实战:动手创建自己的 Custom UI5 Server Middleware 试读版
18 0
SAP UI5 Tooling 实战:动手创建自己的 Custom UI5 Server Middleware 试读版
|
4月前
|
Java Linux 编译器
C++这么难,为什么我们还要用C++?C++ Core Guidelines解析给了我答案
C++这么难,为什么我们还要用C++?C++ Core Guidelines解析给了我答案
34 0
|
索引 Python
flask mega-tutorial 1.0 documentation学习记录
本文主要是记录在【用户登录】一节中出现的问题:报错位置是在 if g.user is not None and g.user.is_authenticated(): return redirect(url_for('index'))问题的原因主要是因为flask-login模块不对,需要安装flask-login==0.2.11,。
799 0
|
Apache C语言
Cmockery macro demo hacking
/********************************************************************* * Cmockery macro demo hacking * 说明: * 本文记录对Cmockery的宏使用的示例进行测试、跟踪。
919 0
|
分布式计算 Java Spark
Spark - A tiny Sinatra inspired framework for creating web applications in Java 8 with minimal effor
Spark - A tiny Sinatra inspired framework for creating web applications in Java 8 with minimal effort Quick start import static spark.
1193 0