Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162125
  • 博文数量: 48
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-08 18:10
文章分类

全部博文(48)

文章存档

2009年(2)

2007年(46)

我的朋友

分类:

2007-07-17 11:17:40

第三章. 域名服务器配置

目录

3.1. 范例配置

3.2. 负载平衡

3.3. Notify

3.4. 域名服务器操作

本章我们提供一些典型应用的建议配置,并说明这样写配置的原因。

范例配置

只有缓存功能的域名服务器

下面这个例子是一个公司内部的只作缓存使用的域名服务器的例子,它拒绝所有从外部网络到达的查询。

// 只允许从两个子网访问  Two corporate subnets we wish to allow queries from.
acl "corpnets" { 192.168.4.0/24; 192.168.7.0/24; };   // 定义一个访问列表 “corpnets”
options {
     directory "/etc/namedb";           // 定义工作目录 Working directory
     pid-file "named.pid";              // 在工作目录中设置进程文件Put pid file in working dir
     allow-query { "corpnets"; };       // 引用前面定义的访问列表”corpnets”
};
// 根服务器设定Root server hints
zone "." { type hint; file "root.hint"; };  // 定义根域,类型为hint,文件名是root.hint
// 提供本地回环127.0.0.1的映射Provide a reverse mapping for the loopback address 127.0.0.1
zone "0.0.127.in-addr.arpa" {
     type master;
     file "localhost.rev";
     notify no;
};

只有主域名服务功能的配置

这个例子中,服务器对域"example.com"做管理服务器,对子域 "eng.example.com"做从属服务器。

options {
     directory "/etc/namedb";           // 工作目录Working directory
     pid-file "named.pid";              // 设置工作目录中的PID文件 Put pid file in working dir
     allow-query { any; };              // 这个是默认配置,允许任何客户机进行查询This is the default
     recursion no;                      // 不提供递归查询 Do not provide recursive service
};
// Root server hints
zone "." { type hint; file "root.hint"; };
 
// Provide a reverse mapping for the loopback address 127.0.0.1
zone "0.0.127.in-addr.arpa" {
     type master;
     file "localhost.rev";
     notify no;
};
// 对example.com来说,这是管理域 We are the master server for example.com
zone "example.com" {
     type master;          // 设置类型,是主管理型
     file "example.com.db";   // 设置数据库名称
     // 设置允许作为此主服务器的从属DNS服务器的IP地址 IP addresses of slave servers allowed to transfer example.com
     allow-transfer {
          192.168.4.14;
          192.168.5.53;
     };
};
// 设置成子域eng.example.com的从属服务器 We are a slave server for eng.example.com
zone "eng.example.com" {
     type slave;
     file "eng.example.com.bk";
     // 设置子域eng.example.com的管理服务器地址IP address of eng.example.com master server
     masters { 192.168.4.12; };
};

负载平衡

简单的负载平衡可以用一个名字使用多个A记录来实现。

例如,如果有三个WWW服务器,地址分别是10.0.0.1, 10.0.0.2 10.0.0.3, 一组如下的记录表示一个客户机有三分之一可能性连接到其中一台服务器:

Name

TTL

CLASS

TYPE

Resource Record (RR) Data

www

600

IN

A

10.0.0.1

 

600

IN

A

10.0.0.2

 

600

IN

A

10.0.0.3

当客户机查询时,BIND将会轮流以不同顺序回应客户机,例如,客户机随机可能得到的顺序是1, 2, 3; 2, 3, 1;或者3, 1, 2,大多数客户机都会使用得到序列的第一个记录,忽略剩余的记录。

关于查询顺序更多的细节,可以看rrset-order 相关options 陈述,在RRset Ordering. 这个子句在告知(Notify

DNSNotify(告知)机制允许管理服务器通知他们的从属服务器区域数据的改变。对应于管理服务器的NOTIFY(告知)特性,从属服务器会检查区域数据版本,如果不对,从属服务器就启动数据传送。

DNS的告知特性完整描述在RFC 1996中,在also-notify也有描述,参看Section 6.2.14.6,更多相关知识,参看Section 6.2.14.1.

域名服务器操作(Nameserver Operations

使用域名服务器的程序

对系统管理员来说,有几个相互独立的诊断、管理和监控工具,他们可以用来控制和对域名服务器排错。本节讨论

诊断工具

dig

digdomain information groper groper澳大利亚隆头鱼)的简称,是一个命令行工具,可以用来收集域名服务器的信息。它有两种工作方式,简单交互式查询方式用于单一的查询,和批处理模式用于查询列表中的服务器,所有选项都用命令行模式。

格式:

dig [@server] domain [query-type] [query-class] [+query-option] [-dig-option] [%comment]

简单的格式也可以象:

dig @server domain query-type query-class

更多的信息请参看dig man

host

host工具提供一个命令行的简章DNS查询,默认这个工具对主机名和IP地址相互进行转换,但它的功能远不只这些。

格式:

host [-aCdlrTwv] [-c class] [-N ndots] [-t type] [-W timeout] [-R retries] hostname [server]

更多的信息请参看host man

nslookup

nslookup用来查询互联网的域名服务器,它有两种工作方式,交互式和非交互式,交互式允许用户 通过交互式输入查询多个主机名,非交互式用来只查询一个域或主机。

格式:

nslookup [-option...] [host-to-find | - [server]]

不带任何参数的nslookup就会进入交互模式, (此时使用默认的DNS服务器) ,如果第一个参数是连接符(`-') ,第二个参数是主机名或者是互联网地址或域名服务器,也会进入交互式。

当互联网地址或者主机名称是第一个参数时,进入非交互式。第二个可选项是指明域名服务器地址或名称。

由于它神秘的用户界面和经常怪异的表现,我们不推荐您使用它,用dig吧。

管理工具

Administrative tools play an integral part in the management of a server.)!!!

named-checkconf

named-checkconf 检查named.conf的语法是否正确。

格式:named-checkconf [-t directory] [filename]

named-checkzone

named-checkzone 检查管理区域文件语法

格式:named-checkzone [-dq] [-c class] zone [filename]

rndc

remote name daemon control 的缩写,(rndc) 允许系统管理员操作域名服务器,如果运行rndc 时不加任何选项,它会显示如何使用。

格式:rndc [-c config] [-s server] [-p port] [-y key] command [command...]

command包括以下几个:

reload

重新装入配置文件和区域数据文件。

reload zone [class [view]]

重新装入指定的区域文件。

refresh zone [class [view]]

按计划维护指定的区域数据文件。

reconfig

重新装入配置文件和区域数据文件,但是不装入原来的区域数据文件,即使这个数据文件已经改变。这比完全重新装入要快,当有许多区域数据文件时,它比较有效,因为它避免了检查区域文件是否改变。

stats

把服务器统计信息写到统计文件中。

querylog

记录查询日志。也可以使用queries category 到一个channel named.conflogging部分。

dumpdb

将服务器缓存中的内容存成一个dump文件。

stop

停止域名服务的运行,一定要确定动态更新的内容和IXFR已经存入主管理文件。

halt

立即停止服务运行。最近动态更新的内容和IXFR没有存入主管理文件,但当服务重新开始时,它会从日程文件中继续。(journal files

trace

增加一级服务器的debug等级。

trace level

把服务器的debug等级设置成一个数。

notrace

将服务器的debug级别设为0

flush

清理(Flush)服务器缓存。

status

显示服务器运行状态。注意区域总数包括了内部的bind/CH 区域和默认隐蔽区域./IN(如果没有明确配置根区)。

BIND 9.2中,rndc支持BIND 8的所有命令,ndc应用除了 ndc start这个命令在ndc's channel中也取消了。

虽然服务器间所有的通讯都是依赖于公钥加密,但配置文件仍是必不可少的。没办法只使用密钥而不使用配置文件。默认的rndc 配置文件是/etc/rndc.conf, 也可以用-c 选项指定一个位置。如果找不到配置文件, rndc 也会在/etc/rndc.key (或者其它BIND编译时配置的sysconfdir)rndc.key 文件是由rndc-confgen -a 产生的,它的使用参见Section 6.2.4.

配置文件的格式类似于named.conf,但是只有4个语句:options, key, serverinclude 。这些语句与服务器密钥相关,通过这些语句,密钥被共享。这些语句对顺序没有要求。

Options语句有三个子句:default-server, default-key,default-portdefault-server 指明一个主机名或者是地址,如果在命令行上没有使用-s 选项,这里就指明要连接的服务器。default-key 的参数是密钥的名字,就像key 语句定义的一样。default-port 指明rndc 哪个端口连接服务器,在命令行上没有指明连接端口时并且server语句中也没有指明时有效。

key 语句给一个字符串命名,这个字符串是服务器需要的有效的域名(valid domain name),虽然它不需要分等级,这样,像 "rndc_key" 就是一个有效的名字。key 语句有两个字句, algorithm (规则)和secret ,虽然配置分析器允许任何字符作为参数,但当前只有"hmac-md5" 有意义,密钥是64字节长的字符串。

server 语句用key 子句与服务器中的key定义子句(key-defined)联系。Server的参数是主机名或地址(地址必须是双引号内?double quoted)Key子句的参数是key语句中定义的名字。port 子句指定rndc连接指定服务器所用的端口。

一个简单的配置文件如下:

key rndc_key {
     algorithm "hmac-md5";
     secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};
options {
     default-server localhost;
     default-key    rndc_key;
};

这个文件如果像/etc/rndc.conf一样安装,就会允许下面的命令:

$ rndc reload

连接本地127.0.0.1端口 953,并且使域名服务重新启动,如果域名服务在本地,并有以下控制语句:

controls {
        inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
};

并且并且在rndc_key中有同样的key语句。

运行rndc-confgen程序,可以方便的建立一个rndc.conf文件,同时也会显示需要添加到named.conf中对应的controls 语句。也可以运行rndc-confgen -a 来建立一个rndc.key文件,这样就不需要改变named.conf

信号(Signals

一定的UNIX信号会导致域名服务器产生特定的动作,如下表所描述。这些信号可以由kill 命令产生。

SIGHUP

使服务器读named.conf并且重新装入数据库

SIGTERM

使服务器清理干净并退出。(干净的退出?)

SIGINT

使服务器清理干净并退出。

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