全部博文(93)
分类:
2010-10-12 17:46:36
Target 3: dns 服务器的搭建
一、Dns服务概述:
Dns服务器英文名称:domain name server,其主要作用是用来实现IP与域名(或称主机名)之间解析的。
Ip记忆比较麻烦,而域名(或称主机名)相对比较好记些,于是web等一些对外提供访问的应用开始采用域名的方式访问,而将域名转换成IP的过程交给dns服务器来完成。
正向解析:即将域名解析成IP的过程
反向解析:即将IP解析成域名的过程。
二、dns的工作原理
(1). 递归查询:是客户端发送请求到本地域名服务器后,由本地域名服务完成查询,将最终查询结果(IP地址)返回给客户端的查询过程。
递归查询是域名查询的最常见方式,实现过程如下:
1. 本地域名服务器接收到请求后,先查看自己缓存内的记录,有的话,就直接将结果返回给客户,如果没有该记录,则直接将请求提交给根域名服务器(root);
2. Root 将查询到与该请求的顶级域名相匹配的记录(com.), root 将结果返回给local domain server;
3. Local dns server将请求发给com.的域名服务器,.com在本域内执行查询匹配wlotx的记录(wlotx.com.),并将结果,返回给local dns server;
4. Local dns server继续发送查询请求给wlotx.com.域名服务器,wlotx.com执行查询该域下有无叫www.的主机名,有,则将结果返回给local dns server,此时为最终查询结果;如没有,也返回一条错误信息给local dns server
5. Local dns server收到返回信息后,将最终的查询结果发送给客户端,一次dns查询结束。
(2) 迭代查询:其与递归查询主要的区别在于域名服务器会将结果直接返回给客户端,由客户端再发送请求到新的域名服务器,如此反复,直到查到最终的结果。
一个比较形象的例子:你去一个从未去过的地方,你可以有二种方法获得该地方的确切地址:1. 找一个人,由他帮助你查找,最终将确切的地址告诉你;(即为递归查询)
2. 就是你亲自打听,自己找到目的地的确切地址。 (即为迭代查询)
三、 dns 服务器的类型
大致分以下几种类型:
1. 主dns服务器(master) :
创建了domain的服务器,其中数据可读可修改,是最常使用的dns服务器。
2. 从/辅 dns服务器(slave)
不创建domain,它的数据主要复制主dns而来,不可更改,主要分担主dns负担,提高解析速度
3. dns 转发服务器
将域名请求转发给其它服务器,其作用是当客户向指定的dns服务器解析的域名不成功时,将客户请求转发给其它dns 转发服务器。
4. dns 缓存服务器(cache-only)
没有任何数据,只是帮助客户向其他dns服务器进行查询,然后将查询的结果放置到缓存中,响应客户机查询请求
5. 子域dns服务器(不太确定)
三、dns的数据类型
1. A记录
2. NS 记录
3. PTR 记录
4. MX 记录
5. SOA 记录
6. CNAME 记录
二、搭建及实施
主:
我采用的是yum安装
[root@test9 ~]#yum -y install bind*(安装的是bind-9.3.6)
安装完成后目录在/var/named/chroot/,之所以有chroot装了一个软件包,chroot可以起到安全的作用。
Named.conf可以从模板里复制:
[root@test9 ~]#cd /var/name/chroot/etc
[root@test9 etc]# cp /usr/share/doc/bind-9.3.6/sample/etc/named.conf ./
当然也可以自建配置文件named.conf
这里我们采用自建的方式:
1. 首先查看有无rndc-key文件上(bind-9.3.6是默认存在这个文件的),如没有,需要生成:
[root@test9 etc]# rndc-confgen > ./rndc.key
可以将rndc.key的内容复制到named.conf,也可以在named.conf中加上”include “ etc/rndc.key”;”来实现,二者等同(这里选择后者)
2. 配置好的named.conf的内容
[root@test9 etc]# more named.conf
options{
listen-on port 53 { any; };
directory "/var/named";
pid-file "named.pid";
dump-file "data/cache_dump.db";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN{
type master;
file "localhost.zone";
};
zone "test.eric.com" IN{
type master;
file "test.eric.com.zone";
allow-transfer{192.168.1.8;};
notify yes;
also-notify{192.168.1.8;}; //使用notify指令会自动通知所有这个域的所有在ns记录上的机器,also-notify指令可以用来通知所有不在ns记录上的dns服务器.
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
include "/etc/rndc.key";
然后我们可以再根据需要完善它(以下是用于反向解析的配置文件):
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
zone "9.1.168.192.in-addr.arpa" IN {
type master;
file "9.1.168.192.local";
allow-transfer { 192.168.1.8 ; };
notify yes;
also-notify { 192.168.1.8 ; };
};
3. 配置localhost.zone
[root@test9 etc]# cd /var/named/chroot/var/named
复制localhost.zone模板
[root@test9 named]# cp /usr/share/doc/bind-9.3.6/sample/var/named/localhost.zone ./
[root@test9 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
4. 建立named.local文件
[root@test9 named]# cp /usr/share/doc/bind-9.3.6/sample/var/named/named.local ./
[root@test9 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.
5. dig命令直接生成named.ca文件
[root@test9 named]#dig > named.ca
建立test.eric.com域名正向解析文件
[root@test9 named]#vi test.eric.com.zone
$TTL 86400
$ORIGIN test.eric.com.
@ 1D IN SOA dns.test.eric.com. root.mail.test.eric.com. (
2010090342
3H
15M
1W
1D )
1D IN NS dns.test.eric.com.
1D IN MX 5 mail.test.eric.com.
dns IN A 192.168.1.8
mail IN A 192.168.1.8
www IN A 192.168.1.41
建立test.eric.com域名反向解析文件
[root@test9 named]#vi 1.168.192.local
$TTL 86400
@ IN SOA dns.test.eric.com. root.mail.test.eric.com.(
2010090342;
7200;
3600;
43200;
86400);
@ IN NS dns.test.eric.com.
9 IN PTR dns.test.eric.com.
8 IN PTR mail.test.eric.com.
60 IN PTR
60 IN PTR wlotx.test.eric.com.
41 IN PTR ftp.test.eric.com.
[root@test9 named]#netstat -an |grep :53
tcp 0 0 192.168.22.150:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
udp 0 0 192.168.22.150:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
修改reslov.conf
[root@test9 named]#vi /etc/reslov.conf
nameserver 192.168.22.150
search test.eric.com.
[root@test9 etc]# more host.conf
order hosts,bind
启动named
/[root@test9 etc]# usr/local/sbin/named start
测试DNS
[root@test9 named]# nslookup
>
Server: 192.168.1.9
Address: 192.168.1.9#53
Name:
Address: 192.168.1.60
> wlotx.test.eric.com
Server: 192.168.1.9
Address: 192.168.1.9#53
Name: wlotx.test.eric.com
Address: 192.168.1.60
> ftp.test.eric.com
Server: 192.168.1.9
Address: 192.168.1.9#53
Name: ftp.test.eric.com
Address: 192.168.1.41
> mail.test.eric.com
Server: 192.168.1.9
Address: 192.168.1.9#53
Name: mail.test.eric.com
Address: 192.168.1.8
> dns.test.eric.com
Server: 192.168.1.9
Address: 192.168.1.9#53
Name: dns.test.eric.com
Address: 192.168.1.9
> 192.168.1.60
Server: 192.168.1.9
Address: 192.168.1.9#53
60.1.168.192.in-addr.arpa name =
60.1.168.192.in-addr.arpa name = wlotx.test.eric.com.
> 192.168.1.41
Server: 192.168.1.9
Address: 192.168.1.9#53
41.1.168.192.in-addr.arpa name = ftp.test.eric.com.
> 192.168.1.8
Server: 192.168.1.9
Address: 192.168.1.9#53
8.1.168.192.in-addr.arpa name = mail.test.eric.com.