企业DNS服务器搭建入门
dns简介
DNS(Domain Name System,域名系统),能使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串,通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
域名空间
DNS的分布式数据库是以域名为索引的,每个域名实际上就是一棵很大的逆向树中的路径,这棵逆向树称为域名空间(domain name space )。在树的顶端,有惟一的一个根,叫做“根(root)。同文件系统一样,DNS的树在每个分叉点可以有任意多个分支,这些分叉点称为“节点”(node)。树的深圳度不得超过127层(实际应用也不可能超过)。
域名
树中每个节点都有一个可以长达63个字符的文本标号(text label)(不含“.”)。空标号(长度为0)是为根保留的。树中任何一个节点的完整域名(domain name)都是从该节点到根的路径上所有节点标号的顺序连接。域名总是从节点向根(向上)的方向读。并用“.”来分隔路径上所出现的各个名字(文本标号)。
Bind项目
Bind(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,占有率达90%,20世纪80年代由柏克莱加州大学计算机系统研究小组的四个研究生一同编写了BIND的第一个版本,现由互联网系统协会(Internet Systems Consortium)负责开发与维护。
Bind搭建
环境准备
操作系统:CentOS6.4
服务器IP:
192.168.100.60 ns1.linuxservers.cn
192.168.100.61 ns2.linuxservers.cn
Bind安装
从官方网站下载
wget
解压
tar xzvf bind-9.9.5.tar.gz
安装
./configure --prefix=/usr/local/bind --disable-openssl-version-check
make;make install
bind配置
远程管理配置文件rndc.conf
/usr/local/bind/sbin/rndc-confgen > /usr/local/bind/etc/rndc.conf
主配置文件named.conf
实现基本DNS功能的named.conf文件可分为4大块:选项文本块,安全认证文本块,查询日志记录文本块,区域文本块。这种分类法仅仅是为了描述方便。
vim named.conf
(1)选项文本块
options {
directory "/data/named"; #数据文件与程序分开存储,即数据文件存储到/data/named
version "[unknown version]"; #隐藏bind的版本信息
allow-query-cache {any;};
pid-file "named.pid";
};
(2)安全认证文本块
key "rndc-key" {
algorithm hmac-md5;
secret "kJDNwui6Rr/39ODlLTOHSg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
(3)查询日志记录块
logging {
channel query_log {
file "query.log" versions 5 size 20m;
severity info;
print-time yes;
print-category yes;
};
category queries {
query_log;
};
};
注释:
file "query.log" versions 5 size 20m; 定义了查询日志的文件名称为query.log,每个日志文件大小为20MB,达到这个容量后,自动轮转日志。
(4)区文本块
zone "." IN {
type hint;
file "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 "linuxservers.cn" IN {
type master;
file "linuxservers.cn.zone";
allow-update { none; };
};
zone "yanfa.com" IN {
type master;
file "yanfa.com.zone";
allow-update { none; };
};
这四个区块,语法基本相同,type的值一共有5类,根域“.”人类型type为hint,它与后面几个稍有不同,File指定的四个区数据文件,应当被放在named.conf的选项块“directory “/data/named”;”中进行的。
最后将前面4个区块的配置合成,写入named.conf如下:
[root@master ~]# cat /usr/local/bind/etc/named.conf
options {
directory "/data/named"; #数据文件与程序分开存储,即数据文件存储到/data/named
version "[unknown version]";
allow-query-cache {any;};
pid-file "named.pid";
};
key "rndc-key" {
algorithm hmac-md5;
secret "kJDNwui6Rr/39ODlLTOHSg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
logging {
channel query_log {
file "query.log" versions 5 size 20m;
severity info;
print-time yes;
print-category yes;
};
category queries {
query_log;
};
};
zone "." IN {
type hint;
file "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 "linuxservers.cn" IN {
type master;
file "linuxservers.cn.zone";
allow-update { none; };
};
zone "yanfa.com" IN {
type master;
file "yanfa.com.zone";
allow-update { none; };
};
撰写区数据文件
前面在配置文件中定义了5个区,共指定了5个区数据文件,下面列出每个区数据文件的内容。
-
根域区数据文件named.root
可从ftp://ftp.rs.internic.net/domain/下载最新named.root文件
内容示例如下所示:
; 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.cache
; on server FTP.INTERNIC.NET
; -OR- RS.INTERNIC.NET
;
; last update: June 2, 2014
; related version of root zone: 2014060201
;
; 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
B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:84::B
;
; FORMERLY C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::C
;
; FORMERLY TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13
D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2D::D
;
; 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
I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FE::53
;
; 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
L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::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
-
区数据文件localhost.zone
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; fefresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1
-
区文件named.local
$TTL 86400
@ IN SOA localhost. root.localhost. (
2006121601 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS localhost.
1 IN PTR localhost
-
区数据文件linuxservers.cn.zone
$TTL 1D
@ IN SOA ns1.linuxservers.cn. root.ns1.linuxservers.cn. (
2009071966 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns1.linuxservers.cn.
;A recorder
@ IN A 192.168.100.60
ns1 IN A 192.168.100.60
www IN A 192.168.100.60
blog IN A 192.168.100.61
配置文件介绍
第1行: 设定缓存时间(TTL time-to-live)为1天,默认单位是秒,可选用的单位是周(W),天(D),小时(H),分钟(M)等。如果设定为0表示不缓存。
第2~8行: 权威服务器设定。
@代表域linuxservers.cn
IN SOA代表internet的资源类型是SOA.在区数据文件中,还可能有NS,MX,A,PRT,CNAME,TXT等其他资源类型。
Ns1.linuxservers.cn。充当授权服务器的主机,名为ns1.linuxservers.cn。这个名称不能随意指定,它必须与你在域名注册商设置的相一致时,才能在互联网中提供正常的DNS服务。
第3行是数字形式的序列号,主要用它来决定是否同步主从DNS的数据,每次更新区数据文件时,都应当记得修改这个数值。
第4行设置从DNS每隔3小时对比检查一次主DNS服务器的序列号。
第5行设置从DNS请求主DNS失效后,重试时间为15分钟。
第6行设定主DNS失效时,从DNS可对外提供域名服务的有效期为1周。
第7行设定否定TTL缓存时间为1天。
第8行:设置1个NS资源记录,也就是说我们有1个DNS服务器可用
第11~14行: 设定4个A记录。分别是linuxservers.cn,ns1.linuxservers.cn,,blog.linuxservers.cn
区数据文件的书写注意几点如下:
-
注释以“;”开头,而且在行中也可以使用注释,如第区数据文件linuxservers.cn.zone第10行
-
第一个字段前面不能有空白,否则运行时出错。
-
如果第一个字段空缺,代表的是默认值@。
-
区文件解析时不区分大小写,如“ns1 in a 219.232.254.157”。
启动bind服务
/usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf
检查bind是否启动
ps -ef | grep named
root 20117 1 0 15:38 ? 00:00:00 /usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf