一、什么是DNS服务器:
什么是DNS服务器?先看看它的英文全名:Domain Name Server,中文翻译过来就是:域名服务器了。什么是域名服务器呢?简单一点(其实再难的我也不会),我们从我们打开浏览器(或者是其他的应用也行)输入WWW.SOHU.COM开始了,输入这个后,我们的计算机怎么知道去那个叫搜狐的地方呢?其实我们的机器是这么做的(大体是这样了),我们的机器可不是聪明,它发现自己并不知道你输入的那个东东是什么,呵呵,笨人有笨法,不知道问别人了,于是你的爱机就向网上发出查询,当然,它得先看看你的设置了,你得在你的机器里设置一下DNS服务器的地址了。(有人问了,我用上网为什么不用DNS服务器呢。呵呵。你的使用的协议可是PPP的啊。什么是PPP?在这里我可不能告诉你。自己看看文章吧。呵呵), 它在发出地查询中放好自己的地址,好方便人家返回信息了。这就向你发信一样,人家收到了自然需要你的地址给你回信了。发送的对象在我们这里就是DNS服务器了。它返回什么呢?它返回的就是你所输入的WWW。SOHU。COM这个东东对应的ip地址。然后,你的机器就明白了,它要去的是这个地方,你也就能够到搜狐上去了。呵呵。搜狐的尾巴会唱歌了。现在你明白了,其实你的爱机还是那么笨,它只能理解象数字的这种东东,如果要它记得象www.sohu.com这么复杂名字,它必须向DNS,也就是域名服务器问了才知道。
在这里我们要记住DNS就是域名服务器。
二、什么是域名:
那什么是域名呢?这就很简单了,如果你上网天天要你记得一大堆的象什么61.162.138.144这样的数据地址,你肯定记不住。我们的计算机科学家就想我们可以给网上的每台机器起个好听的名字,这不就行了。比如搜狐是:www.sohu.com, 新浪是:www.sina.com, www.google.com等。但是注意www.sohu.com可不是域名。域名是:sohu.com, www指的是域sohu.com里一台叫www的机器名字,你搞错了吧。笨!所有我们输入www.sohu.com其实也就访问这一台域:sohu.com里叫www的这台机器了。呵呵。
在这里我们记住:www.sohu.com是表示的域:sohu.com里一台叫www的这台机器。因此在网上表示一台机器正确表示方法是机器名+域名。
三、域名服务器是用来做什么的?
前面我们已经说了那么多,嘴都说干了。还没有说到正点子上来。域名服务器到底是做什么的呢。其实呢。我不是说了嘛。那就是让你查用的啊。让你不用记那么多的数字用的啊。具体说来它是将网上的用数字表示的ip地址与好记的域名相对应起来,你说这是不是一个伟大的发明,就凭这一点,就让我们普通的平头老百姓都知道搜狐是什么了。当然它还有就是向网上宣布abc.com这个域的对应地址在哪里,让别人也能找到你哦。
四、配置我们自己的DNS服务器吧:
首先我们来看看我们需要用到的软件。目前最流行的功能最强在的当然是bind了。它几乎已经成为了这个行业的标准了。目前最新版本是binds9.2.3了。我昨天刚下了。正准备升级呢。呵呵,当然我们的文章是新手建站嘛。所以我们用rpm包的就好了(什么?不知道什么是RPM包,呼, 这个嘛,不想告诉你,既然用linux,会不知道什么是rpm包的), 首先查查看你没有安装bind。使用如下的命令:
[myphp]
rpm -qa|grep bind
[/myphp]
如果返回象下面这样,那就OK了。表明你已经安装了bind
:
[myphp]
bind-utils-9.1.3-5
bind-9.1.3-5
bindconf-1.6.1-1
bind-devel-9.1.3-5
[/myphp]
在这里最重要的是bind-9.1.2和bind-utils了。
一个是主要软件,一个是工具了。
软件已经装好,现在我们得看看前提条件了,看看我们会修改那些文件了。在UNIX/Linux世界中,一切都是文件为基础的。因此配置也是使用配置文件:
第一个文件:
/etc/hosts 这个可是系统在安装的时候自己就带了的。和bind无关了。这个文件的作用差不多就DNS服务器的备份了。在这里写上机器名字也会起到查询的作用的。比如说你的DNS服务器挂了(不过,这种情况不多见哦),
第二个文件:
/etc/host.conf, 系统自带的 这个文件的作用就是让你的爱机明白如果它要查一个域名,它应该从什么顺序。看看它的内容就明明白白了。
我的机器上是这样的:
[myphp]
order hosts,bind
[/myphp]
第三个文件:
/etc/resolve.conf 系统自带的 这个文件记录了你的域名服务器的ip和你搜索顺序。比如你现在的机器上可以这样写的:
[myphp]
domain abc.com #定义本地域名
search abc.ocm #简化你的查询了。比如说你输入www,它化优先在abc.com里查询机器了。
nameserver 202.102.14.141 #这个是你的ISP的域名了。如果你的机器要查询不是abc.com这个域,它得去其它的域名服务器查询了。
[/myphp]
第四个文件:
/var/named/named.ca, 这个文件是你在安装软件时软件提供的。我们不要去修改它,它是记录了很多的域名信息,由www.bind.org这个地方负责维护,如果你想要最新的文件,去这里下载好了。它也可以自动更新的。
第五个文件:
/etc/named.conf 这个文件是在软件安装的时候会自带一个样本,基本上我们可以自己手工建起来。面是我们这个例子的文件,我先给出来然后再解释。
[myphp]
optons {
directory "/var/named/";
forward first;
forwarders {
202.102.14.141;
202.102.13.141;
};
}
zone "." {
type hint;
file "named.ca";
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa.zone";
allow-update { none;};
};
zone "localhost" {
type master;
file "localhost.zone";
allow-update { none;};
}
zone "c.b.a.in-addr.arpa.zone" {
type master;
file "c.b.a.in-addr.arpa.zone";
allow-update {none;};
}
zone "abc.com" {
type master;
file "abc.com.zone";
allow-update {none;}
}
[/myphp]
上面就是这个件的内容了。
首先options顾名思义, 就是选项的意思了。我们这里定义了两个选项:directory, 它提的是让bind在哪晨读取它的数据库目录, forward,让bind用户如果查询不到某一个域外优先使用你下面使用forwards定义的域名服务器。
zone. 指定根域的信息文件,这个上面已经说了,它所指定的文件不有随便修改,你现在明白了吧。
zone 0.0.127.in-addr.arpr.zone和zone "localhost"指定是两个文件一个反向解析文件,一个是正向解析的。也就是一个将域名向IP地址解析,一个是将ip地址向域名解析。
zone c.d.a.in-addr-arpr.zone和zone "abc.com" 的作用也是一样的。
其中的type master 表明这是个主域名服务器, file 指定域名记录数据库文件放在哪儿。allow-upload表明可以更新的项。在这里我们不允许更新。如果想要知道更多的请用man bind来看看了。在linux下文档多得不计其数,就看你的英文水平的会不会查询文档了。
基本上这个文件就是这样了,没有好解释的。也没有什么太大的难度了。我们再分别看看其他的文件,在这里我们对127.0.0.1和localhost这两个文件不加以解释了。它的格式和下面的介绍的是一致的。
第六个文件:
/var/named/c.b.a.inm-addr.arpr.zone这个文件是对IP地址:a.b.c.d进行反向解析的一个数据库文件。
让我们可查询到ip:a.b.c.d对应的有哪些服务。
这个文件我们在这里向下面这样写了。我们需要web, ftp, dhcp,mail, dns这几个服务器了。我们就象下面这样写了
[myphp]
$TTL 86400
@ IN SOA @ root.localhost (
2 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttk
)
@ IN NS dns.abc.com.
IN MAX 10 mail.abc.com.
d IN PTR www.abc.com.
d IN PTR dns.abc.com.
d IN PTR ftp.abc.com.
d IN PTR mail.abc.com.
[/myphp]
然后我们再给出正向解析文件:abc.com.zone的内容了
[myphp]
$TTL 86400
@ IN SOA dns.khsun.com. root.localhost (
1 ; 文件版本号
28800 ; 刷新时间
7200 ; 重试时间
604800 ; 终止时间
86400 ; ttl生存时间
)
@ IN NS dns.abc.com.
@ IN MX 10 mail.abc.com.
www IN A a.b.c.d
mail IN CNAME www.abc.com.
dns IN CNAME www.abc.com.
ftp IN CNAME www.abc.com.
smtp IN CNAME www.abc.com.
pop IN CNAME www.abc.com.
[/myphp]
我们比较一下这两个文件,基本上没有太大的差别:
$TTL值可要可不要的。
@指定的就是本域。
SOA是bind指定的是每个区文件必须以这个开头的。
后面的root.localhost实际上是指的这个;root@localhost。呵呵,你明白了吧。就是一个邮箱嘛。但是在由于在这个文件里@已经被赋予了特别的意义,所以只能使用.来代替了。
下面的那些数字的意义后面可都有英文解释了。
好了。
到这里我们已经将这个DNS简单的搞定了。
五、启动并测试DNS服务器:
如果你是使用RPM包安装的就这样启动了:
[myphp]
/etc/rc.d/init.d/named start
[/myphp]
也可以这样了。
[myphp]
ndc start
[/myphp]
好了。
我们来测试一下:
[myphp]
nslookup:
输入
www.abc.com
[/myphp]
看看输出是否是a.b.c.d这个地址呢?