DNS配置

BIND 8.2.3安装说明#tar -zxvf bind-src.tar.gz包括以下几个目录:bin(全部BIND 二进制源代码,包括named),include(BIND代码引用的包含文件的CO

BIND 8.2.3安装说明

#tar -zxvf bind-src.tar.gz

包括以下几个目录:bin(全部BIND 二进制源代码,包括named),include(BIND代码引用的包含文件的COPY),lib(BIND使用的库的源代码),port (BIND 用为为不同的操作系统定制编译设置和编译选项的信息).

编译:

#make stdlinks

#make clean

#make depend

#make all

#make install

BIND9.1.0安装说明

#tar zxvf bind-9.1.0.tar.gz

包括以下子目录:bin(全部BIND 二进制源代码,包括named) ,contrib(一些工具) ,doc(BIND的文档,包括资源手册),lib(BIND使用的库的源代码),make(makefile文件).

运行配置和编译

#./configure

(如果你不想使用线程,使用下面命令:

#./configure disable-threads)

编译BIND, 输入:

#make all

安装BIND

#make install

RPM 安装(我个人比较喜欢这个,简单)

rpm -ivh bind-****.rpm

安装BIND 的RPM 包。

rpm -ql bind|More

列出该软件包的所有文件和位置。

配置文件一般在/etc/named.conf

数据库文件一般在/var/named下

概念:

域(domain)就是域名空间中的一棵子树。看好了是子树,也就是树的分枝。域的名字也就是这棵子树的顶端节点的域名。

,

授权:

(图3) 以second.gogo.com 域为例,他交由用户BBB 来管理,而gogo.com 域由用户AAA 来管理,second.gogo.com 域管理员BBB 必须向AAA 申请,而父域gogo.com 域到时候只保留指向second 域的指针,到时候有解析second.gogo.com 域下的主机时,将查询者指向second.gogo.com 那里。如果没有得到申请,既使你建立好second 域的所有配置文件,但因为上一级域控制器(gogo.com)没有指向你的指针,到时候的查询到gogo.com 时就结束返回没有查到主机名。

名字服务器(name server)

存储关于域名空间的信息的程序叫估名字服务器。名字服务器通常含有域名空间中某一部分的完整信息,我们称为区(zone). 区的内容是从文件或其他名字服务器中加载而来的。这时我们称名字服务器(name server)对这个区(zone)具有权威(authority) 。一个名字服务器也可以同时对多个区具有权威。

所有的顶级域名,以及许多二级域名和更低级别的域名,通过授权被分成了更小也更好管理的单元,这些单元称为区(zone)

myhome.com 域被分成许多区

有first,second 的授权子域。每个子域又被授权给一组名字服务器。

一个区和一个域可以共享同一个域名,却含有不同的节点。特别地,区不含有任何在已经被授权出去的子域中的节点, 也就是说他只含有未被授出去的子域中的节点。(呵呵,有点象绕口令。)

例图3

域myhome.com 不仅包括myhome.com 中的所有数据,还包括first,second 中的数据,而区com 只包括com 中的数据,这些数据可能主要是指向授权子域的指针,因为myhome.com 已经被授权给AAA 了,所以区com 不含有该域中的任何结点,但只含有指向myhome.com 域的指针而已.

如果域中某个子域没有被授权,那么区就包含这个子域中的域名和数据。

授权子域:

授权就是将你的一部分域的责任分配给另一个人或组织。实际操作是将你子域的权威分配给其他一些名字服务器。

区数据文件:

主名字服务器从本机中加载数据的文件叫区数据文件(zone data file),常称为数据文件或数据库文件。辅名字服务器常常被配置为:将主名字服务器传送过来的区数据备份到本机的数据文件当中。

,

解析器:

解析器就是访问名字服务器的客户端程序。

根名字服务器:

根名字服务器所有顶级区的权威名字服务器在哪。

递归:

是如果被查询的名称服务器不是所请求的数据的权威,它将不得不向其他名字服务器发出查询以获得答案。它可以向其他名字服务器发送递归查询,从而要求它们找到答案并返回。

反复:

反复中名字服务器只用将它已知的最合适的答案返回给查询者。它本身不需要再有任何其他查询。被查询的名字服务器在它的本地数据中寻找所需数据。如果没有找到答案,它就在本地数据中找出与所要查询的名字服务器最接近的名字服务器的名字和地址,并作为指示返回给查询者,帮助它把解析过程进行下去。

在DNS 目前的实现中,采用的是后者,将不断地依照指示进行查询,直到找到结果

缓存:

处理递归查询的名字服务器可能需要要发送好几个查询才能找到结果。不过在这个过程中。它也了解到域名空间的许多信息。每次它得到一些名字服务器列表的指示,它就知道这些名字服务器是哪些区的权威,也就知道这些服务器的地址。当解析过程结束时,它最终找到原来查询所请的数据后,还可以把这些数据保存起来,以备后用。也就是再有查找相同域名的时候,此时名字服务器已将结果放在缓存中,只需要向解析器返回这个结果就行了(IP 地址),不用再进行查询。

生存期:

就是名字服务器允许数据在缓存中存放的时间(time to live)TTL。生存期一过,名字服务器必须丢弃缓存中的数据,并从权威名字服务器上获取新的数据。它和缓存的是密切相关的。

顶 0 踩

一、配置解析器

解析器是文件/etc/resolv.conf中配置的。

缺省的解析器配置使用以下值:

,

nameserver IP地址

用于用于可以使用的名称服务器,最多可以定义最多三个nameserver

domain

定义了缺省域。缺省域用于建立域搜索清单,其中只包含一个域。

例如:

domain gogo.com

如果查找first 主机的IP 地址时,解析器先查找first.gogo.com, 如果不能解析IP 地址,解析器将做最后的尝试,向名字服务器请求将first 解析为IP 地址。

search

定义搜索清单。

search 可以接受多个参数(最多六个),而domain 只能携带一个参数。 例:

serarch first.gogo.com second.gogo.com

如果搜索mail 主机时,首先搜索mail.first.myhome.com; 然后再搜索

mail.second.gogo.com ;如果未有结果,解析器就直接寻找mail 不带任何域扩展名称。从例子可以看出,search 命令比domain 命令更灵活。

在resolv.conf 文件中既可以使用serarch 命令,也可以使用domain 命令,但不能同时使用,否则会出现意想不到的结果。关键取决于哪一条命令是最后执行的。

如果没有search 命令,也没有domain 命令。解析器就从本主机名衍生出缺省的域名。 还有一些其它命令,不是很重要的。使用缺省值就可以了。

host.conf 文件

host.conf 文件是用于设置各种名称服务的优先级的配置文件。

order bind hosts

bind 代表DNS 服务,hosts 代表/etc/hosts文件

multi on

multi 选项用于决定是否可以给/etc/hosts文件中相同的主机名分配多个地址。on 找开了该选项。

二、建立BIND

1、建立区数据

主机表HOSTS 文件

192.168.1.1 jh.myhome.com jh

192.168.1.2 yj11.myhome.com yj11

建BIND 数据的第一步是主机表中的数据转换为相应的DNS 区数据。

一个文件将所有主机名映射到地址,其他一些文件则将地址映射回主机名。 名字到地址的查找称为正向映射。

,

地址到名字的查找称为反向映射。

每个网络都有包含它自己的反身映射数据的文件。

2、区数据文件

区数据文件的大部分条目被称为DNS 资源记录(resource record)。DNS 查找是不区分大小写的。

数据文件中资源记录的顺序如下:

SOA 记录

指示该区的权威

NS 记录

该区的一个名字服务器

其他记录

有关该区中主机的数据

A 名字到地址的映射

PTR 地址到名字的映射

CNAME 规范名称

注释:

使用分号(;)开头的到行尾处结束。

设定区默认的TTL 值:

名字服务器在查询响应中提供这个TTL 值,允许其他服务器将数据在缓存中存放TTL 所指定的时间。

可能的取值是:

w=星期

d=天

h=小时

m=分钟

s=秒

例:$TTL 3h 3小时

$TTL 2w3d4h 2个星期3天4个小时

$TTL 3h

myhome.com SOA jh.myhome.com. root.jh.myhome.com. (

; ^^^^

; root是主机jh.myhome.com. 的用户

2000020501; 序列号

3h; 3小时后刷新

,

1h; 1小时后彼一时试

1w; 1周后期满

1h) 否定缓存TTL 为1小时

$TTL 3h

@ SOA jh.myhome.com. root.jh.myhome.com. (

; ^^^^

; root是主机jh.myhome.com. 的用户

2000020501; 序列号

3h; 3小时后刷新

1h; 1小时后彼一时试

1w; 1周后期满

1h) 否定缓存TTL 为1小时

他们有区别吧,@ 在SOA 类型记录的名字字段中指的是当前的源,是myhome.com

NS jh.myhome.com.

; 名字服务器

MX 10 jh.myhome.com.

; 邮件服务器

one A 192.168.1.1

A 192.168.1.2

; 重复最后一个名字,上面为一个名字有两个地址地址记录

jh A 192.168.1.1

three CNAME jh.myhome.com.

; 别名指向jh.myhome.com.

yj11 A 192.168.1.2

yj22 A 192.168.1.2

以上均是简写,但下面也不是标准写法,大家做个比较吧:

NS IN jh.myhome.com.

; 名字服务器

MX IN 10 jh.myhome.com.

; 邮件服务器

one.myhome.com. IN A 192.168.1.1

jh.myhome.com. IN A 192.168.1.1

,

three.myhome.com. IN CNAME jh.myhome.com.

; 别名指向jh.myhome.com.

yj11.myhome.com. IN A 192.168.1.2

yj22.myhome.com. IN A 192.168.1.2

下面将用一个实例来讲解主、从服务器的设置:

环境:主DNS 服务器的主机名为jh.myhome.com;IP 地址:192.168.1.1; 从DNS 服务器的主机名为yj11.myhome.com;IP 地址:192.168.1.2; 客户端IP 地址:192.168.1.3---192.168.1.200;

(其实主DNS 服务器和从DNS 服务器可以步在同一网段,只要IP 通就可以)

主DNS 服务器的配置文件:

options {

directory "/var/named";

};

zone "." IN {

type hint;

file "named.ca";

};

zone "localhost" IN {

type master;

file "localhost.zone";

allow-update { none; };

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

allow-update { none; };

};

zone "myhome.com" IN {

type master;

,

file "myhome.coms";

allow-update { none; };

};

zone "1.168.192.in-addr.arpa" IN {

type master;

file "named.reverse";

allow-update { none; };

};

文件myhome.coms 内容:

@ SOA jh.myhome.com. root.jh.myhome.com. (

2000020501;

21600;

7200;

604800;

900)

NS jh.myhome.com.

MX 10 jh.myhome.com.

jh IN A 192.168.1.1

yj11 IN A 192.168.1.2

three IN CNAME jh.myhome.com.

www IN A 192.168.1.12

文件named.reservse 内容:

myhome.com. SOA jh.myhome.com. root.jh.myhome.com. ( 2000021602;

21600;

1800;

604800;

7200);

NS jh.myhome.com.

,

1 PTR jh.myhome.com.

2 PTR yj11.myhome.com.

=====================================================================

从服务器DNS 配置文件:

options {

directory "/var/named";

};

zone "." IN {

type hint;

file "named.ca";

};

zone "localhost" IN {

type master;

file "localhost.zone";

allow-update { none; };

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

allow-update { none; };

};

zone "myhome.com" IN {

// type master;

type slave;

// type后面的值已经成为slave;

file "myhome.coms";

//file 后面也可以是别的文件名不必与主DNS 服务器的设置一样

masters { 192.168.1.1; };

//192.168.1.1 为主DNS 服务器的IP 地址,

};

zone "1.168.192.in-addr.arpa" IN {

,

// type master;

type slave;

// type后面的值已经成为slave;

file "named.reverse";

//file 后面也可以是别的文件名不必与主DNS 服务器的设置一样

masters { 192.168.1.1; };

//192.168.1.1 为主DNS 服务器的IP 地址,

};

不用在从DNS 服务器上建立myhome.coms 和named.reserse 文件,因为在你在从DNS 服务器的进程新启动(就是在你把named.conf 修改完毕时,第一次重新启动)后 会自动从主DNS 服务器(192.168.1.1)拷贝数据文件(myhome.coms )内容到从dns 服务器上。自动创新这两个主要文件。

Refersh 字段定义了刷新周期时间。从服务器每3h 时间就从主服务器上拷贝数据文件到从服务器上,如果想修改了主服务器上的数据文件,必须改变2000020501; 序列号,增加1为2000020502, 这样的从服务器就在3h 后就会先检查序列号如果比自己的序列号高的话,如果会自动拷贝文件到从服务器上,如果不增加“序列号”那么即使3h 后也不会拷贝主服务器的内容到从服务器上。

@ SOA jh.myhome.com. root.jh.myhome.com. (

2000020502;

3h; 刷新周期的时间

1h;

1w;

1h)

补充:

named.conf的配置语句

命令 用法

acl 定义IP 地址的访问控制清单

control 定义ndc 使用的控制通道

include 把其他文件包含到配置文件中

key 定义授权的安全密钥

logging 定义日志写什么,写到哪

opitons 定义全局配置选项和缺省值

server 定义远程服务器的特征

trunsted-keys 为服务器定义DNSSEC 加密密钥

zone 定义一个区

标签: