您的位置:首页 > 其它

DNS浅析-Bind软件的使用及搭建一个简单的DNS缓存服务器

2012-10-21 14:40 766 查看
引入DNS软件:
Bind:Berkey Information Name Domain 对数据库的支持不太好,不支持多线程
PowerDNS 性能强大 速 度块

Bind软件的配置使用

yum list all bind*

为了学习方便,在此配置使用中,我们使用Bind97
配置软件的简介:bind97.i386 (必安装) 是服务器端包,此包如果不装DNS服务器的话,一般是不安装的。
bind97-chroot.i386 chroot:切换根目录 为什么要在bind运行的时候切换根目录呢?这是为了系统安全考虑的。
bind97-libs 必安装
bind97-utils bind97的工具包 必安装

为了防止以后软件使用冲突,先去卸载老的bind包,bind-libs和bind-utils
rpm -e bind-libs bind-utils 卸载包
yum install bind97-libs bind97-utils -y 安装新版本的bind包
yum install bind97 安装服务器端安装包

Bind安装完成后生成的三个客户端工具:dig, host, nslookup

dig -t A www1.example.com @192.168.0.254 正向查询www1.example.com的IP地址
dig -x PTR 192.168.0.101 @192.168.0.254 反向查询192.168.0.101的主机名
dig -t NS example.com @192.168.0.254 查看www1.example.com的域名服务器
dig -t SOA example.com @192.168.0.254
dig -t MX example.com @192.168.0.254

vim /etc/resolv.conf中定义DNS服务器地址
host的用法:
host -t A wwwl.example.com 查看IP地址
host -t PTR 192.168.0.101 查看主机名
...
nslookup的用法
nslookup命令,windows和linux都支持。
nslookup
server DNS_ADDR
set type-A 查看主机的IP地址
q=PTR 查看主机名
q=MX 邮件服务器

Bind97服务器端安装后生成的主要文件:
配置文件:/etc/named
/etc/named.conf 主配置文件,很关键的
/etc/rndc.conf
/etc/rndc.key
rndc:Remote Name Domain Controller 远程名称服务控制器,即为远程登陆管理DNS服务器Bind的客户端工具。
涉及到安全性,并不是所有的rndc客户端都可以登陆DNS服务器上进行管理的,要是登陆的话是需要提供key的,双方是一对密钥,只要当密钥匹配时,才能发起控制命令。而且rndc默认情况下为了安全起见,在安装上去后只工作在TCP/127.0.0.1上的953端口上

bind:服务器端运行的执行程序就是/usr/sbin/named

/usr/sbin/named-checkconf 检查主配置文件的语法正确性
/usr/sbin/named-checkzone 检查区域文件中是不是有语法错误 这两个很常用

主配置文件:/etc/named.conf 由于主配置文件至关重要,因此它的权限是定义:(640, owner:root, group:named)
Bind的工作目录:/var/named 区域数据文件存储路径
默认情况下,我们用rpm包安装的Bind,他所要去找自己的区域数据路径的时候都到这个文件中寻找
区域文件:/etc/named.xxx.zones

DNS服务器的角色:
主DNS
辅DNS
缓存DNS:应该有:
根区域:标明根服务器在什么位置
本地正向区域:localhost --> 127.0.0.1
本地反向区域:127.0.0.1--> localhost

缓存DNS:不为任何区域提供解析,但是可以将用户的请求转发到其他主机上,并将结果先缓存到本地,也就意味着任何客户端向我们发起查询请求的时候,我们要向根转发,因此我们需要一个根区域,标明根服务器在什么地方。

现在详细介绍一下我们的主配置文件都包含神马东东:
主配置文件:/etc/named.conf
这个主配置文件主要有两段组成:
1.全局选项段 #全局选项段只有一个
options {
listen-on port 53 { 0.0.0.0 }; #表监听所有端口
// listen-on-v6 port 53 { ::1: }; #在conf 文件中注释采用C风格“//” “/*...*/
directory "/var/named"; #用于定义工作目录的,这是最重要的一项,
dump-file "/var/named/data/cache_dump.db"; #用来做转储的存放位置
statistics-file "/var/named/data/named_stats.txt"; #统计数据的存放位置
memstatistcs-file "/var/named/data/named_men_stats.txt"; #内存统计的存放位置
allow-query [ localhost ]; #允许谁查询
};
2.区域声明端: #区域声明段可以有多个
zone "zone_NAME" IN {
type 区域类型 ; #区域类型
file "xxx.zone";
};
区域类型:
master 主区域类型
slave 从区域类型
hint 根提示区域
forward 转发区域

反向区域的区域名称:都是以这个域内所有主机的IP地址的网络地址(而且还是反过来写)
eg:172.16.100.1-->16.172.in-addr.arpa

反向区域中,PTR记录的”name"是IP地址剩余的部分反过来写,即所谓的主机地址

实验:定制一个适合自身使用的简单DNS缓存服务器:
实验平台:用 cat /etc/issue查看实验平台版本
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
内核版本:2.6.18-308.el5
1. mv /etc/named.conf /etc/named.conf.origin
vim /etc/named.conf

options {
directory "/var/named";
};
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";
};

说明:由于DNS服务的安全性至关重要,其他用户没有任何的权限来查看读写named.conf的配置文件,因此我们要修改相应的权限:
chmod 640 /etc/named.conf #改变其他用户的权限
chown :named /etc/named.conf #改变其属组
2.建立正向和反向区域数据文件 #区域数据文件里面都是资源记录和宏定义
由于我们使用的是相对路径,因此我们在/var目录下建立即可
cd /var
vim localhost.zone #建立正向区域数据文件

$TTL 86400
$ORIGIN nagedu.com.   定义了我们这个区域的名称附加后缀是什么
#在区域文件中,只要想引用当前区域的名字,我们可以用@来表示,当然你也可以直接写出来
#在区域文件中,第一条资源记录必须是SOA类型。
@           IN          SOA         localhost.          admin.localhost. (
2012102101
1H
5M
7D
1D )
#第二条记录通常都是NS记录,即当前域的域名服务器
@           IN          NS          localhost.
localhost.  IN          A           127.0.0.1
#保存

vim 127.0.0.zone #建立反向区域数据文件

@           IN          SOA         localhost.          admin.localhost. (
2012102101
1H
5M
7D
1D )
IN          NS          localhost.
1           IN          PTR         localhost.
#保存退出

修改两个文件的权限
chmod 640 127.0.0.zone localhost.zone
chown :named 127.0.0.zone localhost.zone
检查配置文件语法和区域文件有无异常:
1.检查配置文件的语法: named-checconf
2.检查区域文件:named-checkzone 要先指定区域,再指定区域文件是什么。
named-checkzone "localhost" /var/named/localhost.zone
named-checkzone "0.0.127.in-addr-arpa" /var/named/127.0.0.zone
3.当上述都确保没有问题后,重启服务
service named start
4.启动后观察端口是否启用:netstat -tunlp | grep 53

注释:我在重启服务后出现了这样的情况:





其解决方案是:





这个原理我还不太清楚,稍后我会补加上来。
本文出自 “MGnuLinux” 博客,请务必保留此出处http://inspriion.blog.51cto.com/3283848/1033017
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: