首页 > 代码库 > DNS基本原理

DNS基本原理

首先来看DNS中常用的2种查询模式

1.递归查询: 

一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机;

2.迭代查询(反复查询): 
一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求;



DNS域名解析过程  

主机向本地域名服务器的查询采用递归查询:

              主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

本地域名服务器向根域名服务器的查询通常采用迭代查询: 

          本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。


DNS资源记录

资源记录是用于答复DNS客户端请求的DNS数据库记录,每一个DNS服务器包含了它所管理的DNS命名空间的所有资源记录。资源记录包含和特定主机有关的信息,如IP地址、提供服务的类型等等。常见的资源记录类型有:

起始授权结构(SOA):Start of Authority的意思。这个标志代表着master/slave相关的认证、授权资料。此记录指定区域的起点。它所包含的信息有区域名、区域管理员电子邮件地址,以及指示辅 DNS 服务器如何更新区域数据文件的设置等。 

主机(A:用于将DNS域名映射到计算机使用的IP地址。

别名(CNAME):此记录用于将某个别名指向到某个主机(A)记录上,从而无需为某个需要新名字解析的主机额外创建A记录。这些记录允许使用多个名称指向单个主机,使得某些任务更容易维护。

邮件交换器(MX):用于将DNS域名映射为交换或转发邮件的计算机的名称。它由电子邮件应用程序使用,用以根据在目标地址中使用的DNS域名为电子邮件接收定位邮件服务器。

名称服务器(NS):此记录指定负责此DNS区域的权威名称服务器。

PTR记录PTR记录也被称为指针记录,PTR记录是A记录的逆向记录,作用是把IP地址解析为域名。


以下图为例:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$TTL    604800
@   IN  SOA ns. test .com. root.localhost. (
                2012120501       ; Serial
              604800     ; Refresh
               86400     ; Retry
             2419200     ; Expire
                1800)        ; minimum 
 
          IN  NS ns. test .com.
ns. test .com. A   192.168.1.111
station1     A   192.168.1.1
station2     A   192.168.1.2
test .com.    A   192.168.1.90
www          CNAME   test .com.

$TTL  604800: 当有外部的DNS服务器对你的DNS的这个领域进行查询时,这记录会放置在对方的DNS服务器内几秒钟的意思。 这里指别人查询我的几录,保存7天。

@:指代zone文件,也就是/etc/named.conf中test.com.

root.localhost.:本来应该是 "root@localhost." 的,不过因为 @ 已经被作为特殊代号 (zone), 所以就用小数点来取代,因此 email 就成为 "root.localhost."

Serial:一个序号,但这个序号可被用来作为 slave 与 master 更新的依据。由于这个序号代表新旧资料,通常建议利用日期来设定,举例来说,上面的数据是在2012/12/05所写的第一次,所以用 2012120501 作为序号代表。以后每次更新增加序列号,重启服务生效(rcdc reload)

Refresh :除了根据 Serial 来判断新旧之外,我们可以利用这个 refresh(更新) 命令 slave 多久进行一次主动更新;

Retry :如果到了 Refresh 的时间,但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机联机;这里是1天。

Expire:如果 slave 一直无法与 master 连接上,那么经过多久的时间之后, 则命令 slave 不要再连接 master 了! 也就是说,此时我们假设 master DNS 可能遇到重大问题而无法上线,则等待系统管理员处理完毕后, 再重新来到 slave DNS 重新启动 bind 吧!这里是28天.

Minimun:如果没有TTL,就用这里的时间.

注意: station1后没有"." 它的完整写法是station1.test.com 

         test.com后有"." 说明这是完整结束符

         先要解析域,test.com.  A  192.168.1.90 之后可以指定别名


debian dns管理工具

named-checkconf。
named-checkconf 检查 named.conf 文件的句法
named-checkconf [-t directory] [filename]
named-checkzone
named-checkzone 程序检查host 文件的句法和相容性。
named-checkzone [-dq] [-c class] zone [filename]
rndc(Remote Name Daemon Control)
rndc 允许系统管理员控制名称管理器的运行。
如果不使用任何选项来运行rndc 将会有一条形如下列的使用信息:
rndc [-c config] [-s server] [-p port] [-y key] command [command...]
其中command 是下列中的一种:
reload
重新加载配置文件和域(zone)的配置。
reload zone [class [view]]
重新加载一个指定的域。
refresh zone [class [view]]
定期维护一个指定的域。
reconfig
重新加载namd.conf 配置文件和新的域,但不会重新加载已存的域文件,即使
域文件已经被修改了也不会加载。特别是当有大量的域的时候,这比全部的reload
要快很多,因为这避免了对域文件修改时间的检查。
stats
将统计信息写入到统计文件中。
querylog
启动用户请求的日志纪录。请求的日志记路也可以通过在named.conf 中
logging 部分的queries category 和channel 来启动。
dumpdb
把服务器缓存中的信息转储到dump 文件中去。
stop
服务器停机,且将所有最近通过动态更新或IXFRS 作出的修改,都首先存到
了更新域中的host 文件中。
halt
服务器马上停机。但通过动态更新和IXFR 做出的最新修改不会存入host 文
件,但当服务器重新启动的时候会写入到日志文件中去。
trace
增加一个服务器的debug 级别。
trace level
直接设置服务器的debug 等级。
notrace
将服务器的debug 等级设成0。
flush
清除域名服务器缓存中的内容。
status
显示服务器状况