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