首先解释一下域名服务(DNS-Domain Name Server)的作用。其实,链接到网络的电脑,只需要知道IP地址就可以实现访问。但是谁会去记住129.128.5.191这个IP地址是代表OpenBSD的服务器呢?当然是www.openbsd.org容易记忆得多了。域名服务所实现的作用,就是把www.openbsd.org这样的名字转换成电脑可以识别的129.128.5.191这样的IP地址。
所以域名解释服务应当包含两种转换过程:从名字到IP地址(正向解释);从IP地址到名字(反向解释)。理解了这些基本感念,配置域名解释服务得时候就会比较容易了。
第一节、设置named.boot文件
OpenBSD 2.8系统在安装完成后就已经有域名解释服务程序named 4.9.7-REL,只是需要人工设定启动。named的配置文件在/var/named目录里面,文件名是named.boot。一个简单的,可以使用的(当然是和手册的例子联系起来啦!)的named.boot的文件内容如下:
directory /namedb
cache . root.cache
primary 0.0.127.IN-ADDR.ARPA localhost.rev
primary 32.168.192.IN-ADDR.ARPA 01tech.rev
primary 01tech.nat 01tech
可以用vi工具来编辑这个文件(vi的使用方法请参考『附录4』)。解释一下这个文件各行的含义:
第一行用于指定域名解释文件所在目录,其实真正的域名解释文件是放在/var/named/namedb目录里面,因为我们将采用chroot的方式(执行程序的时候切换到程序需要的用户,并以改用户的根目录作为根目录的方式)执行named,所以这里是/namedb。
第二行指定了缓存文件,对于曾经访问过的域名,将会记录在缓存文件里面,以后查询的时候就会快很多。缓存文件的文件名是root.cache。
第三行指定了对于本机的域名反解文件。0.0.127.IN-ADDR.ARPA的写法其实就是说要反过来求127.0.0.x(x的范围是1~255)的对应名称。相关的解释文件是localhost.rev
第四行和第三行同理,就是要求192.168.32.x的对应名称。相关的解释文件是01tech.rev
第五行是正解,指定凡是域名为01tech.nat的名称都交给01tech文件进行解释。
第二节、配置域名解释文件
然后,我们看看/var/namedb目录里面的文件的内容,在系统没有配置域名解释服务的时候,默认只有两个文件:localhost.rev和root.cache,其中的localhost.rev并非我们需要的内容,要自行改写,改写后的内容如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
1 IN PTR localhost.
解释一下这个文件的构成吧!其实这个文件由三个RR(Resource record)构成,或者我们用表格的方式来分析,会比较容易理解吧:
[ name ] [ ttl ] [ class ] type data
@ 省略 IN SOA ……
省略 省略 IN NS ……
1 省略 IN PTR ……
Name必须为主机名或者域名,当使用@时代表缩写,就是和named.boot文件中指定的一样,在这里就代表127.0.0.x了。
ttl是指此条数据的有效保存期限,通常都忽略掉,采用默认的ttl值。
class指定网络类型,IN代表Internet,基本上都不会使用别的类型。
type常见的有SOA、NS、A、PTR、MX、CNAME等。
SOA(Start Of Authority)后面跟负责这个域的主机,管理员邮箱,序列号,副解释域更新间隔,副解释域更新失败重试间隔,主解释域失败时副解释域提供数据的有效期限,其他域名解释服务器保留本域名解释服务器的时间。需要注意的是,在主机和管理员邮箱后一定不能缺少“.”否则系统会自动加上完整的域名,例如只写moo的话,系统会添加为moo.01tech.nat。所以也可以简单的把SOA语句写作SOA moo root.moo (……)。
NS(Name Server)后面跟指定的提供域名解释服务的主机名
PTR(Pointer)后面是对应于前面IP地址的名称。
A(Address)后面是对应于前面的名称的IP地址。需要注意正解的A和反解的PTR的记录必须相符,否则会造成DNS查询不正常,系统变慢。
CNAME用于建立别名,这样访问别名的时候,就会转为访问正式的名称。
MX记录的是一串目的地址列表,用于告诉邮件服务器传送信件的优先顺序。
对于A、CNAME、MX的使用方法将会在后面的正解文件中看到,以后将不再作出解释。
01tech.rev的文件内容和localhost.rev文件基本相同,如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
1 IN PTR moo.01tech.nat.
01tech的内容如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
IN MX 5 pop.01tech.nat.
moo IN A 192.168.32.1
www IN CNAME moo
pop IN CNAME moo
smtp IN CNAME moo
localhost. IN CNAME moo
01tech.nat. IN CNAME moo
第三节、测试DNS
好了,说了一大堆的东西,需要好好消化,不过我们还是看看我们的DNS是否正常吧,通过以下的命令启动named:
named –t /var/named
然后用nslookup来检查DNS是否正常。以下是nslookup运行的结果,任何时候如果域名不能解释,通过按Ctrl+C可以中断查询。
nslookup
Default Server: moo.01tech.nat
Address: 192.168.32.1
>pop
Server: moo.01tech.nat
Address: 192.168.32.1
Name: moo.01tech.nat
Address: 192.168.32.1
Aliases: pop.01tech.nat
>exit
如果您完全按照手册的例子来配置您的DNS,但是查询却没有这样的结果,那么您需要重新再来,好好吃透上面的说明了。
第四节、在启动系统的时候自动启动DNS
要使系统在启动时自动启动DNS服务非常简单,修改/etc/rc.conf文件里面的相关项就可以了
named_flags=NO 改为 named_flags=””