Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162199
  • 博文数量: 126
  • 博客积分: 1073
  • 博客等级: 上尉
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 00:32
文章分类

全部博文(126)

文章存档

2018年(56)

2013年(1)

2012年(8)

2011年(61)

分类: LINUX

2011-06-15 23:17:51

named:用于支持名称解析

rndc:检查安全性的机制

ports53named     953rndc

 

bind chroot

# vim /var/sysconfig/named

ROOTDIR=/var/named/chroot

 

named.conf配置文件

# vim /var/named/chroot/etc/named.conf

options {

                   listen-on port 53 { localhost; };

                   directory           “/var/named”;

forwards           { 192.168.1.254; };

allow-query      { 192.168.0/24; };

allow-transfer { 192.168.1/24; };

};

listen-on port 53:监听53端口

forwards:收到请求包,在数据库和缓存里都找不到记录时,发往forwards指向的DNS服务器去,如果指向的DNS服务器都没有这条记录的话会到根服务器查询。如果还有设定forward-only的话则不会去根服务器查询。也可以这样表示192.168.1.254;

allow-query: 只允许指定的网段使用DNS,如果没有这段,则允许所有人使用

allow-transfer: 只把数据库发送给指定网段内的DNS服务器

view localhost_resolver {

        match-clients      { 192.168.0.0/24; };

        match-destinations { any; };

        recursion yes;

        include "/etc/named.rfc1912.zones";

};

match-clients:允许哪些网段可以使用DNS

 

定义zone文件

# vim /var/named/chroot/etc/named.rfc1912.zones

zone "example.com" IN {

        type master;

        file "example.com.zone";

};

zone "cracker.org" IN {

        type slave;

                   master {192.168.0.254}

        file "slaves/cracker.org.zone";

};

master zone:存放在DNS服务器上的数据库叫master zone

slaves/cracker.org.zoneredhat建议最好将slave的配置文件保存在新建的slaves目录里面

 

反向解析区域:

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

        type master;

        file "named.example";

};

 

root zone loopback zone

zone "." IN {

        type hint;

        file "named.ca";

};

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

        type master;

        file "named.local";

};

root zone:当DNS服务器收到一个查询名称解析的请求,但是在自己数据库里找不到关于这一笔名称解析的记录的时候,DNS服务器就会去root zone里面所定义的DNS服务器查询,在预设的情况下,DNS配置文件里面已经帮我们定义好了root zone的设定

loopback zone:由于loopbackIP地址指向本机,所以type一定是master

 

复制模板文件成数据库文件

#cd /var/named/chroot/var/named/

# cp -p localhost.zone example.zone

# cp -p named.local named.example

 

SOAstart of authority

主要作用在于记录该zone里面的数据是由哪一台DNS服务器来负责维护以及zone file由谁来管理

# vim named.example

$TTL    86400

@       IN      SOA     server1.example.com. root.example.com.  (

                                      1997022700 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

Serial:版本信息,19970227日第00版本,每当DNS zone里面数据有更改serial number值加1,这样,当有slave server时,slave server就会根据这个值来判断自己的数据库是不是最新的

Refresh:描述一段以秒为单位的时间,上述值被定为28800秒,slave server每隔一段这个参数上所定义的时间就会去检查master server上的serial number,看看master server上面的数据有没有更新

Retry:也是描述一段以秒为单位的时间,若是refresh的时间到了,但是slave server却联系不到master server时,每隔一段retry query所规定的时间,slave server就会再尝试联系master server

Expire:也是用来描述一段以秒为单位的时间,如果时间超过了expire所规定的时间而slave server一直没有联系上master server的话,那么slave server就会删除掉自己备份的zone file

 

NSname server

定义哪个域是由哪个DNS服务器负责提供名称解析的服务,在每个DNS zone里面,至少应该有一笔指向master server或是slave serverNS 记录

DNS zone里面设定一笔NS记录指向slave server的目的在于当master server宕机或者是没有办法提供服务的时候可以代替master serverDNS client提供名称解析服务

@       IN      NS      server1.example.com.            //master server

@       IN      NS      cracker.example.com.            //slave server

 

@:等同于example.com.

IN:表示internet

NS:表示一笔NS记录

server1.example.com.:指向一台DNS服务器

 

其它记录类型

l  A记录:把主机名称对应到一个IP地址

server1         IN A            192.168.0.254

server1:记录主机名称,或者写上全称server1.example.com.

IN:表示internet

A:表示一笔A记录

192.168.0.254:指向192.168.0.254这个IP地址

l  CNAME记录:把别名对应到主机名称

dns                     IN     CNAME                       server1.example.com.

dns:记录一个别名,通常用这台主机所提供的服务来为这台主机取别名

IN:表示internet

CNAME:表示一笔CNAME记录

server1.example.com.:主机名称,也可以用简写server1,即server1这台主机的别名是dns,就是说如果有人要查询dns.example.com这台主机所对应的IP地址的话,要把dns导向到server1,并传回server1.example.com这台主机所对应的IP地址

l  PTR记录:把一个IP地址对应到一个主机名称

254     IN      PTR     server1.example.com.

254:如果254后面没有加上一个.来表示结束的话,系统会自动在这个IP地址的后面加上这个PRT记录所在zone的名称来当做完整的IP地址

IN:表示internet

PTR:表示一笔PTR记录

server1.example.com.:主机名称,也可以用简写server1

l  MX记录:定义这台domain是由哪个mail server来负责提供邮件的服务

@       IN      MX 5    server1.example.com.

@:记录domain的名称

IN:表示internet

MX:表示这是一笔MX记录

5priority,优先级,数字越小优先级越高

server1.example.com.:指向一台邮件服务器

 

zone file

forward lookup zone

# vim /etc/bashrc

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

W:改成小写的w

然后再登录系统

# cd /var/named/chroot/var/named/

# vim example.zone

$TTL    86400

@               IN SOA  server1.example.com.       root.example.com. (

                                      1997022700 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

0                    ; negative TTL

)

@               IN NS           server1.example.com.

server1           IN A            192.168.0.254

# ls -l example.zone

-rw-r----- 1 root named 583 12-05 22:31 example.zone

# chown named.named example.zone

 

reverse lookup zone

# vim named.example

$TTL    86400

@       IN      SOA     server1.example.com. root.example.com.  (

                                      1997022700 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

1                    ; negative TTL

)

@       IN      NS      server1.example.com.

254       IN      PTR     server1.example.com.

# ls -l named.example

-rw-r----- 1 root named 881 12-05 22:33 named.example

# chown named:named named.example

 

Round Robin Load Sharing Through DNS 负载均衡

www         0       IN     A       192.168.0.101

www         0       IN     A       192.168.0.102

www         0       IN     A       192.168.0.103

TTL: 0       不允许缓存,这样每当使用者要存取www服务器的时候就必须要向DNS服务器重新查询www服务器所对应的IP地址

 

Delegating Subdomains 子域委派

1.       在上层DNS domain里面加上一条NS记录

sub.example.com.    IN     NS    DNS2

把下层DNS domain指向到另一台DNS服务器DNS2

2.       另外一台DNS服务器为在下层的DNS domain里面的话,比较好的做法是在上层的DNS zone里面加一条NS记录,把下层的DNS domain指向到另外一台DNS服务器的FQDN以及一条A记录,记录另外一台DNS服务器的FQDN所对应的IP地址

sub.example.com.    IN     NS    DNS2.sub.example.com

DNS2.sub.example.com.           IN     A       192.168.0.253

 

BIND Syntax Utilities

1.       named-checkconf

在预设的情况下,这个指令会去检查/var/named/chroot/etc/named.conf

# named-checkconf

# vim /var/named/chroot/etc/named.conf 可将里面改错以测试

2.       named-checkzone

检查所设定的zone file的设定语法有没有错误

[root@server1~]#named-checkzone example /var/named/chroot/var/named/example.zone

/var/named/chroot/var/named/example.zone

zone example.zone/IN: loaded serial 42

OK

[root@server1 ~]# named-checkzone example.zone /var/named/chroot/var/named/example.zone

zone example/IN: loaded serial 42

OK

[root@server1 ~]#

 

Caching-only Name Server 缓存命名服务器

在一台DNS服务器里总共有五种DNS zone file

l  domain forward lookup zone file 正向查找区域

l  domain reverse lookup zone file 反向查找区域

l  named.ca 根服务器信息文件

l  localhost.zone 本机正向查找区域

l  named.local 本机反向查找区域

/var/named/named.ca该文件包含了Internet的根服务器名字和地址,Bind接到客户端主机的查询请求时,如果在Cache中找不到相应的数据,就会通过根服务器进行逐级查询。

cache-only的服务器上则只有named.ca.换句话说,当cache-onlyDNS服务器收到要求查询的请求包的时候,自己的数据库里面没有对应记录时不会到根服务器进行查询,只会把这条要求查询的请求包转发到其它的DNS服务器上去代为查询

 

在一个caching-only的服务器上,必须去设定好,要把收到要求查询的request包转送到其它的DNS服务器上去,当其它的DNS服务器把查询的结果传送回来以后才把这个查询的结果缓存起来。

l  在架设caching-only DNS服务器前,必须先确认系统有没有安装caching-nameserver这个rpm包,包里面有提供一个named.conf配置文件,使用这个预设的DNS配置文件,就可以让caching-only DNS服务器正常工作

l  caching-nameserver这个rpm包另外还提供了root server所在的路径,也可以去检查named.ca这个zone file的内容,来取得DNS server的信息

 

BIND utilities

host:可以用来解某台主机,或者是整台DNS domain的信息

[root@server1 ~]# host server1.example.com

server1.example.com has address 192.168.0.254

[root@server1 ~]# host 192.168.0.254

254.0.168.192.in-addr.arpa domain name pointer server1.example.com.

[root@server1 ~]# host -a server1.example.com | grep ^[^\;]

Trying "server1.example.com"

server1.example.com.    86400   IN      A       192.168.0.254

example.com.            86400   IN      NS      server1.example.com.

Received 67 bytes from 192.168.0.254#53 in 16 ms

dig:可以用来查询某一台特定的DNS服务器

[root@server1 ~]# dig server1.example.com | grep ^[^\;]

server1.example.com.    86400   IN      A       192.168.0.254

example.com.            86400   IN      NS      server1.example.com.

nslookup:查询网络上的命名主机,nslookup有两种模式,一种是interactively,另一种模式是non-interactively

[root@server1 ~]# nslookup

> example.com

Server:         192.168.0.254

Address:        192.168.0.254#53

 

*** Can't find example.com: No answer

> 192.168.0.254

Server:         192.168.0.254

Address:        192.168.0.254#53

 

254.0.168.192.in-addr.arpa      name = server1.example.com.

实验部分:

1.       caching-only name server

[root@server1 ~]# rpm -qa | grep caching

caching-nameserver-9.3.6-4.P1.el5

[root@server1 ~]# rpm -qa | grep bind

bind-chroot-9.3.6-4.P1.el5

bind-libs-9.3.6-4.P1.el5

bind-utils-9.3.6-4.P1.el5

bind-9.3.6-4.P1.el5

ypbind-1.19-12.el5

[root@server1 ~]#vim /etc/hosts

127.0.0.1               localhost.localdomain localhost

192.168.0.254   server1.example.com server1\

[root@server1 ~]# vim /etc/resolv.conf

search example.com

nameserver 192.168.0.254

[root@server1 ~]# cd /var/named/chroot/

[root@server1 chroot]# vim etc/named.conf

options {

        listen-on port 53 { any; };

        listen-on-v6 port 53 { ::1; };

        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";

        forwarders {192.168.0.254;};

forward only;

         [root@server1 chroot]# service named restart

         这样caching-only DNS服务器就架设好了

2.       slave name server

# cd /var/named/chroot/

# vim etc/named.conf

G到末尾,添加如下内容

// ###########################################################################

// #             Slave nameserver for cracker.com and 192.168.1/24                 #

// ###########################################################################

 

zone    "cracker.com"   {

                        type    slave;

                        masters {192.168.0.254;};

                        file    "slaves/cracker.com.zone";

                        };

zone    "1.168.192.in-addr.arpa"        {

                                        type    slave;

                                        masters {192.168.0.254;};

                                        file    "slaves/192.168.1.zone";

                                        };

slaves/cracker.com.zone:位于/var/named/chroot/var/named/slaves/

slaves/192.168.1.zone位于/var/named/chroot/var/named/slaves/

# ls -l var/named/slaves/

total 0

# service named restart

# ls -l var/named/slaves/

-rw-------    1 named named 365 May 20 13:14 192.168.1.zone

-rw-------    1 named named 365 May 20 13:14 cracker.com.zone

 

3.       master name server

# cd /var/named/chroot/

# vim etc/named.conf

// ###########################################################################

// #           Master nameserver for example.com and 192.168.0/24                 #

// ###########################################################################

 

zone    "example.com"   {

                        type    master;

                        file    "example.zone";

                        };

zone    "0.168.192.in-addr.arpa"        {

                                        type    master;

                                        file    "192.168.0.zone";

                                        };

# vim var/named/example.zone

$TTL    86400

@               IN SOA  server1.example.com.       root.example.com. (

                                        42              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D                 ; minimum

                                                                                               )

@                                          IN NS           server1.example.com.

server1.example.com.              IN A            192.168.0.254

         # chmod named.named var/named/example.zone

         # named-checkconf

         # named-checkzone example.com /var/named/chroot/var/named/example.zone

         # service named restart

 

Advanced BIND Features BIND高级功能

我们可以把DNS服务器与DHCP服务器整合在一起,这样就可以部署Dynamic DNSDDNS)也就是可以动态更新的DNS服务器。

DDNS可以通过DHCP服务器及时把DNS clientIP地址与相对应的电脑名称更新到DNS zone里。

Transaction Signatures(TSIG)则可以在master DNS服务器与slave DNS服务器在复制数据的时候为复制的数据加密。

阅读(1562) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~