Bind 是Berkeley Internet Name Domain Service的简写,它是一款实现DNS服务器的开放源码软件。Bind原本是美国 DARPA资助伯克里大学(Berkeley)开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS服务器软件,目前 Internet上绝大多数的DNS服务器有都是用Bind来架设的。
DNS服务介绍:
后台进程:named
脚本:/etc/rc.d/init.d/named
使用端口:53(tcp,udp)
所需RPM包:bind-9.3.3-10.el5
相关RPM包:bind-chroot
caching-nameserver
配置文件:/var/named/chroot/etc/named.conf
相关路径:/var/named/
1990 年以后,bind-chroot增加了bind服务器的安全性,早期Linux服务都是以root权限启动和运行的,随着技术的发展,各种服务变得越来越 复杂,导致BUG和漏洞越来越多。黑客利用服务的漏洞入侵系统,能获得root级别的权限,从而控制整个系统。
为了减缓这种攻击所带来的负面影响,现在服务器软件通常设计为以root权限启动,然后服务器进程自行放弃root,再以某个低权限的系统账号来运行进程。这种方式的好处在于该服务被攻击者利用漏洞入侵时,由于进程权限很低,攻击者得到的访问权限又是基于这个较低权限。
bind的主配置文件/etc/named.conf ,我们先安装bind服务器
bind-9.3.3-10.el5.i386.rpm
bind-libbind-devel-9.3.3-10.el5.i386.rpm
bind-sdb-9.3.3-10.el5.i386.rpm
bind-devel-9.3.3-10.el5.i386.rpm
caching-nameserver-9.3.3-10.el5.i386.rpm
bind-chroot-9.3.3-10.el5.i386.rpm
bind的配置文件默认是没有的,需要自己手写,但是很多,容易写错,所以我们安装模板文件,然后来修改。由于安装了chroot环境,所以我们的/etc/named.conf 应该在/var/named/chroot/etc/ 目录。
cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
编辑named.conf这个文件,把文件里面多余的东西删除了,只剩下红色中的内容,然后我们来写
[root@www /]# cat /var/named/chroot/etc/named.conf
options {
listen-on port 53 { 192.168.55.201; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port 53;
query-source-v6 port 53;
allow-query { 192.168.55.0/24; };
};
先检查主机的名字,使用hostname
[root@www /]# hostname
www.bolin.com
我修改我的主机名为:www.bolin.com .这里我们要用FQDN样式把你们的主机名改改,这里很重要。linux的主机名要修改3个地方不知道大家还记得不。
www.bolin.com
[root@www /]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 www.bolin.com
::1 localhost6.localdomain6localhost6
[root@www /]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=www.bolin.com 我们把这里也要改过来
修改完了我们继续:
我们以bolin.com 这个二级域名来建一个域名服务器
全局配置(options )
options 语句在每个配置文件中只有一个。如果出现多个options, 则第一个options 的配置有效,并会产生一个警告信息。
listen-on port 53 { 127.0.0.1; };
监听端口,修改成自己的IP地址,如果有多个IP,就写多个,每行要以;结束。
directory "/var/named";
zone文件的存放目录,这里的/var/named 是相对目录,在chroot环境下/var/named目录下。
allow-query { localhost; };
允许查询的client,我们修改成本地网段192.168.55.0/24 如下:
[root@www /]# cat var/named/chroot/etc/named.conf
options {
listen-on port 53 { 192.168.55.201; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port 53;
query-source-v6 port 53;
allow-query { 192.168.55.0/24; };
};
下面我们开始写zone文件
区域配置(zone )
zone 语句作用是定义DNS 区域,在此语句中可定义DNS 区域选项
zone区域设置,第一步,设置根区域
当DNS服务器处理递归查询时,如果本地区域文件不能进行查询的解析,就会转到根DNS服务器查询,所以在主配置文件named.conf文件中还要定义根区域。
zone "." IN {
type hint;
file "named.ca";
};
type:设置域的类型
file:设置根服务列表文件名
继续,指定正向解析的配置文件
记住,bind对配置文件要求很严格,就算是有些地方多了个空格,服务器都可能启动不了。
下面我直接贴出我name.conf里面配置文件的内容然后在给大家解释代表什么意思:如下
[root@www /]# cat var/named/chroot/etc/named.conf
options {
listen-on port 53 { 192.168.55.201; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port 53;
query-source-v6 port 53;
allow-query { 192.168.55.0/24; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "bolin.com" IN {
type master;
file "bolin.com.zone";
};
上面红字标出的是一个简单的name.conf文件。修改完毕保存后我们去修改区别文件,添加记录。
cp /var/named/chroot/var/named/localhost.zone /var/named/chroot/var/named/bolin.com.zone
bolin.com.zone 是你刚才在name.conf里面定义的名字,这个要注意
然后编辑区域文件,添加记录:
[root@www /]# vi var/named/chroot/var/named/bolin.com.zone
$TTL 86400
@ IN SOA www.bolin.com root.bolin.com. (
2011040701 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS www.bolin.com.
www IN A 192.168.55.201
@ IN mx 5 www.bolin.com.
mail IN A 192.168.55.88
TTL是生存期,单位是秒
$TTL是全局定义的
第二行 SOA记录,@取代在/etc/named.conf中指定的域名。
SOA段中的数字,分别为:序列号、刷新、重试、过期、生存期
序列号:序列号用于DNS数据库文件的版本控制。每当数据被改变,这个序列号就应该被增加。
刷新:从服务器向主服务器查询最新数据的间隔周期。每一次检查时从服务器的数据是否需要更改,则根据序列号来判别。
重试:一旦从服务器尝试连接主服务器失败,下一次查询主服务器的延迟时间。
过期:如果从服务器无法连通主服务器,则在经过此时间后,宣告其数据过期。
生存期:服务器回答 ‘无此域名’ 的间隔时间。
数字的默认单位为秒。否则:W= 周、D= 日、H= 小时、M= 分钟。
IN 是internet记录
SOA 是SOA 初始化记录,我们说的是初始授权记录,这个翻译不过,理解很多反正知道是那个意思就行了
www.bolin.com. 是DNS服务器的名称
root.bolin.com. 是管理员的邮箱地址
第一个:NS (name server) 设置域名服务器的域名 然后再添加一个MX邮件交换记录。 然后保存退出。正向解析文件就写完了。
下一步就可以启动DNS服务了。
先修给下你自己的DNS:[root@www /]# vi /etc/resolv.conf
search localdomain
nameserver 192.168.55.201
完成后启动DNS服务:service named restart
我们现在来测试我们的DNS
dig -t soa michael.com
dig -t mx michael.com
这是dig 工具,查询 michael.com域中的SOA记录和MX记录
[root@www /]# dig -t soa www.bolin.com
; <<>> DiG 9.3.4-P1 <<>> -t soa www.bolin.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55108
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;www.bolin.com. IN SOA
;; AUTHORITY SECTION:
bolin.com. 86400 IN SOA www.bolin.com.bolin.com. root.bolin.com. 2011040701 10800 900 604800 86400
;; Query time: 11 msec
;; SERVER: 192.168.55.201#53(192.168.55.201)
;; WHEN: Sat Mar 19 20:16:44 2011
;; MSG SIZE rcvd: 86
[root@www /]#
nslookup 也可以 和WIN下面是一样的用法
[root@www /]# nslookup www.bolin.com
Server: 192.168.55.201
Address: 192.168.55.201#53
Name: www.bolin.com
Address: 192.168.55.201