DNS服务器搭建
DNS全名为Domain Name Server (域名系统),其目的就是为了提供域名和IP地址的解析服务
BIND服务相关软件包
DNS服务器类型:
缓存域名服务器:提供域名解析的缓存
主域名服务器:特定域所有信息的权威性信息源,对某个指定域,主域名服务器是唯一存在的,主域名服务器中保存了指定域的区域文件。
域名转发服务器:把所有域名请求转给一台dns服务器。
从域名服务器:
不进行特定域信息(区域文件)的权威设置,而是从该域的主域名服务器中获取相应的文件并进行保存。
bind-libs:提供实现域名解析功能的必备的库文件,系统默认安装
bind-utils:提供对DNS服务器的测试工具程序,系统默认安装
bind:BIND服务器软件包,默认没有被安装到系统中
bind-chroot:为了更安全设置,,使bind可以在一个chroot的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已.这样做的目的是为了提高安全性.因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升, 进入到系统的其他目录中.用于建立chroot目录及相关子目录
我们查看一下系统中的安装情况,没有的给装上:
[root@redhat3 ~]# rpm -qa|grep bind #bind是需要自行安装的,挂上光盘安装即可,其他的都是已经默认安装
bind-libs-9.3.6-4.P1.el5
bind-9.3.6-4.P1.el5
bind-utils-9.3.6-4.P1.el5
ypbind-1.19-12.el5
[root@redhat3 ~]# ll /etc|grep "named" #看到没,已经没有named.conf了,已经被named.caching-nameserver.conf和named.rfc1912.zones取代了,当然,这两个文件我们也不用,我们用chroot环境下的
-rw-r----- 1 root named 1230 2009-07-30 named.caching-nameserver.conf
-rw-r----- 1 root named 955 2009-07-30 named.rfc1912.zones
-rw-r----- 1 root named 113 07-23 12:37 rndc.key
[root@redhat3 ~]#
我们现在安装bind-chroot包
[root@redhat3 ~]# rpm -ivh /mnt/cdrom/Server/bind-chroot-9.3.6-4.P1.el5.i386.rpm
warning: /mnt/cdrom/Server/bind-chroot-9.3.6-4.P1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:bind-chroot ########################################### [100%]
[root@redhat3 etc]# ll
总计 16
-rw-r--r-- 1 root root 405 07-22 10:36 localtime
-rw-r----- 1 root named 1230 2009-07-30 named.caching-nameserver.conf
-rw-r----- 1 root named 955 2009-07-30 named.rfc1912.zones
-rw-r----- 1 root named 113 07-23 12:37 rndc.key
[root@redhat3 etc]# pwd
/var/named/chroot/etc
所有的bind配置文件都在/var/named/chroot/etc下了,我们开始配置他:
[root@redhat3 etc]# vi named.caching-nameserver.conf
options {
listen-on port 53 { any; };#此处修改为any
listen-on-v6 port 53 { ::1; };
directory "/var/named";//找区域文件的目录
dump-file "/var/named/data/cache_dump.db"; #用来设置域名缓存文件的保存位置
statistics-file "/var/named/data/named_stats.txt"; #用来设置域名缓存文件额保存位置和文件名
memstatistics-file "/var/named/data/named_mem_stats.txt"; #把一些解析的统计信息放在里面
// Those options should be used carefully because they disable port
// randomization
query-source port 53;
query-source-v6 port 53;
allow-query { any; };#此处修改为any
allow-query-cache { any; };#此处修改为any
forwarders { 8.8.8.8; }; //此行默认没有,如果内网使用此dns 服务器可以设置dns转发,这里一定是一个有效的 dns 服务器地址,则添加这两行 。
forward only;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };#此处修改为any
match-destinations { any; };#此处修改为any
recursion yes;
include "/etc/named.rfc1912.zones";
};
完毕,保存。
我们现在修改文件:named.rfc1912.zones
[root@redhat3 etc]# vi named.rfc1912.zones
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
//添加如下内容:
zone "staid.edu" IN { // staid.edu 我实验用的区域,正向解析区域
type master;
file "staid.edu.zone";
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.rev";
allow-update { none; };
};
完毕,保存
然后我们进入此目录:/var/named/chroot/var/named,执行如下操作:
注意:这两个配置文件名一定要跟named.rfc1912.zones 你定义的名称相同
[root@redhat3 named]# cp -p localdomain.zone staid.edu.zone
[root@redhat3 named]# cp -p named.local 0.168.192.zone
下面主要是编辑这两个文件了。
# vim 0.168.192.zone
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS staid.edu.
3 IN PTR dns.staid.edu. //添加反向解析记录
2 IN PTR www.staid.edu. //添加反向解析记录
2 IN PTR mail.staid.edu. //添加反向解析记录
//2 是指的 dns 服务器IP:192.168.0.2 的最后地址区域
完毕,保存,我们修改
[root@redhat3 named]# vi staid.edu.zone
$TTL 86400
@ IN SOA localhost root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS staid.edu. //添加域名服务器记录-NS记录(设置当前域的DNS服务器名称)
IN MX 5 mail //添加邮件交换记录-MX记录(设置mail.staid.edu主机作为邮件服务器)
dns IN A 192.168.0.3 //添加正向解析
www IN A 192.168.0.2 //添加正向解析
mail IN A 192.168.0.2 //添加正向解析
blog CNAME www //添加别名
完毕,保存,下面我们开始测试正确性
[root@redhat3 named]# named-checkzone staid.edu /var/named/chroot/var/named/staid.edu.zone
zone staid.edu/IN: loaded serial 42
OK
[root@redhat3 named]# service named restart
停止 named: [确定]
启动 named: [确定]
[root@redhat3 named]#
DNS全名为Domain Name Server (域名系统),其目的就是为了提供域名和IP地址的解析服务
BIND服务相关软件包
DNS服务器类型:
缓存域名服务器:提供域名解析的缓存
主域名服务器:特定域所有信息的权威性信息源,对某个指定域,主域名服务器是唯一存在的,主域名服务器中保存了指定域的区域文件。
域名转发服务器:把所有域名请求转给一台dns服务器。
从域名服务器:
不进行特定域信息(区域文件)的权威设置,而是从该域的主域名服务器中获取相应的文件并进行保存。
bind-libs:提供实现域名解析功能的必备的库文件,系统默认安装
bind-utils:提供对DNS服务器的测试工具程序,系统默认安装
bind:BIND服务器软件包,默认没有被安装到系统中
bind-chroot:为了更安全设置,,使bind可以在一个chroot的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已.这样做的目的是为了提高安全性.因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升, 进入到系统的其他目录中.用于建立chroot目录及相关子目录
我们查看一下系统中的安装情况,没有的给装上:
[root@redhat3 ~]# rpm -qa|grep bind #bind是需要自行安装的,挂上光盘安装即可,其他的都是已经默认安装
bind-libs-9.3.6-4.P1.el5
bind-9.3.6-4.P1.el5
bind-utils-9.3.6-4.P1.el5
ypbind-1.19-12.el5
[root@redhat3 ~]# ll /etc|grep "named" #看到没,已经没有named.conf了,已经被named.caching-nameserver.conf和named.rfc1912.zones取代了,当然,这两个文件我们也不用,我们用chroot环境下的
-rw-r----- 1 root named 1230 2009-07-30 named.caching-nameserver.conf
-rw-r----- 1 root named 955 2009-07-30 named.rfc1912.zones
-rw-r----- 1 root named 113 07-23 12:37 rndc.key
[root@redhat3 ~]#
我们现在安装bind-chroot包
[root@redhat3 ~]# rpm -ivh /mnt/cdrom/Server/bind-chroot-9.3.6-4.P1.el5.i386.rpm
warning: /mnt/cdrom/Server/bind-chroot-9.3.6-4.P1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:bind-chroot ########################################### [100%]
[root@redhat3 etc]# ll
总计 16
-rw-r--r-- 1 root root 405 07-22 10:36 localtime
-rw-r----- 1 root named 1230 2009-07-30 named.caching-nameserver.conf
-rw-r----- 1 root named 955 2009-07-30 named.rfc1912.zones
-rw-r----- 1 root named 113 07-23 12:37 rndc.key
[root@redhat3 etc]# pwd
/var/named/chroot/etc
所有的bind配置文件都在/var/named/chroot/etc下了,我们开始配置他:
[root@redhat3 etc]# vi named.caching-nameserver.conf
options {
listen-on port 53 { any; };#此处修改为any
listen-on-v6 port 53 { ::1; };
directory "/var/named";//找区域文件的目录
dump-file "/var/named/data/cache_dump.db"; #用来设置域名缓存文件的保存位置
statistics-file "/var/named/data/named_stats.txt"; #用来设置域名缓存文件额保存位置和文件名
memstatistics-file "/var/named/data/named_mem_stats.txt"; #把一些解析的统计信息放在里面
// Those options should be used carefully because they disable port
// randomization
query-source port 53;
query-source-v6 port 53;
allow-query { any; };#此处修改为any
allow-query-cache { any; };#此处修改为any
forwarders { 8.8.8.8; }; //此行默认没有,如果内网使用此dns 服务器可以设置dns转发,这里一定是一个有效的 dns 服务器地址,则添加这两行 。
forward only;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };#此处修改为any
match-destinations { any; };#此处修改为any
recursion yes;
include "/etc/named.rfc1912.zones";
};
完毕,保存。
我们现在修改文件:named.rfc1912.zones
[root@redhat3 etc]# vi named.rfc1912.zones
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
//添加如下内容:
zone "staid.edu" IN { // staid.edu 我实验用的区域,正向解析区域
type master;
file "staid.edu.zone";
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.rev";
allow-update { none; };
};
完毕,保存
然后我们进入此目录:/var/named/chroot/var/named,执行如下操作:
注意:这两个配置文件名一定要跟named.rfc1912.zones 你定义的名称相同
[root@redhat3 named]# cp -p localdomain.zone staid.edu.zone
[root@redhat3 named]# cp -p named.local 0.168.192.zone
下面主要是编辑这两个文件了。
# vim 0.168.192.zone
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS staid.edu.
3 IN PTR dns.staid.edu. //添加反向解析记录
2 IN PTR www.staid.edu. //添加反向解析记录
2 IN PTR mail.staid.edu. //添加反向解析记录
//2 是指的 dns 服务器IP:192.168.0.2 的最后地址区域
完毕,保存,我们修改
[root@redhat3 named]# vi staid.edu.zone
$TTL 86400
@ IN SOA localhost root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS staid.edu. //添加域名服务器记录-NS记录(设置当前域的DNS服务器名称)
IN MX 5 mail //添加邮件交换记录-MX记录(设置mail.staid.edu主机作为邮件服务器)
dns IN A 192.168.0.3 //添加正向解析
www IN A 192.168.0.2 //添加正向解析
mail IN A 192.168.0.2 //添加正向解析
blog CNAME www //添加别名
完毕,保存,下面我们开始测试正确性
[root@redhat3 named]# named-checkzone staid.edu /var/named/chroot/var/named/staid.edu.zone
zone staid.edu/IN: loaded serial 42
OK
[root@redhat3 named]# service named restart
停止 named: [确定]
启动 named: [确定]
[root@redhat3 named]#
我们可以在一个客户端机器上,把dns修改为192.168.0.2 然后访问一下sohu,没问题通过了。就此主DNS服务器设置告一段落
本文转自guoli0813 51CTO博客,原文链接:http://blog.51cto.com/guoli0813/357401,如需转载请自行联系原作者