2011年(42)
分类: LINUX
2011-08-17 23:11:05
在Linux中,域名服务(DNS)是Berkeley Internet Name Domain——BIND软件实现的。BIND是一个客户/服务系统,它的客户方面称为转换程序(resolver),它产生域名信息的查询,将这类信息发送给服务器,DNS软件回答转换程序的查询。BIND的服务方面是一个称为named的守护进程。
与BIND相关的软件包有:
bind-libs
bind-utils
这俩个包默认是安装过的,一个是提供一些BIND软件各外围工具和服务器程序所依赖的库文件
utils是bind客户端的命令行程序。
bind 服务器包 提供DNS Server的
bind-chroot不要装这个东东 很诡异!
bind-devel 开发包
bind-libbind-devel开发包
bind-sdb 将数据放在数据库中而非文本文件中这是一个驱动包
我们这里需要装的就一个包bind,大家也可以直接到isc下载源码包编译安装过程也十分简单
这里我们使用rpm包来安装:
# yum install bind 即可
下面看下bind相关的几个文件:
配置文件
/etc/named.conf(这个文件比较诡异吧,DNS服务器软件叫bind,配置文件叫named..)
这个是主配置文件
/etc/rndc.conf
/etc/rndc.key
这两个文件是远程辅助软件rndc的配置其实是一个。
数据文件存放位置:
/var/named目录下:这里面文件的名字只要与主配置文件中zone中定义的名字相同即可,这就是前面所说的区域是个物理性概念正是如此,实际上区域就是个数据文件!
如果在互联网上应用必不可少的一个文件 named.ca(名字随便取只要跟主配置文件相同即可) 根节点的位置文件
简单的说下/etc/named.conf的配置:
这个文件中最重要的几段:
1、全局选项段关键字options引导
options {
Statement;
Statement;
};
此配置文件的语法要求十分严格,首先options与第一个"{"之间必须有空格,否则为语法错误
在{}之间的语句必须以分号结尾,否则为语法错误,最后“}”之后也应以分号结尾。
2、区域zone关键字引导写法如下
zone "a.org" IN {
};
可以写多条
主要有这俩类组成
一个最基本的服务器配置文件至少需要3个区域:根、locahost、locahost反向解析区域
zone "." IN {
};
zone "locahost" IN {
};
zone "0.0.127.in-addr.arpa" {
};
里面需要定义的字段也很简单就需要俩个
type # 类型
file " " # 对应的数据文件
接下来将介绍怎么配置纯缓存服务器,主——辅助服务器以及怎么给子域DNS服务器授权
首先介绍下named.conf文件中使用的各种配置语句
选项 |
说明 |
Directory |
指定DNS文件所在的目录。您可以重复此选项以指定几个不同的目录。可以给出这些目录相关的文件路径名 |
Master |
以一个域名和一个文件名为参数。此选项声明named对指定的域具有控制权,并使named从指定的区域加载信息 |
Hint |
为named建立高速缓存信息。以一个域名和一个文件名为参数。域名通常用“.”指定。指定的文件包括一组称为服务器提示的记录,这些记录列出了根域名服务器的信息 |
Forwarders |
以一个域名服务器的列表作为参数。告诉本地域名服务器:如果它不能从它的本地信息中解析出地址,那么就与该列表中的服务器联系 |
Slave |
把本地域名服务器变成一个从属服务器。如果给出了此选项,那么本地服务器就试着通过递归查询来解析DNS名字。它只把请求传递给forwarders选项行列出的服务器中的一个 |
简单的说里面这些就是定义了域的类型:
hint 提示域 即根域
master 主域
slave 辅助域
forwarder 转发域
纯缓存服务器配置:
建立一个最基本的主配置文件如下:
options {
directory "/var/named";
};
#注:options里面可用的选项很多,可以用man named找到 options这一段去看下。
zone "." IN {
type hint;
fike "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
建立3个数据文件:named.ca localhost.zone named.local
named.ca这个文件基本上手写的话比较困难如果你使用的机器能连上互联网我们可以用以下命令来创建这个文件:
# dig -t NS . @a.root-servers.net > /var/named/named.ca
建立另外俩个文件
这俩个是区域文件里面只有两种数据:
宏定义 如:$TTL 86400
解析记录 name [ttl] IN RECORD_TYPE value
此类文件的第一条记录只能为类型为SOA的记录,对于一个数据文件来讲只能有一个SOA
# vim localhost.zone
@ 600 IN SOA localhost. admin.localhost. (
2011081601
1H
10M
7D
1D )
IN NS localhost.
localhost. IN A 127.0.0.1
@就代表主配置文件中定义的字段这里就是localhost.
SOA后面的5个值的意义分别是:
序列号 通常是10位可以用日期来表示,作用:主服务器数据改变时此值要加1,辅助服务器来同步数据的时候如果发现这个值发生变化就会同步更新的数据。因此我们可以将其理解为数据的版本号或者序列号;
刷新时间 同步数据的时间间隔,辅助服务器来同步数据的时间间隔;
尝试再次同步数据的时间间隔 即当辅助服务器同步数据失败后会间隔多长时间再尝试同步;
过期时间 同步数据失败后,再尝试这么长时间如果还不能探测到主DNS服务器,辅助服务器将失效,就是我前面说的殉情或自杀时间;
否定回答的有效期限 即权威域名服务器在给出否定回答后(即不存在此域名)客户端若再继续发出相同的解析请求,服务器会在这么长时间内拒绝响应。
说的应该够通俗易懂了吧~!
反向区域文件
# vim name.local
@ 600 IN SOA localhost. admin.localhost. (
2011081601
1H
10M
7D
1D )
IN NS localhost.
1 IN PTR localhost.
是不是跟正向区域文件很像呢?!好了这3个文件建好了!
# chown -R :named localhost.zone named.*
将这3个文件的属组改为named
一个缓存名称服务器就做好了!
可以使用命令named-checkconf 检查主配置文件的语法错误;
使用命令 named-checkzone检查区域文件的语法错误(注意只是语法错误而非逻辑错误)
用法示例:named-checkzone "localhost" /var/named/localhost.zone
跟其他可以被service调用的命令一样能使用
service named start/stop/restart等命令这就不用解释了吧!
可以使用dig命令来做测试了!
如:# dig -t A 大家可以试试!就不贴图了!应该会看见百度有个CNAME很有意思!
下面介绍主服务器和辅助服务器器的配置
相关的基本知识已经说的差不多了下面仅做操作!
主配置文件named.conf文件:
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "vbrew.com"{
type master;
file "named.hosts";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "72.191.in-addr.arpa"{
type master;
file "named.rev";
};
下面的named.conf文件可以将vale配置成为vbrew.com域的辅助服务器:
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "vbrew.com"{
type slave;
file "named.hosts";
masters { 191.72.1.3; };
};
zone "72.191.in-addr.arpa"{
type slave;
file "named.rev";
masters {191.72.1.3;};
};
同样他们各自都至少需要
named.ca
named.local
反向域文件named.rev
named.hosts文件
这样几个文件,然而上一篇已经说过辅助服务器的所有数据信息都是从主服务器哪里同步过去的因此我们只要配置好主服务器以及辅助服务器与之的关系即可!
name.ca这个文件依然用上面的方法得到。
named.local文件
;
; /var/named/named.local Reverse mapping of 127.0.0
; Origin is 0.0.127.in-addr.arpa.
;
@ IN SOA vlager.vbrew.com. (
joe.vbrew.com.
1 ; serial
360000 ; refresh: 100 hrs
3600 ; retry: one hour
3600000 ; expire: 42 days
360000 ; minimum: 100 hrs
)
IN NS vlager.vbrew.com.
1 IN PTR localhost.
注:;后面的都是注释部分。
反向域文件named.rev
;
; /var/named/named.rev Reverse mapping of our IP addresses
; Origin is 72.191.in-addr.arpa.
;
@ IN SOA vlager.vbrew.com. (
joe.vbrew.com.
16 ; serial
86400 ; refresh: once per day
3600 ; retry: one hour
3600000 ; expire: 42 days
604800 ; minimum: 1 week
)
IN NS vlager.vbrew.com.
; brewery
1.1 IN PTR vlager.vbrew.com.
2.1 IN PTR vstout.vbrew.com.
3.1 IN PTR vale.vbrew.com.
; winery
1.2 IN PTR vlager-if1.vbrew.com.
2.2 IN PTR vbardolino.vbrew.com.
3.2 IN PTR vchianti.vbrew.com.
4.2 IN PTR vbeaujolais.vbrew.com.
named.hosts文件
;
; /var/named/named.hosts Local hosts at the brewery
; Origin is vbrew.com
;
@ IN SOA vlager.vbrew.com. (
janet.vbrew.com.
16 ; serial
86400 ; refresh: once per day
3600 ; retry: one hour
3600000 ; expire: 42 days
604800 ; minimum: 1 week
)
IN NS vlager.vbrew.com.
;
; local mail is distributed on vlager
IN MX 10 vlager
;
; loopback address
localhost. IN A 127.0.0.1
; brewery Ethernet
vlager IN A 191.72.1.1
vlager-if1 IN CNAME vlager
; vlager is also news server
news IN CNAME vlager
vstout IN A 191.72.1.2
vale IN A 191.72.1.3
; winery Ethernet
vlager-if2 IN A 191.72.2.1
vbardolino IN A 191.72.2.2
vchianti IN A 191.72.2.3
vbeaujolais IN A 191.72.2.4
这样主辅助DNS服务器就配置好了!可以做测试了!里面的IP地址或者域名都可以随便取做测试用的无所谓存在与否!只要自己定义对了,就能测试到!还有通过以上的配置你只要能连上网就能当DNS服务器用了。
分号后面的都是注释部分!
前面已经说过我们在申请到一个域名后可以划分子域,下面说下怎么给子域授权(只对正向授权做说明),其实这个配置非常简单。子域授权需要用到个特别的记录类型,glue records具体咋么做呢?假设tech.a.org. 是 a.org.的一个子域,那么我们只需要在主和辅助DNS服务器里分别添加如下两条记录即可:
tech.a.org. IN NS ns1.tech.a.org.
ns1.tech.a.org. IN A 192.168.0.179
tech.a.org. IN NS ns2.tech.a.org.
ns2.tech.a.org. IN A 192.168.0.57
具体做法在正向解析域的数据文件添加以上两条然后配置子域服务器,这个子域服务器实际上就是个主DNS服务器,上面已经介绍过主DNS服务器的做法了所以就不详细解释了!同样是需要建立主配置文件 /etc/named.conf 几个数据文件,named.local local.host name.ca tech.a.org.zone 192.168.zone 自己建立下试试吧!
还有个视图view的实现,以及很多其他比较复杂的配置现在还不是很熟悉,以后再做补充!