本篇博客主要讲解:
DNS原理、DNS缓存服务器、主从服务器、DNS转发
一、DNS原理
网络通讯大部分是基于TCP/IP协议,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“125.39.240.113”之类的IP地址,而不能认识域名。我们无法记住那么多数字组成的IP地址,但我们在访问网站时,几乎都是在浏览器地址栏中输入域名,就能看到我们所要访问的内容,这是因为有一个“DNS服务器”自动把我们的域名转换成相应的IP地址,而后查询出IP地址所对应的网页。
什么是DNS
DNS( DomainName System)是“域名系统”的英文缩写,它是由解析器以及域名服务器组成。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。DNS使用TCP/53端口与UDP/53端口,主要使用“UDP”协议,服务器之间备份使用“TCP”协议。它的基本工作原理用图来表示如:
DNS域:
互联网域名系统由名称注册机构负责维护分配、由组织和国家/地区的顶级域在 Internet 上进行管理。这些域名按照国际标准进行分配。常见的DNS域名称如:
com:商业公司 edu:教育机构 net:网络公司 gov:政府机构 mil:军事政府机构 cn:中国
DNS域名称空间的组织方式
根域:DNS域名使用时,由尾部点"."来指定名称位于根域或更高
顶级域:用来表示某个国家或地区使用的名称类型 如: .cn
二级域:由个人或组织在internet上使用的注册名称 如:mageedu.com
子域:已注册的二级域名衍生的域名,也就是网站名 如:www.mageedu.com
主机名:通常表示DNS域名的最左侧标签来标识网络上特定的计算机如: ns1 ns1.www.mageedu.com
Dns服务的工作过程
当 DNS 客户机需要查询程序中使用的名称时,它会通过查询本地DNS服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应答的问题
1. 指定DNS 域名,表示为完全合格的域名 (FQDN)
2. 指定查询类型,可根据类型指定资源记录
3. DNS域名指定的类别
对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录
DNS 查询以各种不同的方式进行解析。客户机有时可使用之前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归查询
另外,客户机自己也可尝试联系其他的DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代查询,即DNS服务器之间的交互查询就是迭代查询。
比如说:
1. 在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析
2. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,看是否有这个网址映射关系,如果有,直接返回,完成域名解析
3. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性
4. 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性
5. 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机
6. 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机
注:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询!
===========================================================================================
二、DNS缓存服务器
1、规划
NS服务器是:172.16.14.5
www服务器是:172.16.14.6
2、安装软件包:
可以采用yum安装。
源码包官方网站下载https://www.isc.org/downloads/
本博客主要以rpm安装方式进行,我们使用(CentOS6.6)bind-9.8.2-0.30.rc1.el6.x86_64
3、配置文件细解
bind服务进程主配置文件/etc/named.conf
区域的定义,每个选项后面一定要加分号;
options { #定义全局选项 |
区域配置文件 /etc/named.rfc1912.zones
区域数据文件 /var/named/
服务控制脚本 /etc/rc.d/init.d/named
可使用 service named start|stop|restart|reload 启动、停止、重启、重新加载
也可使用 rndc start|stop|reload|status 启动、停止、重新加载、查看状态
4.DNS资源记录类型
1 2 3 4 5 6 7 8 |
$TTL 600 #TTL:否定应答时常 @ IN SOA [FQDN]magedu.com. admin.com.[管理员邮箱] ( 2013081001; serial #版本号(最长为10位数字) 1D; refresh #定义检查刷新时间 1H; retry #定义重试时间 1W; expire #定义过期时间 3H ); minimum #定义否定答案时长 SOA:起始授权记录 |
时间单位:M(分钟)、H(小时)、D(天)、W(周)、默认单位是秒
NS:区域名称-->主机名 如: magedu.com. IN NS ns1.magedu.com
MX:(邮件) 区域名称-->FQDN 如: magedu.com. IN MX 10 mail.magedu.com. #数字(0-99)越小级别越高
mail.magedu.com. IN A 172.16.14.6
A:FQDN-->IPv4
AAAA:FQDN-->IPv6
PTR:Ip-->FQDN 指针记录 CNAME:FQDN-->FQDN 别名记录
5. 配置缓存服务器
主配置文件 vim /etc/named.conf
1 2 3 4 5 6 7 |
options { // listen-on port 53 { 127.0.0.1; }; #把本行注释默认只监听127.0.0.1的53端口 // listen-on-v6 port 53 { ::1; }; #把本行注释,我们不使用IPv6 directory "/var/named"; #定义区域数据文件存放目录 // allow-query { localhost; }; #把本行注释,默认只允许本地查询 recursion yes; #是否允许递归 }; |
打开区域配置文件,可以只保留这两个区域 vim /etc/named.rfc1912.zones
1 2 3 4 5 6 7 8 9 10 |
zone "localhost" IN { #定义本地解析区域 type master; #定义区域类型为主 file "named.localhost"; #定义数据文件 allow-update { none; }; #是否允许更新 }; zone "0.0.127.in-addr.arpa" IN { #定义反向解析区域 type master; #定义区域类型为主 file "named.loopback"; #定义数据文件 allow-update { none; }; #是否允许更新 }; |
保存并退出,使用 named-checkconf检查脚本是否有语法错误
启动DNS服务器,DNS进程为named:
1 2 |
[root@localhost ~]# service named start |
修改本地DNS地址为本机:echo "nameserver 172.16.14.5">> /etc/resolv.conf
使用dig命令测试解析根:dig -t NS . @172.16.14.5 -t:指定资源记录类型
6、把DNS服务加入到开机启动项
===========================================================================================
三、配置主从DNS服务器
1、ip规划: NS服务器master:172.16.14.5 | slave:172.16.14.6
2、在master和slave上安装bind
yum -y install bind
bind的主配置文件:/etc/name.conf;
配置文件中主要讲解dns服务的区域定义与工作属性;而bind的配置文件属性也比较独特,不允许其他用户读写;
创建正向区域解析文件
vim /var/named/stu14.com.zone
创建反向区域解析文件
vim /var/named/14.16.172.zone
检查区域配置文件
修改区域配置文件的权限为640,并修改其属组
检查语法是否有错误;
named-checkconfig
检测区域配置文件:
named-checkzone "stu14.com" /var/named/stu14.com.zone
named-checkzone "14.16.172.in-addr.arpa" /var/named/14.16.172.in-addr.arpa
启动named后,使用dig命令测试A记录与NS记录:dig -t A www2.stu14.com @172.16.14.5
测试NS记录
从服务器配置
前期准备工作与master相同
编辑 vim /etc/named.rfc1912.zone
修改一下主服务器(172.16.14.5)的主配置文件,允许从服务器区域传送:
修改主服务器的正向与反向区域配置文件,添加从服务器记录信息
修改反向区域配置文件
重启named :service named restart
验证从服务器是否同步文件:
验证从服务器是否同步文件:
DNS服务器添加一条正向解析的记录并重新加载配置文件,从服务器/var/named/slaves/下正向区域文件则会同步序列号及DNS新添加的一条正向解析记录;
本文出自 “囊萤映雪” 博客,转载请与作者联系!