第一部分: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服务器上的完全同步记录显示了出来(很危险)........待续
阅读(2457) | 评论(0) | 转发(0) |