您的位置:首页 > 运维架构 > Linux

基于LINUX系统来构建DNS服务

2012-06-17 17:31 519 查看
我们在互联网上实现的访问大多都是基于IP的访问,而我们每一台主机又不可能记录全球所有其他主机的IP,我们需要一种可以让我们人类便于记忆的方法。这就用到了域名。比如:www.taobao.com;我们更多的是记忆淘宝的域名而不是淘宝所对应的IP,所以我们就需要一种服务来实现域名和IP的相互解析。这就是DNS也就域名解析服务诞生的初由。

DNS :域名解析服务;

从解析的方式上分为正向解析和反向解析。正向解析也就是从域名到IP的解析,反向解析就是从IP到域名的解析。

从服务的类型上分为主DNS服务和从DNS的服务。从DNS服务器主要是为了分担主DNS服务器的压力。比如说一个大型网站的访问量很大,当有很多的PC机要访问时,那么解析该网站的DNS服务器就可能不能及时的响应。这就造成用记在访问一个网站被“卡”很长时间,这显然是不合理的。所以要用到从DNS服务器来缓解主DNS服务器的压力。从DNS是解析数据完全是从主DNS的数据库中更新过来的。但大家要记住一点的是当主DNS服务器由于某些原因停止工作的话,那么从DNS服务器也就不再工作了;还有就是主DNS不能解析的地址从服务器也根本不能解析。

下面主要讲述的是本机利用回环接口实现的本地域名解析服务:

首先,在LINUX上实现域名解析服务的rpm包的名字是 bind包。进程服务是 named.服务端口是53. 在实现服务之前我们要确保我们已经安装了bind的rpm包。我这里演示的是安装bind97的包。至于怎样使用yum安装rpm包,我就不扯了,你懂得。完成的效果是这样的:





named服务的配置文件在 /etc/named.conf文件中。其中定义了域的类型各

对应的数据文件,整个配置过程中要注意分号的使用是很重要的,不然就会报错。

内容如下:

options {

#定义数据文件默认的路径;

directory "/var/named/"

};

#定义根域;(根域是装载后自动生成的,其中定义的是全球的13台根DNS服务器)

zone "." IN {

type hint;

file "named.ca";

};

下面的是自己定义的要解析的域;

#正向解析本机的名称(也可以不定义):

zone "localhost" IN {

type master;

file "localhost.zone";

};

#反向解析回环接口(也可以不定义):

zone "0.0.127.in-addr.arpa" IN {

type master;

file "127.0.0.zone";

};

#定义自己要正向解析的域名:

zone "xiaowei.com" IN {

type master;

file "xiaowei.zone";

};

#定义自己要反向解析的地址:以自己本机的ip实际情况而定;

zone "16.172.in-addr.arpa" IN {

type master;

file "172.16.zone";

};

修改文件的属性属组named 模式640

到此,定义/etc/named.conf文件已经完成,我们要创建上面我们用到的/var/named/目录中的文件。

named.ca文件是我们在安装bind的rpm包时自动生成的,记录了全球13台根服务器的IP。

然后创建localhost.zone ,如下:

#定义缓存时间

$TTL 123

# @是继承我们在/etc/named.conf文件中定义的域名 。每不个文件必须要有一个SOA记录,标识该域内的主DNS是谁。

@ IN SOA admin.localhost.(

# 日期(用于标识该数据的新旧度)

2012061701

#定义刷新时间(刷新是为了及时的更新数据,当我们在下面增加或删除条目时我们都要及时的刷新和同步)

1H

#定义重试时间 (当我们的请求没有被响应时我们要重试服务)

30M

#过期时间 (定义缓存的时间是1天)

1D

#否定时间 (在服务器的数据中没有要被解析的域时就给一明确的否定,持续1天)

1D

(继承上面的@) IN NS localhost.

(继承上面的@) IN A 127.0.0.1

创建完成以后我们切记要修改文件的属性:属组named 640模式

上面的步骤就定义完成了实现本地的DNS域名解析。我们也可可以使用dig命令来测试语法错误:

如:dig -t axfr 0.0.127.in-addr.arpa

再创建xiaowei.zone,类似于上面的localhost.zone文件。我们可以复制然后再进行修改:

$TTL 500

@ IN SOA xiaowei. admin.xiaowei.(

2012061701

1D

2H

2D

1D)

);

IN NS xiaowei.zone

@ IN A 172.16.121.1

到此,文件xiaowei.zone的文件已经定义完成,保存后我们也要修改它的属组为named ,640的模式。

最后是创建反向解析

$TTL 600

@ IN SOA xiawei. admin.xiaowei. (

2012061701

1D

7H

1D

1D )

IN NS xiaowei.

1.121 IN PTR xiaowei.

然后保存就可以了。之后要修改权限和属性。

这样就做成了基于本地的回环接口的一个域名解析服务。

然后我们用dig -t A 172.16.121.1测试.

这样我们就完成了一个基于正向解析和反向解析的主DNS服务器的定义。

下面我们来说明从服务器的定义:

在另一个IP的主机上定义从服务器:

比如说我们上在一个IP为172.16.111.1上为我们前面的xiaowei.com 的正向解析定义一个从服务器。那么我们也是先安装bind包,之后定义/etc/named.conf 的配置文件:下面就以作xiaowei.com这个域的从服务器为例:

zone "xiaowei.com" IN {

type slaves;

file "slaves/xiaowei.zone"; 这里必须说明的是必须在slaves目录下, 因该目录的属主属组都是named,不然别 的目录以named身份没有权限。

masters {172.16.121.1; } 这里可以定义多个master地址,因为一台从服务 器可以作为多台主DNS服务器的从服务器。

};

之后重启服务从服务器就会根据他所要同步的主DNS服务器的域的日期进行同步。

这样就定义了一台从DNS服务器。

下面我们来说明子域授权的问题 。

先说什么是子域授权:

这就好比是一个国家的管理机构一样:根DNS结点授权给一个区域内的某一台主机来完成DNS的解析来减轻根DNS的压力。

还以我们上面的例子为例:

子域授权只需我们在 /var/named/xiaowei.zone中添加一行就可以完成子域授权:

假如我们们在xiaowei.com下有一个子域tech.xaiowei.com

那么我们就可以在/var/named/xiaowei.com中添加一行来完成子域授权。

可以这样添加 :

xiaowei.com IN NS tech.xiaowei.com

tech.xiaowei.com IN A 172.16.111.1

这样就完成了子域授权。然后重新载入就可以生效了。当下有请求要解析 AA.tech.xiaowei.com 时,当请求给送到xiaowei.com时xiaowei.com这台根DNS服务器不会解析,会把它所授权的tech.xiaowei.com的IP地址发给请求主机,而请求主机会再向tech.xiaowei.com 发出域名解析的请求。而tech.xiaowei.com恰恰有该记录。那么就可以返回给请求主机他所要解析的请求的结果。

这就完成了子域授权。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux DNS dns服务