dns学习(二)

1.BIND的组成?

* named守护进程–用来回答查询结果的

* 去联系DNS分布式数据库的服务器用来解析主机查询的库例程

* DNS的一些重要命令:nslookup,dig和host

2.名字服务器

* 权威--一个区的正式代表

* 主服务器:每个区都有的一个主名字服务器,保存着本区数据的正式拷贝。SA通过编辑这上面的数据文件来更改区数据。

* 从服务器:每个区可以有多个从服务器(至少一个),它通过“区传送”操作从主服务器上获取它的数据。

* 存根:类似于从服务器,不过不是必须的,它仅装载主服务器上的NS记录。

* 非权威--从缓存中读取记录来回答查询,可能数据已过期

* 高速缓存名字服务器:从一个文件中加载一些根服务器的地址,然后通过缓存由它解析的各个查询的回答来积累它的其余数据。它本身没有数据。

* 递归--名字服务器要么是递归要么是不递归的。递归的含义是如果它不能回答你的查询,它将自己替你向上级进行查询,知道有结果(真实的结果或者错误的消息)。【等人家干完给本地】

* 非递归--如果对于你的查询它能回答的,那么它将提供正确的响应,否则它将返回它所推荐的可能知道正确答案的其他域的权威性服务器。客户机必须准备接受并对这些推荐服务器进行操作。【本地继续自己干】

3.bind服务器配置

* 配置文件:named.conf

每条语句以分号结束。格式非常重要少一个空格或者少一个分号就会让你郁闷1小时:( ,每条语句以一个标示语句类型的关键词开始。

option语句:指定全局选项,在BIND8中大约有30个选项,9的选项超过50个。这里只介绍常用的。格式如下:

options{

option;

option;

};

version “string”; [服务器的真实版本号] #可以将它真实地版本号隐藏

directory “path”; [启动服务器的目录] #可以让named程序cd到这个目录(绝对路径)中。推荐将所有与BIND相关的配置文件(除了named.conf和resolv.conf)放在/var之下的子目录中。例如/var/named

notify yes | no; [yes]  #如果设为yes,并且named是一个或多个区的主服务器,那么每当区数据库有变化时,将自动通知相应区的从服务器。

recursion yes | no; [yes]  #指定named是否代表客户机查询其它名字服务器。

allow-recursion {address_match_list}; [所有主机] #可以结合上面的选项设置成对自身的客户机允许递归,但对外查询禁止递归

allow-query {address_match_list}; [所有主机]  #指定哪些主机(或网络)可以查询这台名字服务器。

allow-transfer {address_match_listh}; [所有主机]  #指定哪些主机(或网络)可以请求区数据的块传输。

blackhole {address_match_list}; [空]  #标示出您从不希望与之进行通信的服务器,named将不接受来自这些服务器的查询,也不会向他们询问答案。

acl语句:它必须是named.conf中的顶级语句。

acl acl_name{

address_match_list

};

其中,有4个列表是预先定义的:any,localnets,localhost,none

zone语句:是named.conf中的核心语句。将告诉named它具有权威性的区域。并为管理每个区设置适当的选项。zone语句格式根据named在(主服务器,从服务器)中所扮演的角色不同而不同。

4. 配置一个区的主服务器

zone “domain_name”{

type master;

file “path”;

allow-query {address_match_list};      [所有]

allow-transfer {address_match_list};   [所有]

allow-update {address_match_list};     [无]

ixfr-base “pat”;                       [domain_name.ixfr(仅版本8)]

};

5. BIND9中View(视图)的用法

概述:

这里摘抄BIND9手册中的一段话"视图是 BIND9 的强大的新功能, 允许名称服务器根据询问者的不同有区别的回答 DNS查询。特别是当运行拆分 DNS 设置而不需要运行多个服务器时特别有用。"手册中说得很明了,只是根据不同的来源DNS服务器做出不同的回应。

根据不同的源地址,目的地址,解析请求来判断该给客户提供什么样的解析

例授权视图为

view  data-idc-btte {

match-clients {

127.0.0.1/8;  #访问来源ip

gd; #由 acl 语句定义了的地址表列名

key mykey; #语句定义了一个用于 TSIG的共享密匙

};

recursion yes; #使用递归查询

server 10.0.0.11 { keys { mykey }; }; #主授权服务器

zone "119.60.113.in-addr.arpa" IN {   ###权威域名管理,从域名服务器

type slave;

masters { 10.0.0.11; };  #其主是10.0.0.11

file "slaves/view-idc-btte/zone-arpa-113.60.119";

};

};

其中

"slaves/view-idc-btte/zone-arpa-113.60.119“ 为IPV4 的反向解析.

$ORIGIN .

$TTL 86400     ; 1 day

119.60.113.in-addr.arpa     IN SOA     ns1.3366.com. postmaster.3366.com. (

2012102621 ; serial

120        ; refresh (2 minutes)

60         ; retry (1 minute)

604800     ; expire (1 week)

360        ; minimum (6 minutes)

)

NS     ns1.3366.com.

NS     ns2.3366.com.

NS     ns3.3366.com.

NS     ns4.3366.com.

NS     ns5.3366.com.

NS     ns6.3366.com.

$ORIGIN 119.60.113.in-addr.arpa.

$TTL 180     ; 3 minutes

currentv          TXT     "arpa/183.60.189"

说明;

反向域名解析(也就是说 IP地址到主机名的翻译)通过in-addr.arpa域和PTR记录实现.。

in-addr.arpa 域入口可以作成最不重要到最重要(least-to-most)顺序,从左至右阅读。这与 IP

地址的通常顺序相反。这样,一台 IP地址为 10.1.2.3 的机器将会右对应的 in-addr.arpa 名称:

3.2.1.10.in-addr.arpa。这个名称应该具有一个 PTR资源记录,它的数据字段是主机名称或者

任意的多重 PTR 记录,如果主机右超过一个名字的话。

例如.在[example.com]域中:

$ORIGIN 2.1.10.in-addr.arpa

3 IN PTR foo.example.com.

注意:例子中的$ORIGIN行只给例子提供描述,在真实使用中不一定出现,在这出现仅仅

表明例子是域所列源相关的。

dns学习(二),码迷,mamicode.com

时间: 2024-08-06 16:01:07

dns学习(二)的相关文章

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

OpenCV for Python 学习 (二 事件与回调函数)

今天主要看了OpenCV中的事件以及回调函数,这么说可能不准确,主要是下面这两个函数(OpenCV中还有很多这些函数,可以在 http://docs.opencv.org/trunk/modules/highgui/doc/user_interface.html 找到,就不一一列举了),然后自己做了一个简单的绘图程序 函数如下: cv2.setMouseCallback(windowName, onMouse[, param]) cv2.createTrackbar(trackbarName,

Makefile持续学习二

Makefile概述 一.Makefile里有什么? Makefile里主要包含5个东西:显式规则.隐晦规则.变量定义.文件指示和注释 1.显式规则:显式规则说明如恶化生成一个或多的目标文件,包含要生成的文件,文件的依赖文件,生成的命令 2.隐晦规则:由make自动推动功能完成 3.变量定义:变量一般都是字符串,类似C语言中的宏定义,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上 4.文件指示: 在一个Makefile中引用另一个Makefile 根据某些情指定Makefil

redis ruby客户端学习( 二)

接上一篇redis ruby客户端学习( 二) 对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了字符串. 1,哈希(Map) hset.设置 key 指定的哈希集中指定字段的值.如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联.如果字段在哈希集中存在,它将被重写. require "redis" r = Redis.new r.hset 'my_h

Duilib学习二 第一个程序 Hello World

Duilib学习二  第一个程序 Hello World #pragma once #include <UIlib.h> using namespace DuiLib; #ifdef _DEBUG # ifdef _UNICODE # pragma comment(lib, "DuiLib_ud.lib") # else # pragma comment(lib, "DuiLib_d.lib") # endif #else # ifdef _UNICOD

Jquery Easy UI初步学习(二)datagrid的使用

第一篇学的是做一个管理的外框,接着就是数据datagrid绑定了,这里我用asp.net mvc3来做的,主要就是熟悉属性.方法. 打开easyui的demo 就可以看到如下一段代码: 和上篇一样class="easyui-datagrid", data-options="...",这是一样的,其他我在网上查了查,并做了整理 DataGrid 属性 参数名 类型 描述 默认值 title string Datagrid面板的标题 null iconCls strin

Oracle学习(二):过滤和排序

1.知识点:可以对照下面的录屏进行阅读 SQL> --字符串大小写敏感 SQL> --查询名叫KING的员工信息 SQL> select * 2 from emp 3 where ename = 'KING'; SQL> --日期格式敏感 SQL> --查询入职日期为17-11月-81的员工 SQL> select * 2 from emp 3 where hiredate='17-11月-81'; --正确例子 SQL> ed 已写入 file afiedt.b

Jetty学习二:配置概览-怎么配置Jetty

Jetty POJO配置 Jetty的核心组件是Plain Old Java Objects(POJOs):配置Jetty的大部分工作就是在Jetty POJOs上的初始化.装配和设置域的处理,你能通过以下的方式来实现:  1)直接通过Java代码初始化和装配Jetty对象.这个在后面Embedding Jetty讲. 2)用Jetty XML配置(一个控制反转(IoC)框架)初始化和装配Jetty对象.etc/jetty.xml文件是基本的Jetty XML配置文件,但有一些其它的etc/je

nodejs学习二 深入了解console

上一篇我们用console.log编写了第一个程序,虽然如此简单.那么我就从它来说说Node.js中的对象. 对于学过Java .net 的人来说,对象这个词应该都很亲切,如果不觉得亲切,还是先学习一下面向对象. 我们编程中,一切皆对象.你可以把任何一个东西当做对象. 然而,Node.js中也存在对象,而console也是一种对象.既然是对象,他应该有公有的方法.正如你所看到的,log就是它的方法,貌似还是静态的. 那么console中有哪些方法呢,那我们就让他输出一下吧. 噢,原来consol