首页 > 代码库 > 一、DNS解析的基本原理
一、DNS解析的基本原理
一、DNS解析的基本原理
1、基础知识
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
2、专业术语
FQDN : Full Qualified Domain Name 完全合格域名
例如:www.baidu.com www.mirrors.163.com
名称解析:主机名解析 把一种名称转换为另一种名称的过程
解析库:username <--> uid 存储域名与IP 对应的数据库
域名解析:根所用户所提供一种名称,去查询解析库,以得到另一种名称
递归:A--B--C--D
迭代:A--B A--C A---D
hosts --> local dns cache --> dns server (cache) --> 迭代
正向解析:FQDN --- 解析库 --- IP
反向解析:IP --- 解析库 --- FQDN
域:domain, 区域:zone
反向区域:
区域名称为逆向网络地址加.in-addr.arpa做后缀
172.16.110.143
110.16.172.in-addr.arpa
说明:
正向解析和反向解析文件中的名称可以仅使用相对名称,它们均相对当前区域而言;
绝对后缀可以使用$ORIGIN来定义;
DNS服务器类型:
主DNS服务器 :主从结构中负责解析DNS域名的服务器
从DNS服务器 :主从结构中负责同步主DNS域名的服务器,主要作用是冗余备份
缓存服务器 :其实就是主DNS域名服务器查询非本地域名的缓存记录
解析库文件同步的过程:区域传送 (单方向传送)zone transfer
完全区域传送:axfr 主从同步全部数据都传递
增量区域传送: ixfr 主从同步跟新数据传递同步
周期性检查 :同步机制通知同步
3、根域名结构图
1、一般划分图
2、按类划分图
4、一次域名解析的过程,排除本地缓存DNS
以www.dingchao.com为例
1、客户端请求本地DNS解析,递归给本地请求,本地查询解析库没有,
2、发给根 “.”查询
3、根查询说没有,叫去 “.com”根哪里查询,返回给本地
4、本地又去“.com”根哪里查询,查到到“.dingchao.com”
5、“.com”根哪里查询到 “.dingchao.com”返回给本地
6、本地又去“.dingchao.com”找到“www.dingchao.com”
7、“.dingchao.com”找到“www.dingchao.com”返回给本地DNS
8、本地DNS 把最后查询结果返回给客户端
9、客户端直接迭代到到“www.dingchao.com”
二、配置文件修改的基础知识
资源记录类型:
name [ttl] IN RRType value
1、SOA
任何解析库文件的第一个记录的类型必须是SOA
SOA:Start Of Authority
name: 区域名称,通常可以简写为@
value: 主DNS服务器的FQDN,也可以当前区域的区域名称;
例如:@ IN SOA ns.magedu.com. admin.magedu.com. (
serial number ;解析库的版本号,
例如2014080401
refresh time ;周期性同步的时间间隔
retry time ;重试的时间间隔
expire time ;过期时长
negative answer ttl ;否定答案的统一缓存时长
)
2、NS 记录
NS:name server
name: 区域名称
value: DNS服务器的FQDN
例如:@ IN NS ns.magedu.com.
注意:
如果有多台NS服务器,每一个都必须有对应的NS记录;
对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
MX:Mail eXchanger
name: 区域名称
value: 邮件服务器的FQDN
例如:
@ IN MX 10 mail.magedu.com.
@ IN MX 20 mail2.magedu.com.
3、MX记录
注意:
如果有多台MX服务器,每一个都必须有对应的MX记录;但各MX记录还有优先级属性
对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
PTR: pointer
name: 逆向的主机IP地址加后缀in-addr.arpa,例如172.16.100.7/16, 网络地址为172.16, 主机地址为100.7,其name为7.100.in-addr.arpa.
value: FQDN
4、bind服务脚本
服务脚本:/etc/rc.d/init.d/named
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones
区域解析库文件:/var/named/zone_name.zone
三、实验
一、主服务器的正反解析
1、IP 设置好
2、安装rpm包的bind yum install bind*
3、修改主配置文档 /etc/named.conf
4、主配置文档修改好了就相当于是一个缓存dns服务器啦,可以启动服务查看是否支持
5、正向主配置文件声明:修改主配置文件 /etc/named.rfc1912.zones
6、zone配置文件的新建修改 /var/named/dingchao.com.zone
$ORINIG 定义是个变量 相当于 dingchao.com. 另外一种配置方法
6、对新建配置文件的语法测试
7、修改权限并复制正向改名
8、反向配置文件的声明/etc/named.rfc1912.zones
9、反向配置文件的修改 /var/named/172.16.110.zone
测试反向配置语句
10、重启服务 service named restart 查看配置结果 或者是
/etc/init.d/named restart
11、正向结果图
12、反向结果图
14、一些测试结果的命令
1、host -t RRType NAME [SERVER]
例如:host -t NS mageedu.com 172.16.110.143
2、nslookup
nslookup>
server IP:
set type={A|SOA|NS|MX}
name
3、dig
dig -t TYPE name @server
类型可使用:AXFR
例如: dig -t AXFR mageedu.com @172.16.110.143
二、主从配置DNS配置
1、配置示意图如(上面1-1所示),配置好IP地址安装好bind,此处不必细说
2、注意事项
1、提供区域解析库
主DNS服务器:定义
从DNS服务器:同步而来
不能手动创建和修改
Linux的特性:只有管理员才能使用小于1024的端口;
named由管理员启动,启动完成后切换为以named系统用户的身份运行;
DNS主从同步:
2、时间同步;
ntp: network time protocol
ntpdate NTP_SERVER
crontab:
*/3 * * * * /sbin/ntpdate 172.16.0.1 &> /dev/null
3、bind版本差异
二者相同
主低、从高
从服务DNS安装的bind要高于或等于主DNS服务的版本,为的事上下兼容
(一)master服务器配置
1、主配置文件同前面一样
2、声明文件配置
3、正向配置文件
4、反向配置文件
(二)从DNS 服务器配置
1、主配置文件同上一样注释掉
2、声明文件配置
3、查看同步过来的文件
四、总结
通过DNS的学习一定要了解它的工作原理,至于上面的实验的话一定要注意细节,正方向文件配置的“.” ;声明文件中文件名字和真正编辑文件名字的匹配,主从同步防火墙的关闭,文件声明名字同主的一样,还有权限,属主属组等。