这次我们来讲DNS服务器的架设,在讲怎么架设之前我们有必要了解什么是DNS,及其的作用是什么?网域名称系统(Domain Name System缩写DNS,Domain Name被译为域名;另外域名服务器Domain Name Server也简称为DNS)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。(摘选自维基百科)
这里重点提醒下大家一个尝试,DNS服务器的根服务器全世界只有13台。我们所做的DNS服务器永远无法成为根服务器,请大家记住。
竟然知道了什么是DNS和它的大概作用,现在我们现在来看看DNS的工作原理。

根据这幅图,我们来简单说下DNS是怎么来工作的。
1.DNS服务器C上具有很多很多的数据,至于是什么数据我们先不关心,等到我们自己动手做的时候就会明白的。
2.WEB服务器B的域名架设为yayi.biz,主机名为www.yayi.biz..
3.我们是客户机A,DNS地址设置为:192.168.1.12,现在大家要来访问我的博客了,当我们在浏览器上敲上网址的时候,我们的电脑就会向主机B询问www.yayi.biz的IP地址是什么?如图:

4.DNS服务器会找自己的数据,找到后会直接告诉主机A,www.yayi.biz的IP地址是:192.168.1.3。如图:

5.主机A的我们知道www.yayi.biz的IP地址是192.168.1.3时,就直接向WEB服务器B请求数据的发送了。如图:

6.收到请求的WEB服务器B,便向主机A发送数据,于是我们就可以浏览我的博客了。这样就完成了一次简单的网页浏览,这样我们也可以简单的理解到DNS的工作原理。
注意:这里已经忽略了各种复杂的网络,忽略了DNS服务器C不存在数据的问题,忽略了根DNS服务器的问题,最后也忽略了DNS转发服务器的问题,现实的情况下,这些问题都会是成为我们架设DNS服务器所遇到得一些小问题。只要注意一下便可以解决。值得一提的是DNS使用53端口,这个是一个很特殊的端口,说它特殊时因为它是TCP的同时又是UDP端口,更详细的大家去查阅下网络技术那一块。
竟然已经简单的理解了DNS是怎么工作的后,我们现在就来看看DNS服务器是怎么架设起来的。在Linux下,架设DNS服务器的软件很多很多,但是最为出名和实用的依然是bind,所以这里我们就讲讲怎么用bind来架设DNS服务器的。
首先我们先登录bind的官方网站把bind下载下来,笔者在这里使用的版本为 9.6.1。
bind官方地址:https://www.isc.org/
1、安装篇:
然后解压:
tar zxf bind-XXXX.tar.gz
创建文件夹:
mkdir /usr/local/bind (要把bind安装在这里)
进入bind解压后的位置.进行编译安装
./configure –prefix=/usr/local/named –enable-threads
(–enable-threads是为了开启多线程更多选项请参考configure –help)
make ;make install
安装完成!!
2、主配置文件配置篇:
进行bind目录:
cd /usr/local/named
生成密匙文件:
sbin/rndc-confgen > etc/rndc.conf
进入bind的etc目录
cd etc
用rndc.conf文件生成named.conf文件:
tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
打开/usr/local/named/etc/named.conf文件
添加以下文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | options
{
directory “/var/named”; #域名文件存放的绝对路径
pid-file “named.pid”; #如果bind启动,自动会在/var/named目录生成一个 named.pid文件,打开文件就是named进程的ID
};
zone “.” IN {
type hint; #根域名服务器
file “named.root”; # 存放在/var/named目录,文件名为named.root
};
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 “test.com” IN { #建立test.com域
type master; #类型为主域名服务器
file “test.zone”; #test.com域映射IP地址可在此文件编写
allow-update { none; };
};
zone “1.168.192.in-addr.arpa” in { #反向解析
type master; #类型为主域名服务器
file “test.local”; #存放反向解析的文件
allow-update { none; };
}; |
3、区域配置文件配置篇:
打下依次建立这些区域文件
① 根区域文件的配置:
mkdir /var/named
cd /var/named
vi named.root
根域名服务器的存放位置,比喻hp.com域不在自己的解析范围,自动将解析交给根域名服务器,named.root内容是不定期更新的,最新的内容都是去ftp://rs.internic.net/domain/下载。
下面是Yayi给出的根区域配置文件的参考,建议去下载一个最新的,这里的内容不用背,理解下便可以,因为我可以通过网络得到最新的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | ; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the “cache . ” ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.root ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: Feb 04, 2008 ; related version of root zone: 2008020400 ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803f:235 ; ; formerly NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; operated by VeriSign, Inc. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30 ; ; operated by RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1 ; ; operated by ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 ; ; operated by WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35 ; End of File |
②本地区域文件的配置:
依然是在/vat/named/目录中,创建一个本地区域文件:
vi test.zone
添加一下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $TTL 86400 #缓存时间.单位‘秒‘ @ IN SOA dns.test.com. root@test.com ( #区域、SOA记录、主域名服务、联系人 42 ; serial (d. adams) #序列号 3H ; refresh #每3小时重试 15M ; retry #隔15分钟重试 1W ; expiry #过期时间1个星期 1D ) ; minimum #最小的TTL时间为1天 @ IN NS dns.test.com. #主DNS服务器名称 @ IN dns1.test.com. #辅助DNS服务器名称 dns IN A 192.168.1.12 #主DNS服务器的IP dns1 IN A 192.168.1.4 #辅助DNS服务器的IP www IN A 192.168.1.3 #主机www的IP地址 www IN CNAME host1.test.com. #host1的别名记录 100 IN PTR host100.test.com. #host100.test.com的ip是192.168.1.100(反向查询) @ IN MX 5 mail.test.com. #test.com使用mail.test.com作为邮件服务(MX记录) |
注意:域名后面是需要加上“.”的,不要遗漏,否则出错。
这样,我们的本地区域文件就写好了,然后我们来看看这个区域需要理解的。
IN指的是intelnet类型,
SOA,NS,A,CNAME,MX,PTR是指记录的类型:
NS指的是DNS服务器
A指正向查询方式
CHAME指别名
MX指MX记录
PTR指反向查询
好了,这样所有的都出来了.详细的配置看rpm安装配置,
是一模一样的.
启动则为/usr/local/name/sbin/named
/usr/local/name/sbin/named -g则是前台运行,适合第一次启动,或者说直到你看到running…
每次错误都有提示,认真看提示解决.。
如果看懂那么就g.cn的在线翻译吧。
下图就是bind已经在运行了:

关于开机自动启动也很简单,
在/etc/rc.local文件里加多一行,
“/usr/local/named/sbin/named”
然后我们用客户机测试下,看看是不是成功了,不过别忘记了,客户机的DNS应该设置为我们DNS主机的IP地址哦。

这样,我们这一课又结束了哦。想要了解DNS,不是这样就可以了,要自己再去多点实践与查阅资料。
粤ICP备09088251号