第一步:从安装盘中安装DNS

(1)rpm –qa | grepbind’(检查是否已经安装)

bind-utils- 9.2.4-30.el4_7.2

ypbind-1.17.2-13

bind-libs-9.2.4-30.el4_7.2

bind-9.2.4-30.el4_7.2

bind-devel-9.2.4-30.el4_7.2

bind-chroot-9.2.4-30.el4_7.2

如果出现上面的软件包,则已经安装DNS;如果没有,可用rpm -ivh命令安装。

DNS的相关软件包

Bind bind-chroot caching-nameserver

Bind是来提供核心的二进制程序

Bind-chroot提供安全性的

Caching-nameserver提供模板文件

Bind-lib*的库文件

rpm安装顺序:Bind->caching-nameserver->bind-chroot

DNS的守护进程

/usr/sbin/named /usr/sbin/rndc

DNS的脚本

/etc/init.d/named

DNS的端口

53 953(tcp udp)

(2)除了上面的软件包外,还需要安装caching-nameserver-7.3-3.0.1.el4_6软件包

第二步:修改配置文件

主机名称可以用:hostname netfinity.linuxidc.com修改,或者在/proc/sys/kernel下的hostname文件中修改。(不同:前者是暂时的,机器重启后又变回;后者是永久性的)

Linux主机的ip地址是:192.168.0.10

Linux下的dns功能是通过bind软件实现的。bind软件安装后,会产生几个固有文件,分为两类,一类是配置文件在/etc目录下,一类是dns记录文件在/var/named目录下。加上其他相关文件,共同设置dns服务器。下面是所有和dns设置相关文件的列表与说明。

第一类:在/etc下的配置文件

1/etc/hosts文件,定义了主机名和ip地址的对应,其中也有将要运行dns这台电脑的ip地址和主机名。内容为:

127.0.0.1 localhost.localdomain localhost

192.168.0.10 netfinity.linuxidc.com netfinity

2/etc/host.conf文件,内容为

order hosts,bind

multi on

nospoof on

"order hosts bind"语句,指定了对主机名的解析顺序是先到hosts中查找,然后到dns服务器的记录里查找。“multi on”则是允许一个主机名对应多个ip地址。

3/etc/resolv.conf文件,内容为:

; generated by /sbin/dhclient-script

domain linuxidc.com

nameserver 192.168.0.10

nameserver 192.168.0.10指定了dns服务器的地址。注意,这个文件对普通非dns服务器的电脑(非windows的系统;Windows系统是在网络属性中设置这项的)来说,是必不可少的。你如果没有设置本机为dns服务器,你又要能够解析域名,就必须指定一个dns服务器的地址。你可以最多写上三个地址,作为前一个失败时的候选dns服务器。“domain Linuxidc.com”指定默认的域。

4/etc/named.conf文件,是dns server配置的核心文件。内容如下:

[root@netfinity named]# more /etc/named.conf

//

// named.conf for Red Hat caching-nameserver

//

options {

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

// query-source address * port 53;

};

//

// a caching only nameserver config

//

controls {

inet 127.0.0.1 allow { localhost; } keys { rndckey; };

};

zone "." IN {

type hint;

file "named.ca";

};

zone "localdomain" IN {

type master;

file "localdomain.zone";

allow-update { none; };

};

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 "linuxidc.com" IN {解释:正向解析

type master;

file "named.linuxidc.com"; //具体的解析文件

allow-update { none; };

};

zone "0.168.192.in-addr.arpa" IN {解释:反向解析

type master;

file "named.linuxidc.com.rev"; //具体的解析文件

allow-update { none; };

};

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN

{

type master;

file "named.ip6.local";

allow-update { none; };

};

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

type master;

file "named.broadcast";

allow-update { none; };

};

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

type master;

file "named.zero";

allow-update { none; };

};

include "/etc/rndc.key";

“directory”指定了dns记录文件的存放目录是/var/named“//”开头的文字是说明文字,不用管它。接着的两个“zone”语句定义了dns服务器的根和对应的反向查询域,并指出根的记录文件是“name.ca”,根的反向查询域的记录文件是“named.local”。这两个记录文件也是系统自带的,不用去改动它。named.conf文件的这一部分内容,我们不必去改动它。

其中,红色部分是自己手工添加的内容。定义了“Linuxidc.com”这个域和对应的反向查询域。“type master”说明本机是“Linuxidc.com”“0.168.192.in-addr.arpa”这两个域的主dns服务器(primary name server)。“named.Linuxidc.com”“named.Linuxidc.com.rev”是域的记录文件。这两个文件也是自己创建的,下面我们就来看看这两个文件。

第二类:在资源记录文件,位于/var/named目录下。这个目录是named.conf中定义的。

(1)named.linuxidc.com文件内容如下:

$TTL 86400

@IN SOA @ root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

@ IN NS netfinity.linuxidc.com.

netfinity IN A 192.168.0.10

mail IN CNAME netfinity.linuxidc.com.

www IN CNAME netfinity.linuxidc.com.

在这个记录文件中,出现了5种类型的记录。SOA 是授权起始(Start Of Authority)的缩写,后面接着写你的dns服务器的主机名,这里是“netfinity.Linuxidc.com.”。(注意,主机名称后面的小圆点。凡是出现在记录文件了的主机名,记得都要加上这各小圆点。)NS 是名称服务器资源记录,指明域中的名称服务器,这里就是dns服务器。MX是邮件交换者资源记录,指明这个域的邮件服务器。你可以写多个MX记录,指明多个邮件服务器,优先级别由MX后的数字决定,数字越小,邮件服务器优先权越高。A是主机记录,把主机和ip地址对应起来。CNAME是别名记录,它赋予一个主机不同的名称,如www.Linuxidc.compop3.Linuxidc.com其实都是指向同一台主机netfinity.Linuxidc.com

注意:

1)在网上的很多资料,发现了一个错误,就是第一行中,如果按照网上的写法,会出错。

@IN SOA @ netfinity. root.netfinity.(

错误信息:

dns_rdata_fromtext: com.zone:2: near 'root.netfinity.': not a valid number

zone linuxidc.com/IN: loading master file com.zone: not a valid number

结果把“.”去了之后,正常运行。

2)在该文件中的写法是由严格的格式的,不能随便写。否则会出现下面的错误

如果将上面的netfinity对应行变为下面的格式:

@ IN NS netfinity.linuxidc.com.

netfinity IN A 192.168.0.10

mail IN CNAME netfinity.linuxidc.com.

www IN CNAME netfinity.linuxidc.com.

错误信息:

dns_master_load: com.zone:10: unknown RR type 'netfinity'

(2)named.linuxidc.com.rev文件内容如下:

$TTL 86400

@ IN SOA netfinity. root.netfinity. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS netfinity.

10 IN PTR netfinity.

20 IN PTR linuxidc.

这是“Linuxidc.com”的反向域记录文件,它让dns服务器提供由ip地址查找主机名的服务。PTR记录把ip和主机名对应起来。由于一些程序会要求反向查询,所以反向查询域的记录文件最好不要省略。

注意:

这个文件中的第一行,可以写成带dot的格式。

第三步:DNS服务器的服务是named,可以使用:

Service named start|stop|restart来操作。

第四步:学会查错和修改错误:

/var/log/messages里的内容是服务状态改变时的一些状态信息。比如我在安装配置DNS服务器时,就发生了一个错误:

Apr 13 12:32:29 mail named[18455]: shutting down: flushing changes

Apr 13 12:32:29 mail named[18455]: stopping command channel on 127.0.0.1#953

Apr 13 12:32:29 mail named[18455]: no longer listening on 127.0.0.1#53

Apr 13 12:32:29 mail named[18455]: no longer listening on 192.168.0.10#53

Apr 13 12:32:29 mail named[18455]: exiting

Apr 13 12:32:29 mail named: succeeded

Apr 13 12:32:34 mail named[18701]: starting BIND 9.2.4 -u named -t /var/named/ch

root

Apr 13 12:32:34 mail named[18701]: using 2 CPUs

Apr 13 12:32:34 mail named[18701]: loading configuration from '/etc/named.conf'

Apr 13 12:32:34 mail named[18701]: listening on IPv4 interface lo, 127.0.0.1#53

Apr 13 12:32:34 mail named[18701]: listening on IPv4 interface eth0, 192.168.0.1

0#53

Apr 13 12:32:34 mail named[18701]: command channel listening on 127.0.0.1#953

Apr 13 12:32:34 mail named[18701]: zone 0.in-addr.arpa/IN: loaded serial 42

Apr 13 12:32:34 mail named[18701]: zone 0.0.127.in-addr.arpa/IN: loaded serial 1

997022700

Apr 13 12:32:34 mail named[18701]: zone 0.168.192.in-addr.arpa/IN: loading maste

r file named.linuxidc.com.rev: file not found

Apr 13 12:32:34 mail named[18701]: zone 255.in-addr.arpa/IN: loaded serial 42

Apr 13 12:32:34 mail named[18701]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.

0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 1997022700

Apr 13 12:32:34 mail named[18701]: zone linuxidc.com/IN: loading master file nam

ed.linuxidc.com: file not found

Apr 13 12:32:34 mail named[18701]: zone localdomain/IN: loaded serial 42

Apr 13 12:32:34 mail named[18701]: zone localhost/IN: loaded serial 42

Apr 13 12:32:34 mail named[18701]: running

Apr 13 12:32:34 mail named: named启动 succeeded

上面红色部分是说,server按照我在named.conf文件中的配置,没有找到映射的文件。

这个时候,我发现:/var/named//var/named/chroot/var/named文件夹下的文件是一样的,而且用ls –l可以查看得出/var/named/文件夹下的文件都是/var/named/chroot/var/named下的软连接。

出现上面错误的原因是:我直接在/var/named/下创建的文件named.linuxidc.comnamed.linuxidc.com.rev,并没有创建软连接什么的。

解决方法:

(1)/var/named/chroot/var/named

touch named.linuxidc.com(或者cp localhost.zone named.linuxidc.com)

ls –l named.linuxidc.com,可以看到它属于root组的root用户

而看看其它系统自动产生的,都是属于named组的named用户,所以要修改:

chown named.named named.linuxidc.com,这样它就属于named组的named用户了。

(2)/var/named/文件夹下,创建named.linuxidc.com的软连接

ln –s chroot/var/named/named.linuxidc.com named.linuxidc.com

/var/named/下的named.linuxidc.com属于root组的root用户。

第五步:测试DNS

使用nslookup命令。