如果公司内有多台服务器,或者虚拟主机,可能这些服务都需要一个独立的域名,这时我们就可以自己架设一台DNS服务器,可以创建自己的域名。
首先,我们来分析一下,DNS的几种角色:
1、DNS缓存服务器:Bind9会把查询到的域名信息缓存到服务器上,下次直接从本服务器上读取。这样可以节省带宽和等待时间。
2、DNS主服务器(primary master):Bind9从主服务器的配置文件中读取域名区域信息,并作为该区域的权威解析资料。
3、DNS从服务器(slave master):Bind9作为主服务器的备份,即使主服务器不可用时,也仍然能够进行解析。
在此,我们只创建DNS缓存服务器和DNS主服务器。对于个人和一般的企业,DNS主服务器已经够用。
Bind9的配置文件:
在/etc/bind/目录下,有3个主要配置文件,分别是:
/etc/bind/named.conf 是Bind的主要配置文件,不过它不包含DNS数据,它使用include包含以下两个文件
/etc/bind/named.conf.options
/etc/bind/named.conf.local
其中,在/etc/bind/named.conf.options中有一句默认配置:
directory "/var/cache/bind"; ,该配置告诉Bind,到/var/cache/bind目录下去寻找数据文件。
这里,我们选择Debian操作系统,Bind9。
先创建一个DNS缓存服务器
一、安装:
sudo apt-get install bind9 dnsutils bind9-doc
bind9提供了DNS服务器功能
dnsutils则提供了DNS测试和除错工具
bind9-doc 提供bind9的文档
二、转发配置:
vi /etc/bind/named.conf.options
加入ISP提供的DNS服务器地址,如河南的为202.102.224.68和202.102.227.68:
forwards {
202.102.224.68;
202.102.22768;
};
注意后面的分号,一定不能少!
重启 Bind服务:
/etc/init.d/bind9 restart
三、修改/etc/resolv.comf 文件:
vi /etc/resolv.conf
search mytest.com
nameserver 10.0.0.230
其中,10.0.0.230为本机IP,这个根据个人情况进行填写。
测试:
dig google.com
如图:
![](http://hi.csdn.net/attachment/201107/14/0_1310611138X5ec.gif)
我截的图,为最后4行的统计信息:包括查询时间,所使用 的DNS服务器等。
四、搭建主DNS服务器,将配置linux.tech的主DNS服务器。我们需要创建正向和反向解析的Zone区域文件。
1、创建正反向Zone文件(所谓正向解析文件,就是把域名解析为IP):
vi /etc/bind/named.conf.local,添加如入信息:
zone "linux.tech" {
type master;
file "/etc/bind/linux.tech.hosts";
};
#该配置指定Bind作为linux.tech域的主域名服务器,
#jan.tech.hosts文件中包含所有*.linux.tech形式的域名转换数据。
#如果jan.tech.hosts文件没有指定路径,则默认的路径为/var/cache/bind。
zone "0.0.10.in-addr.arpa" {
type master;
file "/etc/bind/10.0.0.rev";
};
#这是反向解析文件。zone的名称必须是倒写的IP地址中的网络号。
#这是因为我的网络号为:10.0.0.0,所以Zone名称写为:0.0.10。
logging {
channel query.log {
file "/var/log/dns.log";
severity debug 3;
};
category queries { query.log; };
};
#上面是日志信息,复制即可。在severity中,debug的级别可以是1-3.
#由于Bind9是由bind用户运行的,所以我们还需要让该用户能够有权限写入日志文件:
sudo touch /var/log/dns.log
sudo chown bind /var/log/dns.log
2、添加正向解析文件
vi /etc/bind/linux.tech.hosts
$ttl 38400
linux.tech. IN SOA ods.linux.tech. admin.linux.tech. (
1243951711
10800
3600
604800
38400 )
linux.tech. IN NS ods.linux.tech.
linux.tech. IN A 10.0.0.5
login.linux.tech. IN A 10.0.0.5
cosignd.linux.tech. IN A 10.0.0.5
ods.linux.tech. IN A 10.0.0.5
svn.linux.tech. IN A 10.0.0.5
trac.linux.tech. IN A 10.0.0.5
www IN CNAME ldap.linux.tech.
ftp IN CNAME log.linux.tech.
dns.linux.tech. IN A 10.0.0.1
daily.linux.tech. IN A 10.0.0.5
ldap.linux.tech. IN A 10.0.0.3
plone.linux.tech. IN A 10.0.0.3
redmine.linux.tech. IN A 10.0.0.5
wiki.linux.tech. IN A 10.0.0.3
test.linux.tech. IN A 10.0.0.230
ktrac.linux.tech. IN A 10.0.0.4
ksvn.linux.tech. IN A 10.0.0.4
mail.linux.tech. IN A 10.0.0.3
#第一行的TTL设置,为38400秒,也就是说,文件中所有的记录内容,
#在DNS缓存服务器上的生存周期是38400S,这个可以根据情况自行修改。
#第二行设置了SOA记录,开头的字符@是说明该条记录的来源(来自linux.tech的记录)。
#之后的IN,意思是该记录属于Internet类型。
#ods,为本机的主机名,具体情况依据你自己的机器名称。
#SOA是Start Of Authority的缩写,可以理解为“权威域名信息”的开始,
#每一个Zone文件只能有一个SOA记录,而且必须是第一个记录。
#后面的“admin.linux.tech",
#实际上是一个E-mail地址,只不过这里不能写@符号,需要写成点(.)。
#还要注意的是末尾的点(.)也得保留。
#后面的五组数字,用于和从服务器保持同步,这里不再介绍。
3、添加反向解析文件,所谓反向解析,就是把IP地址解析为域名。
vi /etc/bind/10.0.0.rev
$ttl 38400
0.0.10.in-addr.arpa. IN SOA ods.linux.tech. admin.linux.tech. (
1243952355
10800
3600
604800
38400 )
0.0.10.in-addr.arpa. IN NS ods.linux.tech.
5.0.0.10.in-addr.arpa. IN PTR linux.tech.
5.0.0.10.in-addr.arpa. IN PTR svn.linux.tech.
5.0.0.10.in-addr.arpa. IN PTR login.linux.tech.
5.0.0.10.in-addr.arpa. IN PTR cosignd.linux.tech.
5.0.0.10.in-addr.arpa. IN PTR trac.linux.tech.
1.0.0.10.in-addr.arpa. IN PTR dns.linux.tech.
5.0.0.10.in-addr.arpa. IN PTR daily.linux.tech.
3.0.0.10.in-addr.arpa. IN PTR ldap.linux.tech.
3.0.0.10.in-addr.arpa. IN PTR plone.linux.tech.
5.0.0.10.in-addr.arpa. IN PTR redmine.linux.tech.
3.0.0.10.in-addr.arpa. IN PTR wiki.linux.tech.
3.0.0.10.in-addr.arpa. IN PTR mail.linux.tech.
230.0.0.10.in-addr.arpa. IN PTR test.linux.tech.
4.0.0.10.in-addr.arpa. IN PTR ktrac.linux.tech.
4.0.0.10.in-addr.arpa. IN PTR ksvn.linux.tech.
#这里的配置和正向解析基本相同,需要再介绍的是IP地址的写法,
#可以像我上面写的一样,把IP倒过来写,也可以直接写地址号。
#如添加一台IP为78的,域名为project.linux.tech的主机,可以这样写:
#78 IN PTR project.linux.tech
#每次我们向DNS中添加记录时,一定记住,
#只需修改/etc/bind/linux.tech.hosts和10.0.0.rev这两个文件即可。
#具体添加方式,可以按照我上面的例子。
五、重启Bind, 测试
sudo /etc/init.d/bind9 restart
ping linux.tech
dig 本地加环地址,可以确认Bind是否已经开始运行在53端口。
dig -x 127.0.0.1
;;Query time:1 mesc
;;SERVER:10.0.0.230#53(10.0.0.230)
Bind9自带了一个极好 的工具,named-checkzone,可以测试Zone文件。
如:
named-checkzone linux.tech /etc/bind/db.linux.tech
如果一切正常,应该返回如下 信息:
zone linux.tech/IN: loaded serial 1243951711
OK
测试反向解析文件也一样:
named-checkzone linux.tech /tec/bind/10.0.0.rev
以上内容为本人一字一符号的敲打上去的,如要复制,请注明出处!谢谢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)