首页 > 代码库 > 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
显示服务器状况