DNS 主机的详细设定:
那么我们就来架设一部完整的 DNS 主机吧!如同前面说的,我们必须要设定的档案有几个呢?
1. /etc/named.conf
2. /var/named/named.root
3. /var/named/named.localhost
4. /var/named/named.127.0.0
5. /var/named/named.正解档案
6. /var/named/named.反解档案
大概就是这几个!要注意的是,除了第一个 /etc/named.conf 的档名是预设的之外,其它的档名都是在
/etc/named.conf 里面设定的!那么底下我们就以鸟哥家里的联机状态来说明一下俺是如何设定我的 domain name 啰!要注意的是,这里的 DNS 设定是『私有网域的设定』状态,如果您刚刚看过了『授权』的概念,那么将会知道,底下我所设定的皆是属于『不合法的 DNS 主机』,这意味着我的 DNS 主机只能够向外查询,但是别人是查不到我的 DNS 主机里面的设定内容的!除非他使用我的 DNS 主机的 IP 啰!不过,嘿嘿!我使用的是私有 IP ,想要使用我的 DNS !哈哈!门都没有~
1. 手动规划 hostname 与 IP 的对应表:
在作任何事之前,先动手设计一下是好事吶!我假设我的 domain name 是 vbird.org 而网域为 192.168.1.0/24,而主机的名称配合 domain name 来设计的共有三部计算机,分别为:
要注意的是,在 mdk90 那部机器中,因为我的用途相当的多,所以我希望我的一部主机有多个名称!那么我目前又只有一个正解的领域,所以就仅设定了这个 domain 里面的三个别名了!总共有四个名字吶!
2. 设定简易的 /etc/named.conf 档案:
还记得上面提过的,这个档案才是主要的设定档,而其它的 hostname <--> IP 则是在各个 zone 的设定档中!那么这个档案主要的设定首先在于针对主机的设定,这一点刚刚 forwarder DNS 主机已经说过了!那另一个则是在定义每一个 zone 的文件名称与该设定 domain 的 『 Type (类型)』,目前有三种类型,分别为 master ( 主要设定档 ) 、 hint ( 就是 root 啦 ) 以及 slave ( 针对 master 来进行资料同步化的设定文件 ) 。好了,那么如果以我们刚刚上面规划的设定来看,那么应该有的 /etc/named.conf 设定就会变成底下的模样了:
要特别留意的是:
o options
里面多定义了一个 directory 的咚咚,这个就是设定文件放置的目录了!以底下的档案为例,如果是 localhost 的正解檔,亦即是 named.localhost 时,那么这个档案的放置位置就是在 /var/named/named.localhost 啦!这样可以了解吗?未来你可以自己改变自己档案放置的地方,就可以分的比较清楚!
pid-file 指的是每一个 services 的记录自己的 PID ( Process ID ) 的档案啰!这个档案通常用在重新激活或者是 reload 整个 services 最常被使用到的!因为可以使用 kill -1 PID 来重新激活啊!嗄!忘记什么是 PID ?赶快 回去 复习一下!
forwarders (不要忘记那个 s 喔!)就是要设定往前寻找的那个『合法』的 DNS 啰!每一个 forward 的主机之 IP 都需要有『 ; 』来做为结尾!
o 关于 . (root) 的内容:root 最重要的就是那个 hint 的 type 啦!记得写对喔!
o 关于 localhost 的正反解:正反解的名称都可以随意设定,不过,要特别留意的就是那个 zone 后面接的其实就是『 domain name 』!这个 domain name 未来在设定档当中会使用得很频繁喔!
o 关于其它 domain 的正反解:其实与 localhost 没有什么不同的,就只是不同的 domain name 就是了!
o 反解的写法:反解的 Zone 的写法较为特殊,他必须要将 IP 反过来写的,例如 127.0.0.1/24 这个 C class 的网
域,要写的话,则必须要反过来写成 0.0.127 这样的形式!其中需要注意的是,最后面务必要加上『in-addr.arpa』的咚咚!不要忘记了喔!
3. 设定 . ( root ) 的内容:
一般而言,反正本机查不到,又没有设定 forwarder 的时候,那么通常就是直接到 . ( root ) 去查询啰!但是我们怎么知道 root 在哪里呢?总还是需要有 IP 吧!没错啰!如果是旧的 Red Hat 或是 Mandrake 都会提供这个 hint type 的档案,但是 Open Linux 里面却没有提供!并且,有的时候,这些主机的 IP 还是可能会变动的啦!因此呢,我们可以连接上管理国际 domain name 的机器,那就是 rs.internic.net 这部机器去下载啰!你可以这样做:
完成之后,我们来看一下 named.root 这个档案吧!
共有若干个的主机,注意喔!那个『 ; 』是设定档的批注,与 /etc/named.conf 又不一样!特别留意,不要搞错了!然后你会发现每个『 . 』都有个 NS 与 A 的对应,注意看到黄色的那两行,第一行意思是 . 的 name server (NS) 为 『A.ROOT-SERVERS.NET. 』最后面有没有加上 . 是不一样的!特别留意!而这个 nameserver 的 IP ( 用A对应 )
为 198.41.0.4 !!其它的用途我们在下一个档案再来谈!总而言之,这个档案不要去改他!因为这个是国际上通用的资料,不能修改啦!改了反而会找不到 . 哩!
4. 设定本机端 ( localhost ) 的正解档案:
每一部机器都有 localhost 嘛!所以呢,我们就先来针对 localhost 这个网域的计算机对应来设定一下啰!而由于 localhost 通常其对应的 IP 就是 127.0.0.1 ,所以就直接给他正解有这两个就行啦!但是要特别留意的是,『我的正解要找哪一个 nameserver !?』因此,在底下的设定档当中,最重要的其实就是要使用 NS 这个 nameserver 的『主机名称』标志啦!
上面有很多的怪怪的字眼,我们得要先说明一下,否则后面您会『雾煞煞』的!
o Slave DNS : 所谓的 slave DNS 主机,就是说,当你的 master 主机挂点的时候,那么 slave 主机才会接管原本 master 所管理的 domain name 的设定!而在 master DNS 主机活的好好的时,那么 slave 将不会有接管的动作发生。这样看起来 slave 就有点像是 master 的备份 DNS 主机啰?!答对了!大部分的时候, slave 主机确实是有点像是
备份的的后援机器!因为他只有在 master 死掉时,才会显示出管理者的威力出来的!而重点在于,既然有『slave 备份』的功能,那么自然其资料就需要『同步化』啰!因此, SOA 才会定义出数个关于资料同步化的数字出来!
这样可以了解上面的意思了吗?呵呵!这个是最基础的几个项目喔!千万要记得!不要忘记了~好了,知道了正解之后,我们要来谈一谈那个反解的东西啦!
5. 设定本机端 ( localhost ) 的反解档案:
反解跟正解一样,还都需要 SOA 的标号,也需要 NS 这个咚咚,唯一不同的大概就是由 IP 对应成为 hostname 的不同了吧!
上面前几行跟前面一样,就不提了!只有最后一行不一样,那个是什么呢?
因为这个 domain (localhost) 就只有一部机器,所以我们很简单的就可以将他设定完成了!底下,我们将要设定
我们自行假设定三部主机喔!
6. 设定 domain name 的正解:
再来设定的就是刚刚我们先前提到的三部主机了,你可以这样设定:
除了先前的 master 与 slave 相关的时间参数之外,还有那个重要的 NS 以及 A 这些参数之外,里面的参数主要有底下几个新鲜玩意儿:
这样应该就设定妥当啰!请额外注意喔!在 DNS 的正解部分,他的重要信息特别的多,比较难设定的意思就对了~所以,您需要特别留意每个设定值是否为正确喔!一般而言,我们会建议大家,设定完成之后,并且执行完激活的 script ,千万要记得去 /var/log/messages 里头看一看有没有错误讯息喔!
7.设定 domain name 的反解:
设定反解要简单的多了~只要找到对应的 hostname 即可:
很简单吧!就是 IP 的对应即可!
8. 激活 named 与 port 及讯息确认:
又到了激活的时刻了!加油!
9. 可能的设定错误问题:
基本上,DNS 算是很难设定的一个 Server 了,所以在除错方面请务必小心!他的设定错误通常有两种情况:
o 语法设定错误:这个问题比较好解决,因为在 /var/log/messages 里面都已经说的很清楚了!按照内容去修订即可;
o 逻辑设定错误:这个就比较困扰了!为什么呢?因为他主要发生在您设定 DNS 主机的时候,考虑不周所产生的问题!例如忘记加上 (.) ,系统不会显示错误讯息,但是却会造成查询的误判,而 MX 设定的主机名称错误,也不会出现有问题的讯息,但是 mail server 就是会收不到信等等~这些错误都需要很详细的 DNS client 的测试才能知道问题的所在。
我们这里先就语法设定错误方面进行介绍,至于逻辑设定的问题,那个就需要多多的进行测试才能知道了~
通常最大的原因真的就是打错字啦!总之,赶紧去看看 /var/log/messages 的内容,一定可以让您更了解错误的问题喔!
10. 测试:这样就设定完成了!请前往 Client 端观察吧!
返回页首
----------------------------------------------------------------------------------------------- Client 端的设定:
· 档案设定:
既然已经完成了 DNS 主机的设定,接下来自然要进行 Client 端的联机测试啦!要怎么测试呢?底下 有几个档案请特别留意喔:
· /etc/hosts :刚刚上面就提过了,这个是最早的 hostname 对应 IP 的档案;
· /etc/resolv.conf :这个就是设定你 Client 端连上 DNS 主机的 IP 设定文件;
· /etc/nsswitch.conf:这个档案则是在『决定』先要使用 /etc/hosts 还是 /etc/resolv.conf的设定!
一般而言, Linux 的预设 hostname 搜寻都是先 /etc/hosts 来的,为什么呢?你可以查看一下 /etc/nsswitch.conf ,并找到 hosts 的项目:
上面那个 files 就是使用 /etc/hosts 而最后的 dns 则是使用 /etc/resolv.conf 的 DNS 主机 IP搜 寻啦!因此,你可以先以 /etc/hosts 来设定 IP 对应ㄋㄟ!当然啦,你也可以将他调换过来,不过,总是 /etc/hosts 比较简单,所以将他摆在前面比较好啦!
好啦,既然我们是要进行 DNS 测试的,那么 /etc/resolv.conf 的内容,自然就要填写我们自己的IP 啰!所以你应该这样写:
nameserver 可以设定多个,但是由于 nameserver 是一个一个的追查下来的,所以,你的 DNS 主机的 IP 要写在最上面喔!然后就可以开始测试了!
· 测试 DNS 设定:
测试 DNS 的程序有很多,我们先来使用最简单的 host 吧!然后还有 nslookup 及 dig 哩! host:
基本上,如果没有特殊的需求,那么 host 这个程序就实在是很好用了!而且还粉方便ㄋㄟ!
nslookup :
nslookup 也是一个很不错用的信息喔!不过,底下的 dig 又更厉害了! dig:
这样的查询方式是不是也很方便呢!?赶快去试看看你的设定对不对吧!