加载中…
个人资料
本风2
本风2
  • 博客等级:
  • 博客积分:0
  • 博客访问:315,148
  • 关注人气:209
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

DNS解析过程及类型

(2012-10-26 12:09:50)

DNS:Domain Name system域名管理系统

域名是由圆点分开的一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,这一命名的方法或这样管理域名的系统叫做域名管理系统.

域名虽然便于人们记忆,但网络中的计算之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器.

1、A记录:WEB服务器的IP指向

A(address)记录是用来指定主机名(或域名)对应的IP地址记录.用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置自己域名的二级域名(子域名)。就是说:通过A记录,大家可以设置自己的不同域名转到不同的IP上去!

如:www.yourname.com 转到IP 321.32.321.321

ftp.yourname.com 转到IP 123.12.123.123

mail.yourname.com 转到IP 213.21.213.213

2、MX记录(Mail Exchange):邮件路由记录

它指向一个邮件服务器.用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器.例如:当Internet上的某用户要发一封信给user@mymain.com时,该用户的邮件系统通过DNS查找mymain.com这个域名的MX记录,如果 MX记录存在,用户计算机就将邮件发送到MX记录所指定的邮件服务器上

用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操作控制所有的邮箱设置。您只需在线填写您服务器的主机名或主机IP地址,即可将您域名下的邮件全部转到您自己设定相应的邮件服务器上。就是将你的域名中邮件服务器分开,将它设置到其它的IP去!

比如同样是 ourwords.cn,如果你设置A记录是指向123.12.123.123,而MX记录你设置是指向222.22.222.222,那么你的DNS服务器接收到别人的邮件路由请求时就将会将它的请求解释到222.22.222.222上去!而别人访问你的网页的时候仍然是访问 123.12.123.123。

3、CNAME (Canonical Name)记录,(alias from one domain name to another)通常称别名指向

可以将注册的不同域名统统转到一个主域名上去!与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址!

4、URL (Uniform Resource Locator )转发:网址转发

功能:如果您没有一台独立的服务器(也就是没有一个独立的IP地址)或者您还有一个域名B,您想访问A域名时访问到B域名的内容,这时您就可以通过URL转发来实现。

url转发可以转发到某一个目录下,甚至某一个文件上。而cname是不可以,这就是url转发和cname的主要区别所在。

5、NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。

你注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址一般以以以下的形式出现:

ns1.domain.com, ns2.domain.com等

简单的说,NS记录是指定由哪个DNS服务器解析你的域名

 DNS解析过程及类型

 
域名服务(DNS)是一种组织成域层次结构的计算机和网络命名系统。通过DNS服务可以将域名解析为IP地址,从而使得人们能通过简单好记的域名来代替IP地址访问网络。
通过建立DNS数据库,记录主机名称与IP地址的对应关系,驻留在服务器端,为客户端的主机提供IP地址解析服务。当某台主机要与其他主机通信时,就可以利用主机名称向DNS服务器查询该主机的IP地址。
整个DNS域名系统包括以下部分
1 DNS域名空间;
顶级域名(Top Level Domain):国家顶级域名、通用顶级域名、基础结构域名(反向域名)。
clip_image002
2 资源记录;将DNS域名映射到特定类型的资源信息,以便在名称注册和解析时使用。
3 DNS服务器;提供存储和应答资源记录的名称查询服务。
4 DNS客户端;用来查询DNS服务,将域名解析为查询中指定的资源记录。
一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。每个区设置相应的权限域名服务器(authentication name server),用来保存该区中的所有主机的域名到IP地址的映射。
DNS服务器管辖是以“区”为单位。区是DNS服务器实际管辖的范围。区可能小于等于域,但不可能大于域。
clip_image004
树状结构的DNS域名服务器
域名解析过程:
递归查询:即一级一级地找。主机向本地域名服务器的查询一般都采用递归查询
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机进行下一步查询。递归查询返回的结果是所要查询的IP地址,或者是报错。
迭代查询:一个一个地找。本地域名服务器向根域名服务器的查询通常采用迭代查询
当根域名服务器收到本地域名服务器发出的迭代查询请求后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步该向哪个域名服务器进行后续的查询,然后让本地域名服务器进行后续的查询(而不是替本地域名服务器进行后续查询)。即告诉你怎么查,而不是替你去查。
个人对递归解析和迭代解析理解是:递归解析就跟我们找一个人办事,这个人会答应,并把事情完成,其过程我们不用去管,最后把完成的结果告诉我们;而迭代查询,我们就像一个“皮球”被踢来踢去,比如,我们找A办事,A说他不管,要我们去找B,找到B,B也是同样的话,要我们去找C,如此反复,我们最后找能解决问题的Z,才把事情解决.
为提高DNS查询效率,减轻根域名服务器的负荷和减少因特网上DNS查询报文数量,在域名服务器中广泛使用了高速缓存(或高速缓存服务器),用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
高速缓存:当DNS服务器向另一个DNS服务器请求并收到它的响应,就在把它发送给客户之前,把这个信息存储在它的高速缓存中,这个信息会在高速缓存中存在一个生存周期TTL,过了生存周期就删除这条信息。
clip_image006
本地域名服务器采用迭代查询
clip_image008
本地域名服务器采用递归查询
DNS资源记录类型: ——摘自《鸟哥的linux私房菜》

SOA

起始授权机构,SOA(Start Of Authority):该记录表明DNS域名服务器是DNS域中的数据表的信息来源,该服务器是主机名字的管理者(即,下面所说的主机名是DNS域中的数据表的信息来源),创建新区域时,该资源记录自动创建,且是DNS数据库文件中的第一条记录。

起始授权机构(SOA)标签允许你配置此DNS区域的SOA记录。当DNS服务器加载DNS区域时,它首先通过SOA记录来决定此DNS区域的基本信息和主服务器(主机名).

$TTL :当有外部DNS服务器对你的 DNS 的这个领域进行查询时,这一条记录会放置在对方DNS服务器内几钟的意思。

$ORIGIN:这个设定值可以重新指定 zone 的定义。在预设的情况下, 这个正反解数据库档案中的 zone 是由 /etc/named.conf 所指定的,就是 zone 那个参数的功能。 不过,这个 zone 是可以改的,就是用 $ORIGIN 来修订就是了。通常这个设定值不会用到的。
@:这个符号代表 zone 的意思! 以上面的 named.local 来说, 这个档案由 /etc/named.conf 定义出 zone 为 localhost. ,因此在本档案的 @ 就代表 localhost.
. :这个点 (.) 很重要!因为他代表一个完整主机名称 (FQDN) 而不是仅有 hostname 而已。举例来说,如果你在本设定档上面规范一个主机名称为 www 时,那部主机的 FQDN 为 www.localhost. 如果你写出 www.localhost 时,由于末了没有那个小数点,则 zone 会主动加入该主机名称, 所以最终的 FQDN 会变成 www.localhost.localhost.
SOA:Start of Authority 的意思。 这个标志代表着 master/slave 相关的认证、授权资料。 不论你的 DNS 系统有没有设定 master/slave 的架构,都需要含有这个设定才好。 SOA 后面共带有三个参数,所以该行为:
[zone] IN SOA [主机名] [管理员 email] ([五组更新时间参数])
    IN      SOA          school.edu.tw. root.school.edu.tw.  (

                                    1999051401      ; Serial

                                    3600            ; Refresh

                                    300             ; Retry

                                    3600000         ; Expire

                                    3600 )          ; Minimum 

每个设定项目你可以这样看:
主机名:就是 master DNS 的主机名称,通常填写本身主机名即可。还是要注意那个小数点的存在与否!非常重要!
管理员 email:本来应该是 "root@localhost." 的,不过因为 @ 已经被作为特殊代号 (zone), 所以就用小数点来取代,因此 email 就成为 "root.localhost." 。
(五组数字):这五个数字分别代表 serial, refresh, retry, expire, ttl。
至于那五个数字的意义是这样的:
1 Serial:只是一个序号,但这个序号可被用来作为 slave 与 master 更新的依据。 举例来说, master 序号为 100 但 slave 序号为 90 时,那么这个 zone file 的资料就会被传送到 slave 来更新了。由于这个序号代表新旧资料,通常我们建议你可以利用日期来设定!举例来说,上面的资料是在 2006/10/20 所写的第一次,所以用 2006102001 作为序号代表!(yyyymmddnn,nn代表这一天是第几次修改)
2 Refresh:除了根据 Serial 来判断新旧之外,我们可以利用这个 refresh(更新) 命令 slave 多久进行一次主动更新;
3 Retry:如果到了 Refresh 的时间,但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机连线;
4 Expire:如果 slave 一直无法与 master 连接上,那么经过多久的时间之后, 则命令 slave 不要再连接 master 了! 也就是说,此时我们假设 master DNS 可能遇到重大问题而无法上线,则等待系统管理员处理完毕后, 再重新来到 slave DNS 重新启动 bind 吧!
5 Minimun:这个就有点象是 TTL !
NS:就是 name server 的缩写,这个标志的参数是:[zone] IN NS [主机名称]
注意, NS 后面接的一定是主机名称!代表的意思是说:“这个 zone 的查询请向后面这部主机要求”的意思。 所以,如果你这个 zone 有两部以上的 DNS 服务器负责时,那就必需要写两个 NS 了!而 NS 后面接的主机名称必需要有 IP 的对应啊!因此就需要 A 这个标志了!
A:是正解的符号,参数是:[hostname] IN A [IP]
意思是说该部主机的 IP 对应之意!也是最常用的一个标志了!
MX:就是 Mail eXchanger(MX) 的简写,他的参数是这样写的:
[hostname] IN MX [顺序] [主机名称]
注意,这个 MX 与 mail server 有关,没有 mail server 的朋友可以省略这个标志,但是如果你的领域内有 mail server 时,就必需要设定这个 MX 才好。MX 的用途是在于『邮件转递』或者是经由上层邮件主机备份的一个机制, 后面设定的那个主机名称通常是你的上游邮件主机,相关的意义我们会在 mail server 章节再跟大家详谈。 另外, MX 后面接的数值是越小越优先,而接的主机名称必需要具有 A 的标志才可以!
如果你不知道如何设定,通常建议你直接设定成你的 mail server 主机名称即可
CNAME:顾名思义,这个标志在建立“主机别名”的啦!参数为:[hostname] IN CNAME [主机名称]。注意一下, CNAME 后面接的是主机名称。因为有好几部主机名称都对应到同一个 IP 上头, 你当然可以针对每个主机名称给予一个 A ,不过如果未来要改 IP 时,你就得改好几个啦! 此时改为 CNAME 来处理就很简单。如上表所示,如果我想要知道 ftp.vbird.tsai 的 IP 时, DNS 会先告知 ftp.vbird.tsai 属于 linux.vbird.tsai 的 CNAME ,然后再透过 linux.vbird.tsai 来得到正确的 IP。
TXT:这个东西在进行“说明”而已!亦即是前面那部主机的一些信息。特别注意的是,没事的话,“信息不要写得太详细,有的时候甚至应该要写些错误的讯息!” 为什么呢?如果写得太详细的话,那么那些个 cracker 不就很简单的就可以将您的网站信息取得,并进而入侵了吗?
DNS服务器类型:主域名服务器
辅助域名服务器:1)容错能力
2)减少广域链路的通信量
3)减轻主服务器的负载
缓存域名服务器:仅仅负责提供缓存解析的结果。
正向解析:从域名到IP地址解析的过程。
反向解析:从IP地址到域名的解析过程。反向解析的作用为服务器进行身份验证。
BIND:Berkeley Internet Name Domain
PowerDNS MyDNS
bind:进程名称:named
安装包:bind bind-libs bind-utils(提供测试工具) bind-chroot caching-nameserver
[root@station39 ~]# yum install bind
主配置文件/etc/named.conf 需要手动建立
options {
directory "/var/named"; //**数据文件存放位置
};
zone "." IN {
type hint ;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
数据库文件存放位置:/var/named
named.ca 根名称服务器的地址
[root@station39 named]# dig -t NS . @a.root-servers.net > /var/named/named.ca //**查找全球
根域名服务器的地址并重定向到named.ca
区域文件:
localhost.zone 把localhost解析成127.0.0.1
[root@station39 named]# cat localhost.zone
$TTL 86400
@ //*指代当前域 IN SOA @ //* 负责该区域名称解析的授权主机名 root// 管理员 (
//* 序列号 42 ; serial (d. adams)
//* 设置更新时间间隔 3H ; refresh
//* 重试时间间隔 15M ; retry
//* 设置过期时间 1W ; expiry
//* 设置最小默认TTL缓存时间 1D ) ; minimum
IN NS @
IN A 127.0.0.1
IN AAAA ::1
序列号:用于标识该区域的数据是否有更新,一般情况下,主服务器会在数据更新之后将序列号加1,当辅助域名服务器需要与主服务器进行区域复制的时候,就会比较这个数值。
更新时间间隔:定义辅助域名服务器隔多久时间与主域名服务器进行一次区域复制操作。
重试时间间隔:当辅助域名服务器在该时间内一直不能与主要名称服务器取得联系时,重试区域复制的时间间隔。
最小默认TTL:区域的默认生存时间(TTL)和缓存时间否定应答的缓存时间
named.local 把127.0.0.1解析成localhost
[root@station39 named]# cat 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.
启动脚本/etc/init.d/named
辅助控制工具:rndc 远程名称进程控制器:可以远程控制DNS服务器重新加载读取配置文件,停止或者重启DNS服务器。默认监听端口:953.。
主配置文件:/etc/rndc.conf
需要手动生成: rndc-confgen > /etc/rndc.conf
[root@station39 named]# cat /etc/rndc.conf
# Start of rndc.conf
key "rndckey" {
algorithm hmac-md5;
secret "8CIXalFy/sjPl1U79wWj6A==";
};
options {
default-key "rndckey";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndckey" {
# algorithm hmac-md5;
# secret "8CIXalFy/sjPl1U79wWj6A==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndckey"; };
# };
# End of named.conf
[root@station39 named]# tail /etc/rndc.conf | head -9 | sed 's/^# //g'
key "rndckey" {
algorithm hmac-md5;
secret "8CIXalFy/sjPl1U79wWj6A==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndckey"; };
}; //** 将此文件追加到named.conf 就可以使用rndc来控制DNS服务器了。
chown :named /etc/named.conf
chown :named /var/nmed/* -R
service named configtest
rndc flush //**清空缓存
[root@station39 named]# vim a.com.zone
$TTL 86400
$ORIGIN a.com.
@ IN SOA a.com. root (
100 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns
IN MX 5 mail
ns IN A 192.168.0.39
mail IN A 192.168.0.39
www IN A 192.168.0.1
www IN A 192.168.0.254
bbs IN CNAME www
ftp IN A 192.168.0.254
fw IN A 192.168.0.254
[root@station39 named]# chown :named a.com.zone
下面通过配置一个主域名服务器来说明DNS配置过程:
主配置文件:
options {
directory "/var/named"; //**数据文件存放位置
allow-notify { 192.168.0.127; } ;
querylog 1 ; //** 启用日志功能 1 开启 0 关闭
version "None of your business !" //** 禁止查询版本号
listen-on { 192.168.0.39 ; }; //**指定监听的地址
allow-recursion { 192.168.0.0/24; }; //**只给某个网段递归查询,也可以使用ACL
allow-query { 192.168.0.0/24; }; //**只允许谁来查询
};
zone "." IN {
type hint ;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
zone "a.com" IN {
type master;
file "a.com.zone";
allow-transfer { 192.168.0.127; }; //** 允许区域传送
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.zone" ;
allow-transfer { 192.168.0.127;};
};
正向区域解析文件
[root@station39 named]# vim a.com.zone
$TTL 86400
$ORIGIN a.com.
@ IN SOA a.com. root (
100 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns
IN NS ns2
IN MX 5 mail
ns IN A 192.168.0.39
ns2 IN A 192.168.0.127
mail IN A 192.168.0.39
www IN A 192.168.0.1
www IN A 192.168.0.254
bbs IN CNAME www
ftp IN A 192.168.0.254
fw IN A 192.168.0.254
[root@station39 named]# chown :named a.com.zone
反向区域解析文件:
$TTL 86400
@ IN SOA a.com. root (
100 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.a.com.
39 IN PTR ns.a.com.
39 IN PTR mail.a.com.
1 IN PTR www.a.com.
254 IN PTR www.a.com.
254 IN PTR ftp.a.com.
254 IN PTR fw.a.com.
从域名服务器:192.168.0.127
主配置文件:
options {
directory "/var/named"; //**数据文件存放位置
};
zone "." IN {
type hint ;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
zone "a.com" IN {
type slave;
file "slaves/a.com.zone";
masters { 192.168.0.39 ; };
};
zone "0.168.192.in-addr.arpa" IN {
type slave ;
file "0.168.192.zone" ;
masters { 192.168.0.39; };
};
子域授权
在主域名服务器正向区域文件中添加一条记录
cs.a.com. IN NS ns.cs.a.com.
ns.cs.a.com. IN A 192.168.0.161
在子域名服务器中设置主配置文件:
options {
directory "/var/named"; //**数据文件存放位置
};
zone "." IN {
type hint ;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
zone "cs.a.com" IN {
type master;
file "cs.a.com.zone";
};
/var/named添加正向区域文件cs.a.com.zone
$TTL 86400
$ORIGIN cs.a.com.
@ IN SOA cs.a.com. root (
100 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns
IN NS ns2
IN MX 5 mail
ns IN A 192.168.0.3
ns2 IN A 192.168.0.15
mail IN A 192.168.0.37
www IN A 192.168.0.74
www IN A 192.168.0.25
bbs IN CNAME www
ftp IN A 192.168.0.25
fw IN A 192.168.0.25
PS :父域可以解析子域,子域要想解析父域就要转发。
修改子域主配置文件,添加:
zone "a.com" IN {
type forward
forwarders { 192.168.0. 39 ; };
};
查询服务器版本号:
[root@station39 ~]# dig txt chaos version.bin @127.0.0.1
View:视图,将用户来源分成不同的类别,当属于某一类用户的时候解析成A结果,当属于另一类用户的时候解析成B结果。
PS:只要声明一个view,那么所有的zone都必须在view中建立。
在主配置文件中添加:
view "localhost" {
matche-clients { 127.0.0.0/8 ; };
zone "." IN {
type hint ;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
};
view "internal" {
match-clients { 192.168.0.0/24; };
zone "a.com" IN {
type msater;
file "a.com.int.zone";
};
zone "0.168.192.in-addr.arpa" IN {
type master ;
file "0.168.192.zone" ;
};
};
view "external" {
match-clients { 192.168.10.0/24; };
zone "a.com" IN {
type master;
file "a.com.ext.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type master ;
file "10.168.192.zone" ;
};
};

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
前一篇:PPPOE server
后一篇:DDN
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    < 前一篇PPPOE server
    后一篇 >DDN
      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有