|YcYWok
第三章. 域名服务器配置 |YcYWok
目录 |YcYWok
3.1. |YcYWok
范例配置 |YcYWok
3.2. |YcYWok
负载平衡 |YcYWok
3.3. |YcYWok
Notify |YcYWok
3.4. |YcYWok
域名服务器操作 |YcYWok
本章我们提供一些典型应用的建议配置,并说明这样写配置的原因。 |YcYWok
3.1. 范例配置 |YcYWok
3.1.1. 只有缓存功能的域名服务器 |YcYWok
下面这个例子是一个公司内部的只作缓存使用的域名服务器的例子,它拒绝所有从外部网络到达的查询。 |YcYWok
// 只允许从两个子网访问 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 hintszone "." { type hint; file "root.hint"; }; // 定义根域,类型为hint,文件名是root.hint// 提供本地回环127.0.0.1的映射Provide a reverse mapping for the loopback address 127.0.0.1zone "0.0.127.in-addr.arpa" { type master; file "localhost.rev"; notify no;}; |YcYWok
3.1.2. 只有主域名服务功能的配置 |YcYWok
这个例子中,服务器对域"example.com"做管理服务器,对子域 "eng.example.com"做从属服务器。 |YcYWok
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 hintszone "." { type hint; file "root.hint"; }; // Provide a reverse mapping for the loopback address 127.0.0.1zone "0.0.127.in-addr.arpa" { type master; file "localhost.rev"; notify no;};// 对example.com来说,这是管理域 We are the master server for example.comzone "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.comzone "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; };}; |YcYWok
3.2. 负载平衡 |YcYWok
简单的负载平衡可以用一个名字使用多个A记录来实现。 |YcYWok
例如,如果有三个WWW服务器,地址分别是10.0.0.1, 10.0.0.2 和10.0.0.3, 一组如下的记录表示一个客户机有三分之一可能性连接到其中一台服务器: |YcYWok
Name |YcYWok
TTL |YcYWok
CLASS |YcYWok
TYPE |YcYWok
Resource Record (RR) Data |YcYWok
www |YcYWok
600 |YcYWok
IN |YcYWok
A |YcYWok
10.0.0.1 |YcYWok
|YcYWok
600 |YcYWok
IN |YcYWok
A |YcYWok
10.0.0.2 |YcYWok
|YcYWok
600 |YcYWok
IN |YcYWok
A |YcYWok
10.0.0.3 |YcYWok
当客户机查询时,BIND将会轮流以不同顺序回应客户机,例如,客户机随机可能得到的顺序是1, 2, 3; 2, 3, 1;或者3, 1, 2,大多数客户机都会使用得到序列的第一个记录,忽略剩余的记录。 |YcYWok
关于查询顺序更多的细节,可以看rrset-order 相关options 陈述,在 |YcYWok
RRset Ordering |YcYWok
. 这个子句在BIND 9中并不支持, 必须在and only the ordering scheme described above is available. |YcYWok
3.3. 告知(Notify) |YcYWok
DNS的Notify(告知)机制允许管理服务器通知他们的从属服务器区域数据的改变。对应于管理服务器的NOTIFY(告知)特性,从属服务器会检查区域数据版本,如果不对,从属服务器就启动数据传送。 |YcYWok
DNS的告知特性完整描述在RFC 1996中,在also-notify也有描述,参看 |YcYWok
Section 6.2.14.6 |YcYWok
,更多相关知识,参看 |YcYWok
Section 6.2.14.1 |YcYWok
. |YcYWok
3.4. 域名服务器操作(Nameserver Operations) |YcYWok
3.4.1. 使用域名服务器的程序 |YcYWok
对系统管理员来说,有几个相互独立的诊断、管理和监控工具,他们可以用来控制和对域名服务器排错。本节讨论 |YcYWok
3.4.1.1. 诊断工具 |YcYWok
dig |YcYWok
dig是domain information groper (groper:澳大利亚隆头鱼)的简称,是一个命令行工具,可以用来收集域名服务器的信息。它有两种工作方式,简单交互式查询方式用于单一的查询,和批处理模式用于查询列表中的服务器,所有选项都用命令行模式。 |YcYWok
格式: |YcYWok
dig [@server] domain [query-type] [query-class] [+query-option] [-dig-option] [%comment] |YcYWok
简单的格式也可以象: |YcYWok
dig @server domain query-type query-class |YcYWok
更多的信息请参看dig man 。 |YcYWok
host |YcYWok
host工具提供一个命令行的简章DNS查询,默认这个工具对主机名和IP地址相互进行转换,但它的功能远不只这些。 |YcYWok
格式: |YcYWok
host [-aCdlrTwv] [-c class] [-N ndots] [-t type] [-W timeout] [-R retries] hostname [server] |YcYWok
更多的信息请参看host man 。 |YcYWok
nslookup |YcYWok
nslookup用来查询互联网的域名服务器,它有两种工作方式,交互式和非交互式,交互式允许用户 通过交互式输入查询多个主机名,非交互式用来只查询一个域或主机。 |YcYWok
格式: |YcYWok
nslookup [-option...] [host-to-find | - [server]] |YcYWok
不带任何参数的nslookup就会进入交互模式, (此时使用默认的DNS服务器) ,如果第一个参数是连接符(`-') ,第二个参数是主机名或者是互联网地址或域名服务器,也会进入交互式。 |YcYWok
当互联网地址或者主机名称是第一个参数时,进入非交互式。第二个可选项是指明域名服务器地址或名称。 |YcYWok
由于它神秘的用户界面和经常怪异的表现,我们不推荐您使用它,用dig吧。 |YcYWok
3.4.1.2. 管理工具 |YcYWok
(Administrative tools play an integral part in the management of a server.)!!! |YcYWok
named-checkconf |YcYWok
named-checkconf 检查named.conf的语法是否正确。 |YcYWok
格式:named-checkconf [-t directory] [filename] |YcYWok
named-checkzone |YcYWok
named-checkzone 检查管理区域文件语法 |YcYWok
格式:named-checkzone [-dq] [-c class] zone [filename] |YcYWok
rndc |YcYWok
是remote name daemon control 的缩写,(rndc) 允许系统管理员操作域名服务器,如果运行rndc 时不加任何选项,它会显示如何使用。 |YcYWok
格式:rndc [-c config] [-s server] [-p port] [-y key] command [command...] |YcYWok
command包括以下几个: |YcYWok
reload |YcYWok
重新装入配置文件和区域数据文件。 |YcYWok
reload zone [class [view]] |YcYWok
重新装入指定的区域文件。 |YcYWok
refresh zone [class [view]] |YcYWok
按计划维护指定的区域数据文件。 |YcYWok
reconfig |YcYWok
重新装入配置文件和区域数据文件,但是不装入原来的区域数据文件,即使这个数据文件已经改变。这比完全重新装入要快,当有许多区域数据文件时,它比较有效,因为它避免了检查区域文件是否改变。 |YcYWok
stats |YcYWok
把服务器统计信息写到统计文件中。 |YcYWok
querylog |YcYWok
记录查询日志。也可以使用queries category 到一个channel 在named.conf的logging部分。 |YcYWok
dumpdb |YcYWok
将服务器缓存中的内容存成一个dump文件。 |YcYWok
stop |YcYWok
停止域名服务的运行,一定要确定动态更新的内容和IXFR已经存入主管理文件。 |YcYWok
halt |YcYWok
立即停止服务运行。最近动态更新的内容和IXFR没有存入主管理文件,但当服务重新开始时,它会从日程文件中继续。(journal files ) |YcYWok
trace |YcYWok
增加一级服务器的debug等级。 |YcYWok
trace level |YcYWok
把服务器的debug等级设置成一个数。 |YcYWok
notrace |YcYWok
将服务器的debug级别设为0。 |YcYWok
flush |YcYWok
清理(Flush)服务器缓存。 |YcYWok
status |YcYWok
显示服务器运行状态。注意区域总数包括了内部的bind/CH 区域和默认隐蔽区域./IN(如果没有明确配置根区)。 |YcYWok
在BIND 9.2中,rndc支持BIND 8的所有命令,ndc应用除了 ndc start,这个命令在ndc's channel中也取消了。 |YcYWok
虽然服务器间所有的通讯都是依赖于公钥加密,但配置文件仍是必不可少的。没办法只使用密钥而不使用配置文件。默认的rndc 配置文件是/etc/rndc.conf, 也可以用-c 选项指定一个位置。如果找不到配置文件, rndc 也会在/etc/rndc.key (或者其它BIND编译时配置的sysconfdir)。rndc.key 文件是由rndc-confgen -a 产生的,它的使用参见 |YcYWok
Section 6.2.4 |YcYWok
. |YcYWok
配置文件的格式类似于named.conf,但是只有4个语句:options, key, server和include 。这些语句与服务器密钥相关,通过这些语句,密钥被共享。这些语句对顺序没有要求。 |YcYWok
Options语句有三个子句:default-server, default-key,和default-port。default-server 指明一个主机名或者是地址,如果在命令行上没有使用-s 选项,这里就指明要连接的服务器。default-key 的参数是密钥的名字,就像key 语句定义的一样。default-port 指明rndc用 哪个端口连接服务器,在命令行上没有指明连接端口时并且server语句中也没有指明时有效。 |YcYWok
key 语句给一个字符串命名,这个字符串是服务器需要的有效的域名(valid domain name),虽然它不需要分等级,这样,像 "rndc_key" 就是一个有效的名字。key 语句有两个字句, algorithm (规则)和secret ,虽然配置分析器允许任何字符作为参数,但当前只有"hmac-md5" 有意义,密钥是64字节长的字符串。 |YcYWok
server 语句用key 子句与服务器中的key定义子句(key-defined)联系。Server的参数是主机名或地址(地址必须是双引号内?double quoted)。Key子句的参数是key语句中定义的名字。port 子句指定rndc连接指定服务器所用的端口。 |YcYWok
一个简单的配置文件如下: |YcYWok
key rndc_key { algorithm "hmac-md5"; secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";};options { default-server localhost; default-key rndc_key;}; |YcYWok
这个文件如果像/etc/rndc.conf一样安装,就会允许下面的命令: |YcYWok
$ rndc reload |YcYWok
连接本地127.0.0.1端口 953,并且使域名服务重新启动,如果域名服务在本地,并有以下控制语句: |YcYWok
controls { inet 127.0.0.1 allow { localhost; } keys { rndc_key; };}; |YcYWok
并且并且在rndc_key中有同样的key语句。 |YcYWok
运行rndc-confgen程序,可以方便的建立一个rndc.conf文件,同时也会显示需要添加到named.conf中对应的controls 语句。也可以运行rndc-confgen -a 来建立一个rndc.key文件,这样就不需要改变named.conf。 |YcYWok
3.4.2. 信号(Signals) |YcYWok
一定的UNIX信号会导致域名服务器产生特定的动作,如下表所描述。这些信号可以由kill 命令产生。 |YcYWok
SIGHUP |YcYWok
使服务器读named.conf并且重新装入数据库 。 |YcYWok
SIGTERM ;PrL)!
使服务器清理干净并退出。(干净的退出?) ;PrL)!
SIGINT ;PrL)!
使服务器清理干净并退出。 ;PrL)!
;PrL)!