之前把[BIND9管理员参考手册]粗略看了一下,对BIND这个服务有了进一步的认识。BIND这个服务说起来不算复杂,不过细节上的处理还是很讲究水平的。Google了一圈,没有找到比较系统、详细的安装配置文档。就自己简单的整理了这一篇关于BIND的文章。为了更加清楚的说明BIND这个服务,整个文章将全部用源码包安装的方式来完成。个人水平有限,望各位高手指正。
一、BIND简介
BIND是一款开放源码的DNS服务器软件,是Domain Name System (DNS) 协议的一个实现。Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain。它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。
BIND提供了DNS主要功能的开放实现包括: 域名服务器 (named)、DNS解析库函数、DNS服务器运行调试所用的工具。
BIND主要分为三个版本:V4、V8、V9。V9是如今使用最多最广的版本。目前最新的稳定版本是9.7.1,最新的开发版本是V10。
二、软件的相关资源。
官方网站:http://www.isc.org
源码软件包:http://www.isc.org/software/bind
配置文件样例:http://bind.com/?path=dns
三、软件的安装
1.安装
1 2 3 4 5 6 | wget http://ftp.isc.org/isc/bind9/9.7.0-P1/bind-9.7.0-P1.tar.gz //获取源码安装包 tar xfz bind-9.7.0-P1.tar.gz //解压安装包 cd bind-9.7.0-P1 //进入解压后生成的目录 ./configure --prefix=/usr/local/bind --enable-threads --without-openssl make //编译 make install //安装 |
configure针对机器作安装的检查和设置,大部分的工作是由机器自动完成的,但是用户可以通过一些参数来完成一定的设置。可通过./configure –help察看参数设置帮助,可根据自己需要增减参数。简单说下这里用了的几个参数的意思:
1 2 3 | --prefix=指定软件安装目录(默认为/usr/local/)。 --enable-threads 开启多线程处理能力 --without-openssl 由于是新装的系统,没装openssl。所以把openssl检查给屏掉了。一般不要屏哟(我是懒),屏掉就不支持DNSSEC了 |
四、软件的配置
默认情况下,安装过程是不会建立配置文件和一些默认的域名解析的。不过并不妨碍,可以从下载一些标准的配置文件示例,也可以使用本文所提供的样例文件。
默认情况下,安装的 deamon为/usr/local/bind/sbin/named
默认的主配置文件,/etc/named.conf(须手动建立)。
建立主配置文件named.conf(这里就先建一个最简单例子,以后在慢慢来扩充)
1、首先建立全局options
1 2 3 4 5 6 7 8 9 10 11 12 | cd /usr/local/bind/etc/ vi named.conf options { directory "/usr/local/bind/var"; //域名文件存放的绝对路径 pid-file "named.pid"; //如果bind启动,自动会在/usr/local/named/var目录生成一个named.pid文件,打开文件就是named进程的ID forwarders {8.8.8.8;}; //指定一个转发DNS,当本地域名服务器无法解析的域名,就会被转发至前向DNS进行解析。 dump-file "cache_dump.db"; //设置服务器缓存数据文件的路径(rndc dumpdb转储数据的文件) statistics-file "named_stats.txt"; //设置服务器统计信息文件的路径(rndc stats追加统计数据的文件) allow-query { any; }; //定义可使用这个DNS服务器的客户端,这里为任意主机都允许。 }; |
2、定义log部分
1 2 3 4 5 6 | logging { channel default_debug { file "named.run"; severity dynamic;}; }; |
这部分是日志的设置,上面是一个Bind预定义通道,写这部分是为了说明Bind的日志可以非常细化的处理。这部分详细定义还是很复杂的,自己去看看相关资料吧!
其中最主要的是file “named.run”; 这一句指定了日志文件的位置,要正常启动named,必须要保证这一文件是存在的,并且named进程对它有读写权限。
severity是指定记录消息的级别。在bind中主要有以下几个级别(按照严重性递减的顺序):critical、error、warning、notice、info、debug[level]、dynamic。定义了某个级别后,系统会记录包括该级别以及比该级别更严重的级别的所有消息。比如定义级别为error,则会记录critical和error两个级别的信息。一般情况下,我们记录到info级别就可以了。
3、定义根区域、本地域的正反解、自定义域的正反解
A、定义根区域
1 2 3 4 5 | zone "." IN { type hint; //根域名服务器 file "named.root"; //存放在/usr/local/bind/var目录,文件名为named.root }; |
B、定义本地域的正反解
1 2 3 4 5 6 7 8 9 10 11 12 13 | zone "localhost" IN { type master; //类型为主域名服务器 file "named.localhost"; //本地正向解析的区文件 allow-update {none;}; //不允许动态更新本区的数据 }; zone "0.0.127.in-addr.arpa" IN { type master; //类型为主域名服务器 file "named.127.0.0"; //本地反向解析的文件 allow-update {none;}; }; |
请问前辈,您的rndc.key是怎么产生的?
[回复]
easylife
Firefox 3.6.3
Windows 7回复:
六月 1st, 2010 at 21:04
@Li Gang, rndc-confgen -a, 一直没写[BIND9学习笔记(二)],这部分是打写在这里面的,争取最近写完。呵呵!
[回复]