先从 http://www.isc.org/products/BIND/
下载bind,我下载的是bind-9.3.1rc1.tar.gz
我下载的文件放在/root目录下
进入目录解压缩
[root@linux root]#tar xfz bind-9.3.1rc1.tar.gz
进如刚解压出来的目录
[root@linux root]# cd bind-9.3.1rc1
编译配置
[root@linux bind-9.3.1rc1]#./configure --prefix=/usr/local/named --enable-threads #--enable-threads开启多线程处理能力
[root@linux bind-9.3.1rc1]#make
[root@linux bind-9.3.1rc1]#make install
进入/usr/local/named 建立etc目录
[root@linux bind-9.3.1rc1]#cd /usr/local/named
[root@linux named]# mkdir etc
生成rndc控制命令的key文件
[root@linux named]# sbin/rndc-confgen >; etc/rndc.conf
从rndc.conf文件中提取named.conf用的key
root@linux named]# cd etc
[root@linux etc]# tail -10 rndc.conf | head -9 | sed s/#\ //g >; named.conf
自动在/usr/local/named/etc 生成named,conf文件
建立区文件目录
[root@linux etc]# mkdir /var/named
进入/var/named
[root@linux etc]# cd /var/named
建立localhost.zone文件
[root@linux named]#vi localhost.zone
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1
建立named.local文件
[root@linux named]#vi named.local
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
dig命令直接生成named.root文件
[root@linux named]#dig >; named.root
建立test.com域名正向解析文件
[root@linux named]#vi test.zone
$ttl 1D
@ IN SOA test.com. root.test.com. (
1053891162
3H
15M
1W
1D )
IN NS test.com.
IN MX 5 test.com.
www IN A 220.202.19.82
建立test.com域名反向解析文件
[root@linux named]#vi test.local
$TTL 86400
@ IN SOA test.com. root.test.com.(
20031001;
7200;
3600;
43200;
86400);
@ IN NS test.com.
82 IN PTR dns.test.com.
配置named.conf加如以下代码
[root@linux etc]# vi named.conf
options {
directory "/var/named"; #named区文件目录
pid-file "named.pid"; #进程id文件名
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
type hint;
file "named.root";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "test.com" IN {
type master;
file "test.zone";
allow-update { none; };
};
zone "19.202.220.in-addr.arpa" IN {
type master;
file "test.local";
allow-update { none; };
};
现在配置完了可以启动BIND了
/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf &
只要显示
runing表示运行成功
测试dns
[root@linux etc]# host 220202.19.82
89.19.202.220.in-addr.arpa domain name pointer dns.test.com.
如上显示表示dns反向解析正常
[root@linux etc]# ping www.test.com
PING www.test.com (220.202.19.82) 56(84) bytes of data.
如上显示表示正向解析正常
dns配置完成。
二:
首先说第一个文件:/etc/sysconfig/named
这个配置文件的最后一行决定了named (即bind)的其他配置文件的路径及目录。
默认是 /var/named
第二个文件是:/var/named/chroot/etc/named.conf
这个文件就是 bind 的主配置文件,有可能band装好后会没有,一会需要手工新建。
第三个文件是:/var/named/chroot/etc/rndc.key
该文件保存的是 MD5 的加密密钥,用于给管理员控制管理DNS服务器以及数据同步加密等等...
相当重要,要使用其里头的信息创建 named.conf
第四个文件是:*.zone
啥意思? 这个是指针文件,用于存放域名的DNS记录,例如A记录,MX记录,CNAME 记录等。它的位置由 named.conf 里边的参数决定。
好,下边就开始说各个配置文件的使用以及创建。
第一个:/etc/sysconfig/named 如果你没有特殊爱好,留着默认好了。
第二个:/var/named/chroot/etc/named.conf 需要手工创建。
首先是要打开第三个文件:/var/named/chroot/etc/rndc.key
把里头的所有内容复制,然后在相同目录下创建 named.conf,并把复制的内容粘贴进去。
然后在插入配置内容,named.conf 完成后例子如下:
路径:/var/named/chroot/etc/named.conf
##############################
key "rndckey" {
algorithm hmac-md5;
secret "m3pD9wpq7QsO7l9ojGdFxxxxxxxxxxxxxxxxxxxq3eNz2tSU97l5uYD"; #
};
options {
directory "."; # DNS指针配置的路径相对于 /var/named/chroot
};
zone "gznow.cn" IN { # DNS 指针的域名
type master;
file "master/gznow.zone"; # 指针路径
allow-update{none;};
};
##############################
我们这里配的是最基本的 bind 服务,其他复杂的功能例如反向解析,分IP段解析等之类的功能就日后再说。
按照上边的配置把 named.conf 创建后,可以着手创建 *.zone 指针
这里以 gznow.zone 为例
按照 named.conf 中指针路径的配置
在 /etc/named/chroot 下创建文件夹 master
并新建指针配置文件 gznow.zone
路径如:/var/named/chroot/master/gznow.zone
内容:
##############################
$TTL 3600 ;
@ IN SOA ns1.gznow.cn. admin.gznow.cn. (
2003030400 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.gznow.cn.
IN MX 5 mail.gznow.cn.
ns1 IN A 219.136.252.253
ns2 IN A 219.136.252.253
@ IN A 219.136.252.253
* IN A 219.136.252.253
www IN A 219.136.252.253
www IN A 203.114.253.73
mail IN CNAME s1.someqone.com.
img IN CNAME phlinux.someqone.com.
##############################
第1行是一个TTL设定,定义区域数据文件里面的各项记录的默认TTL值为3600s
缺少此行不影响使用,但是会出现警告信息。
第2行是一个SOA记录的设定,"@"代表相应的域名,也就是在named.conf中设定的zone
如在这里表示gznow.cn,IN表示后面的数据使用的是Internet标准。
SOA的全称是"Start Of Authority",表示目前区域授权开始。
每一个区域数据文件只能有一个SOA,不能重复,而且必须是所负责的zone中第一个"记录"。
在SOA后面分别指定了这个区域的授权主机名称和管理者的信箱( admin.gznow.cn. )
注意 授权主机名和管理员信箱后面都要有一个".",而且授权主机名称必须能够在DNS设置中找到一个A记录(下面会讲到)。由于"@"在区域数据文件中有其他含义,因此管理员信箱邮件地址中用"."代替"@"符号。
接下来包含在括弧中的5组数字是作为与Slave服务器同步信息而设置的,含义如下。
Serial:表示配置文件的修改版本,格式是年月日加上修改的次数
每次修改这个配置文件时都应该修改这个数字
因为Slave DNS进行信息同步时,会比较这个数值。
如果这个数值比自身的数值大,就进行更新,否则忽略更新。
注意 这个设置很重要,如果在修改区域数据文件后,没有更新该值,那么所做的更改就不会更新到网上的其他DNS服务器。
refresh:用来设定Slave DNS与Master DNS进行同步的间隔时间。
retry:设定Slave DNS在更新失败后,再进行重试的间隔时间。
expiry:设定Slave DNS在与Master DNS同步失败后,多长时间清除对应的记录。
Minimum:这是默认的最小TTL值,如果在前面没有指定TTL值,就以这个为基准。
以上的数字都是以s(秒)为单位的,但也可以用H(小时)、D(天)、W(星期)来作单位。
第8-14行,是对域名解析的具体设置,第1列表示不同的主机域名,但是省略了后面的域信息。
例如"www"其实是www.gznow.cn,"mail"是指mail.gznow.cn。
其他具有相同的含义。"IN"后面的指令含义说明如下。
NS:用来定义这个主机是个域名服务器。
MX:定义了一个邮件交换器。
A指针:定义了一个A记录,即域名到IP的记录。
CNAME:定义了域名的别名。
至此,如果你服务器上开启了 iptables ,记得把 udp 53 端口打开。
vim /etc/sysconfig/iptables 加入以下这行:
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
然后启动 bind :service bind start 没有报错即成功!