1. BIND9 的安装与配置
1.1 bind简介
BIND (Berkeley Internet Name Domain)是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,包括
域名服务器 (named)
DNS解析库函数
DNS服务器运行调试所用的工具
是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的,
按照ISC的调查报告,BIND是世界上使用最多最广泛的域名服务系统。不论你的邮件服务器,WEB服务器或者其他的services如何的安全可靠,DNS的故障会给你带来用户根本无法访问这些服务。
BIND,也是我们常说的named,由于多数网络应用程序使用其功能,所以在很多BIND的弱点及时被发现。主要分为三个版本:
- v4
1998年多数UNIX捆绑的是BIND4,已经被多数厂商抛弃了,除了OpenBSD还在使用。OpenBSD核心人为BIND8过于复杂和不安全,所以继续使用BIND4。这样一来BIND8/9的很多优点都不包括在v4中。
- v8
就是如今使用最多最广的版本,其详细内容可以参阅 BIND 8+ 域名服务器安全增强
- v9
最新版本的BIND,全部重新写过,免费(但是由商业公司资助),也添加了许多新的功能(但是安全上也可能有更多的问题)。BIND9在2000年十月份推出,现在稳定版本是9.3.2。
2. 安装方式
目前有两种方式:源码安装和apt-get或者rpm安装。
2.1 源码安装
下载地址 http://www.isc.org/products/BIND
tar zxvf bind-9.2.6.tar.gz
包括以下子目录:bin(全部BIND二进制源代码,包括named),contrib(一些工具)
,doc(BIND的文档,包括资源手册),lib(BIND使用的库的源代码),make(makefile文件).
./configure
编译BIND,输入:
make all
安装BIND
#make install
2.2 apt-get
apt-get install bind9
2种方式笔者都使用了第二种方式简单很多,第二种方法会生成很多基础的配置文件,使用起来简单了很多
这里以第二种方法来介绍:安装完成后,配置如下:
ls /etc/bind/ -l
total 44
-rw-r--r-- 1 root root 237 Jan 16 2006 db.0
-rw-r--r-- 1 root root 271 Jan 16 2006 db.127
-rw-r--r-- 1 root root 237 Jan 16 2006 db.255
-rw-r--r-- 1 root root 353 Jan 16 2006 db.empty
-rw-r--r-- 1 root root 256 Jan 16 2006 db.local
-rw-r--r-- 1 root root 1507 Jan 16 2006 db.root
-rw-r--r-- 1 root bind 1611 Jan 16 2006 named.conf
-rw-r--r-- 1 root bind 165 Jan 16 2006 named.conf.local
-rw-r--r-- 1 root bind 672 Jan 16 2006 named.conf.options
-rw-r--r-- 1 root root 490 Feb 18 05:45 named.conf.default-zones
-rw-r----- 1 bind bind 77 Aug 4 08:41 rndc.key
-rw-r--r-- 1 root root 1317 Jan 16 2006 zones.rfc1918
配置文件说明:
named.conf Bind主配置文件
named.conf.options全局选项
db.root 根服务器指向文件, 由Internet NIC创建和维护, 无需修改, 但是需要定期更新
db.local localhost正向区文件,用于将名字localhost转换为本地回送IP地址 (127.0.0.1)
db.127 localhost反向区文件,用于将本地回送IP地址(127.0.0.1)转换为名字localhost
其中,主配置文件/etc/named.conf的配置语句
命令 用法
acl 定义IP地址的访问控制清单
control 定义ndc使用的控制通道
include 把其他文件包含到配置文件中
key 定义授权的安全密钥
logging 定义日志写什么,写到哪
opitons 定义全局配置选项和缺省值
server 定义远程服务器的特征
trunsted-keys 为服务器定义DNSSEC加密密钥
zone 定义一个区
默认情况下, 内容如下:
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
可见主配置文件主要是包含三个部分:
1、named.conf.options 一些配置选项
2、named.conf.default-zones 默认的本地规则,包含跟文件、正向区文件、反向区文件等
root@ubuntu:/etc/bind# cat named.conf.default-zones
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
-
- Named.conf.local 这个是用来用户定义的,我们在这里面添加域即可
测试域名:smart-clouds.cn
测试ip: 192.168.206.138 主域名服务器
在Named.conf.local中增加
zone "smart-clouds.cn"{
type master;
file "/etc/bind/db.smart-clouds.cn";
// allow-query-cache { any; };
allow-query { any; };
allow-update { any; };
// recursion yes;
};
zone "206.168.192.in-addr.arpa"{
type master;
file "/etc/bind/db.192.smart-clouds.cn";
};
增加db.smart-clouds.cn
root@ubuntu:/etc/bind# touch db.smart-clouds.cn
root@ubuntu:/etc/bind# cat db.smart-clouds.cn
;ND data file for local loopback interface
;
$TTL 604800
$ORIGIN smart-clouds.cn.
@ IN SOA smart-clouds.cn. root.smart-clouds.cn. (
2006080401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1
@ IN A 192.168.206.138
ns1 IN A 192.168.206.138
www IN A 192.168.206.138
root@ubuntu:/etc/bind# cat /etc/bind/db.192.smart-clouds.cn
$TTL 604800
@ IN SOA smart-clouds.cn. root.smart-clouds.cn. (
2006080401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS smart-clouds.cn.
138 IN PTR http://www.smart-clouds.cn.
138 IN PTR ns1.smart-clouds.cn.
内容含义参看http://hi.baidu.com/ubuntu2me/blog/item/235b94c9f84ea3107e3e6f06.html
http://www.cnblogs.com/cobbliu/archive/2013/03/19/2970311.html
这样一个简单的dns服务就已经实现
4、启动以及测试本地dns
root@ubuntu:/etc/bind# /etc/init.d/bind9 restart
查看启动日志文件
root@ubuntu:/etc/bind# tail /var/log/syslog
Mar 19 22:43:14 ubuntu named[61378]: managed-keys-zone: loaded serial 3
Mar 19 22:43:14 ubuntu named[61378]: zone 0.in-addr.arpa/IN: loaded serial 1
Mar 19 22:43:14 ubuntu named[61378]: zone 255.in-addr.arpa/IN: loaded serial 1
Mar 19 22:43:14 ubuntu named[61378]: zone 127.in-addr.arpa/IN: loaded serial 1
Mar 19 22:43:14 ubuntu named[61378]: zone localhost/IN: loaded serial 2
Mar 19 22:43:14 ubuntu named[61378]: zone smart-clouds.cn/IN: loaded serial 2006080401
Mar 19 22:43:14 ubuntu named[61378]: all zones loaded
Mar 19 22:43:14 ubuntu named[61378]: running
Mar 19 22:43:14 ubuntu named[61378]: zone smart-clouds.cn/IN: sending notifies (serial 2006080401)
启动异常信息都从该日志中查看
查看bind进程是否启动
root@ubuntu:/etc/bind# ps -aux|grep named
bind 61378 0.0 0.8 164688 12904 ? Ssl 22:43 0:00 /usr/sbin/named -u bind
root 61440 0.0 0.0 15940 916 pts/11 S+ 22:47 0:00 grep --color=auto named
遇到的问题
-
- rndc: connect failed: 127.0.0.1#953: connection
解决http://blog.csdn.net/lujisheng/article/details/4637204
-
-
出现文件不能生成
chown -R bind 某文件夹 如chown -R named /etc/bind/
-
修改/etc/resolv.conf文件 该文件用来设置采用dns服务器 修改为nameserver 127.0.0.1即采用本地dns服务
测试
正向
root@ubuntu:/etc/bind# host smart-clouds.cn
smart-clouds.cn has address 192.168.206.138
反向
root@ubuntu:/etc/bind# host 192.168.206.138
138.206.168.192.in-addr.arpa domain name pointer ns1.smart-clouds.cn.
本地测试完成
5.增加日志信息
参考 http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=212998&extra=page%3D1%26filter%3Dtypeid%26typeid%3D331%26digest%3D1%26typeid%3D331%26digest%3D1
说明日志配置信息统一放到named.conf.options
日志生成到哪取决于named.conf.options中的
directory "/var/cache/bind";的设置如果日志不能生成同前面提到的
chown -R bind
root@ubuntu:/etc/bind # c
19-Mar-2015 19:09:48.810 queries: client 127.0.0.1#50563 (smart.clouds.cn): query: smart.clouds.cn IN A + (127.0.0.1)
19-Mar-2015 19:11:01.011 queries: client 127.0.0.1#39147 (smart-clouds.cn): query: smart-clouds.cn IN A + (127.0.0.1)
- 公网dns服务器实现
需要申请公网的域名,并且将服务器的域名注册。
参考文献
http://hi.baidu.com/ubuntu2me/blog/item/235b94c9f84ea3107e3e6f06.html
http://www.cnblogs.com/cobbliu/archive/2013/03/19/2970311.html
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=212998&extra=page%3D1%26filter%3Dtypeid%26typeid%3D331%26digest%3D1%26typeid%3D331%26digest%3D1
http://blog.csdn.net/lujisheng/article/details/4637204