我们在互联网上实现的访问大多都是基于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恰恰有该记录。那么就可以返回给请求主机他所要解析的请求的结果。
这就完成了子域授权。
转载于:https://blog.51cto.com/4104492/900946