wget http://ftp.isc.org/isc/bind9/9.7.1/bind-9.7.1.tar.gz

tar zxvf bind-9.7.1.tar.gz

cd bind-9.7.1

./configure --prefix=/usr/local/named --enable-threads && make && make install

这时会报错,依赖openssl

yum install -y openssl openssl-devel

yum install -y openssl*

groupadd bind

useradd bind -g bind -d /usr/local/named -s /sbin/nologin


设置目录权限

cd /usr/local/named

chown -R bind:bind /usr/local/named

mkdir -pv /var/named

chown -R bind:bind /var/named/

chmod 700 /usr/local/named/etc/


生成named.root 文件(/var/named)

cd /var/named

dig > named.root

or

wget http://ftp.internic.net/domain/named.root

将生成的rndc.conf写入到named.conf文件中

cd /usr/local/named/etc/

以下1,2步骤解决生成配置文件慢的问题

安装完Bind后,执行rndc-confgen没反应,经过Google搜索是由于 
rndc-confgen 调用 /dev/random ,而 /dev/random 又通过 /proc/interrupts 产生随机数不足,导致
rndc-confgen 一直等待

rndc-confgen --help 可以指定 randomfile

1.
手动生成一个 randomfile 文件
echo "selbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselbooselboo" > test
/usr/local/named/sbin/rndc-confgen -r test 

2.
/usr/local/named/sbin/rndc-confgen -r /dev/urandom

3.

利用-r /dev/urandom产生足够的随机数,快速生成配置文件

/usr/local/named/sbin/rndc-confgen -r /dev/urandom >/usr/local/named/etc/rndc.conf

tail -10 rndc.conf | head -9 | sed s/#\ //g > /usr/local/named/etc/named.conf


bind路径与chroot

假设BIND所需的文件:

配置文件:/usr/local/named/etc/named.conf,设定zone file的目录/var/named 权限等;

zone file:记录主机名与IP对应

named.conf:这是BIND的主配置文件

/var/named:zone文件默认放置的地方

/var/run/named: named程序执行时默认放置pid-file在此


Cache-only 与 forwarding DNS

Cache-only服务器:仅有“.”这个zone file的简单DNS,没有自己的DNS服务器,只有缓存查询结果的功能。

Forwarding服务器:指定一台上层DNS服务器作为forwarding目标

如何设定cache-only与forwarding?

很简单,因为不需要设定正反解的zone文件,所以只需要设定一下named.conf配置文件即可。


named.conf文件

options{

    listen-on port 53 {any;};

    directory "/var/named";


    allow-query {any;};

    recursion yes;

    forward only;

    forwarders {114.114.114.114, 8.8.8.8;8.8.4.4;};

};


options:与服务器环境有关的参数

listen-on port 53 {any;};

默认是监听在127.0.0.1,只有本机可以对DNS服务进行查询,这里要改成any。

记得,因为可以监听多个接口,因此any后面得要加上分号。另外,这个参数如果忘记

写也没关系,因为默认是对整个主机系统的所有接口进行监听的。


directory "/var/named";

zone file 放置在哪个目录下。


allow-query { any; };

这个是针对客户端,到底谁可以对我的DNS服务提出查询请求,原本仅是针对localhost

开放而已,我们这里改成对所有的用户开放,不过,默认DNS就对所有用户放行,所以这个设定值也可以不用写。


forward only;

这个设定可以让你的DNS服务器进行forword,即使有,这个zone file的设定,也不会使用.的资料,

只会将查询权交给上层DNS服务器而已,是cache only DNS最常见的设定了。


forwarders {114.114.114.114, 8.8.8.8;8.8.4.4;};

既然有forward only,那么到底对那部上层DNS服务器进行

转发呢?那就是forwarders(不要忘记那个s)参数的重要

性了!由于担心上层DNS服务器也可能会挂掉,因此可以

设定多部上层DNS服务器,每一个forwardr服务器的IP都

需要有;来作为结尾。


启动named

/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf -u bind


tail -f /var/log/messages


netstat -antulp |grep :53

netstat -antulp |grep :953


tcpdump -K dst port 53



DNS详解

DNS服务器需要在域名提供商处注册才可以成为合法的DNS服务器

2.配置文件及目录的位置

3.named主要配置文件named.conf

4.正反解都要有自己zone文件,文件名由named.conf指定

5.当DNS查询时,若本身没有解析,则向root(.)或forwarders服务器查询

6.任何时候都要记得查看日志文件/var/log/messages


正解(resource record, RR)





dig -t soa google.com baidu.com taobao.com