Chinaunix首页 | 论坛 | 博客
  • 博客访问: 647753
  • 博文数量: 32
  • 博客积分: 873
  • 博客等级: 准尉
  • 技术积分: 512
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-24 16:49
文章存档

2012年(1)

2011年(31)

分类: LINUX

2011-08-21 21:45:17

第一部分:DNS的一些相关概念的理解
 
 
DNS---domain name system  即使用TCP也使用UDP,同时监听TCP和UDP的53号端口
 
DNS的查询类型: 递归查询和迭代查询
 
递归查询:A主机请求B主机解析,如果B没有则B请求C主机解析....知道找到可以为A解析的DNS服务器N,然后由N告诉A要解析的路径(会使每个服务器都承载很大的压力)
 
迭代查询:A主机请求B主机解析,如果B没有则B告诉A可能的DNS主机,然后由A亲自去找那个可能知道如何解析的DNS主机(查询方,响应方)
 
互联网上应用的方式一般是:本地用户进行递归,互联网上进行迭代(互联网上的主机不对任何互联网主机递归,因为递归太浪费资源)
 
互联网的解析有两种:
 
 
NAME --> IP  :正向解析
IP        -->  NAME:反向解析
 
互联网DNS服务器解析地址的数据一般存储在数据库里,这些数据在数据库里表现为一条一条的记录,这些记录的功能各不相同,有十几中记录类型,我们这里介绍其中比较常用的六种:
FQDN(主机名full qualfied domain name) --》 IP  :  A                     .......address
IP   -->   FQDN       :PTR(point)           .......指针记录
DOMAIN   --》 SERVER  :NS (Name Server)    ........用于说明当前域里DNS服务器是谁
DOMAIN   --》 MTA     : MX(mail exchanger) ........用于标明某个域的邮件服务器是谁
jerry    --》 jack    :CNAME                  .......别名记录
                      : SOA (start of authority)...表明一个域的主DNS是谁
 
 
DNS主服务器和从服务器之间数据的同步有两种形式:
axfr     -----------   完全同步   :  把A的服务器数据全部“copy”给B服务器
ixfr     -----------   增量同步   :   把A服务器上变化的数据“copy”给B服务器
一台主机在访问一个域名的时候:
  首先查询本机文件/etc/hosts,找不到则查询本机DNS CACHE(本机DNS缓存),找不到则查询
   本地DNS服务器缓存,没有则查询是否为自己所负责的域的解析(authority权威解析)

第二部分:bind
目前来讲全球标准的DNS服务器软件是bind ,全称为berkeley(伯克利) internet name domain
bind的数据文件一般在/var/named下
 
#yum install bind
安装完bind后由两个文件重要
/etc/named.conf                :bind的主配置文件
/etc/rndc.conf(有时候安装完为/etc/rndc.key);是bind的一个远程控制工具
named.conf文件安装后是不存在的,我们需自己建立
格式:
vim /etc/named.conf
 options {
   version "haha";
};                           ///////全局选项
 zone "a.org.cn" IN {
   
};                           ///////局部选项
 include

比如:
options {
  directory "/var/named";
};
zone "." IN {
  type hint;
  file "named.ca";
};
zone "locahost" IN {
  type master;
  file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
  type master;
  file "named.local";
};

[root@localhost ~]# chown :named /etc/named.conf  ............必须为其改属组为named.conf
[root@localhost ~]# dig -t NS                     ............查询全球"根节点"的DNS服务器的名称及地址
 
[root@localhost ~]# dig -t NS > /var/named/named.ca ..........建立文件named.ca

建立文件localhost.zone:

此文件一般包括两项 :宏定义 和 解析记录 比如:
$TTL 86400
name [ttl] IN RECORD_TYPE value
IN A 192.168.0.17
localhost.zone的第一行必须为SOA ,并且只能有一行
这一行的格式如下:
$TTL 86400
@           86400  IN SOA localhost.  admin.localhost. (
                               2011081601  #这个是数据序列号,不能超过十位
                               1H          #从服务器多上时间来主服务器上检查一次
                               10M         #从服务器如果没有访问成功的重试时间
                               7D          #如果重试访问主服务器的时间超过7天,那么                                            从服务器也自动“陪葬”
                               1D          #否定回答的ttl值 )
                  IN   NS  localhost.
localhost.         IN   A   127.0.0.1
localhost.zone 文件建立成功................................
 
建立named.local:
$TTL 86400
@           86400  IN SOA localhost.  admin.localhost. (
                               2011081601  #这个是数据序列号,不能超过十位
                               1H          #从服务器多上时间来主服务器上检查一次
                               10M         #从服务器如果没有访问成功的重试时间
                               7D          #如果重试访问主服务器的时间超过7天,那么                                            从服务器也自动“陪葬”
                               1D          #否定回答的ttl值 )
                  IN   NS  localhost.
1                 IN   PIR   localhost.

建立成功.................................!
以上三个文件必须改其属组为named
此时已经是一个专门的缓存名称解析服务器了!
可以检查一下语法错误: service named configtest
专门的语法检查命令: named-checkconf  (配置文件检查命令)    和     named-checkzone “localhost” (区域检查命令)
 
service named start
检查一下自己的缓存名称解析服务器是否能用
vim  /etc/resolv.conf    nameserver 改为 127.0.0.1
dig -t A
 
 
 

host -t NS a.org
host -t A  a.org
dig  -t A 
dig  -t NS 
dig  -t CNAME
dig -t axfr a.org  把a.org服务器上的完全同步记录显示了出来(很危险)........待续
 
阅读(2464) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~