DNS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS相关的知识,希望对你有一定的参考价值。
DNS服务机——主机名控制者
由于人们对文字的记忆比数字高,纯粹使用TCP/IP这些数字是很难记忆的 为了适应人们的习惯 DNS服务帮我们将主机名解析成ip 这样只要记住主机名就可以上网(使用internet了)
一 什么是DNS(Domain Name System,DNS)
主机名自动解析为ip
最早期 利用/etc/hosts文件将主机名和IP做一个对应 如此我们就可以通过主机名获主机的ip了 但该文件的缺陷是主机名与ip的对应无法在所有计算机内更新
分布式,阶层式主机名管理架构 :DNS架构
DNS是一种因特网的通信协议名称,bind是提供DNS服务的软件,软件提供的程序名为named
FQDN(fully qualified domain name)完整主机名 如www.westos.org
Domain 区域(即在某个地区)
www.nage.com 是主机名 nage.com .com 这是域名 域是一个范围
DNS是分阶层的,例如注定层的.tw 接着.edu.tw .ksu.edu.tw www.ksu.edu.tw 分别代表不同的主机
通过DNS查询主机名ip的流程
DNS是以类是树形结构的形态来进行主机名的管理的 所以每一台DNS服务器都仅管理自己的下一层主机名的转译而以,至于下层的下层,就交给下层的dns主机来管理 管理如下:
1 收到用户的查询要求 先查看自己本身有没有记录,若无则向.(root)查询
2 向最顶层的.(root)查询 用户向.(root)询问www.ksu.edu.tw在哪里但是由于.(root)只记录了.tw的信息,此时.(root)会告知:我不知道者台主机的ip 不过你可以向.tw去询问,我给你说.tw的ip
3 向第二层的.tw服务器查询 用户又到.tw那里查询www.ksu.edu.tw的信息 可是.tw说我不知道 我给你说.edu.tw的ip 你去问他
4向第三层.edu.tw服务器查询 客户又到.edu.tw那里查询 .edu.tw告诉他人你去.ksu.edu.tw那里查询 我给你他的ip
5 向第四层.ksu.edu.tw服务器查询 客户端找到.ksu.edu.tw这台服务器,.ksu.edu.tw这台服务器说没错www.ksu.edu.tw这台主机名使我管理的我给你说他的ip是什么 这是就找到了www.ksu.edu.tw这台主机的Ip了
6记录缓存并回报用户 查到正确的ip之后 到再次有人要查询www.ksu.edu.tw的时候 就不用再跑一次这样的流程了 因为这台只记得dns会记录一份查询的结果在自己的缓存当中 以方便响应下一次的相同要求 当然那个cache当中的数据是有时间性的 当过了nds设置记忆的时间 通常是24小时 该记录就会被释放
这个分层查询的过程就是这样 这样分层查询的好处是:1 主机名修改仅需通知自己的dns即可 不需通知其他人 2 DNS服务器对主机名解析结果的缓存时间
递归: A 《 =》 B 《 = 》C A去找B B再去找A 称为递归
迭代:A 《=》B###B把消息给A说了之后 A再去找C 这种称为迭代
A 《=》 C
迭代:请求者要发出多次请求才会得到答案 cdn就是迭代的方法
3 可持续向下授权(子域名授权)
例题 通过dig 实现.tw-.edu.tw-.ksu.edu.tw-www.ksu.edu.tw查询 并分析每个查询阶段的DNS服务器有几台
解答 dig +trace www.ksu.edu.tw ##trace跟踪 追踪的意思
NDS使用的port number UDP TCP 53这两个port 通常DNS是以UDP这个较快速的数据传输协议来查询的 但是如果查询不到时 就会再次以TCP这个协议来查询。所以DNS的daemon会同时启动UDP TCP这两个协议的53端口 记得防火墙也要同时放行UDP TCP53这两个端口
DNS数据库的记录 正解 反解 zone的意义
正解:从主机名查询到ip的流程
反解:从ip反解析到主机名的流程
不管是正解还是反解 每个与的记录就是一个区域(zone)
谁可以申请正解的DNS服务器架设呢 答案是都可以 只要该域没人使用 那谁先强到谁就可以使用 正解域通常需要以下几种标志:
正解的设置权以及DNS正解Zone记录的标志
SOA 就是开始验证(start of authority)的缩写
NS 就是名称服务器(name server)的缩写 记录DNS服务器
A 就是地址(address)的缩写 记录ip
反解的设置权以及DNS反解zone记录的标志
PTR就是指向(PoinTeR)的缩写 后面记录的数据就是反解到主机名
一个正解或一个反解就称为一个zone
Master /Slave架构
一般一台Master 两台Slave
不论是Master还是Slave服务器 都必须同时提供DNS服务才好 因为在DNS系统当中 域名的查询是“先进先出”的状态 每一台DNS的数据库内容需要完全一致 否则就会赵成客户端找到的ip是错误的
Master/Slave数据的同步化过程 无论是Master/slave数据库都会有一个代表数据库新旧的“序号” 这个序号值的大小会影响是否进行更新操作 更新的方式有两种:
1 Master主动告知 例如master自动修改了数据库,数据库序号变大,重新启动DNS服务后 master会主动告知slave来更新数据库 这样就能够实现数据库的同步
2 slave 主动提出要求 slave 会定时向master查看数据库序号大小 当发现master数据库序号比自己大时 slave就会主动更新自己的数据库
Client端的设置
/etc/resolv.conf 这个就是ISP的DNS服务器IP记录处
/etc/nsswitch.conf 这个文件则是用来决定先要使用/etc/hosts还是 /etc/resolv.conf的设置
DNS的ip可以设置多个 因为当第一台DNS宕机时 我们客户端可以使用第二台来查询 不过在网络正常情况下 永远都只有第一台DNS被用来查询 这有点像备份
例题 我的主机使用DHCP获取ip 但当我修改过/etc/resolv.conf之后 隔不多久这个文件又变成原来的样子 这是什么原因 要这么处理
解 因为使用DHCP系统会主动使用DHCP服务器传来的数据进行系统配置文件的修订 因此你要告诉系统不要用DHCP传来的数值修改服务器配置文件 在/etc/sysconfig/network-scripts/ifcfg-eth0等相关文件里面加上一行 PEERDNS=no 然后重新启动网络即可
DNS的正反解查询命令 host nslookup dig
dig www.westos.org 正解
dig -x www.westos.org 反解 反解时ip为172.25.254.100 则会变成100.254.25.172.in-addr.arpa.这个模样
查询域管理者的相关信息whois whois是有jwhois这个软件提供的 如果找不到whois时 就可以yum install -y jwhois
Whois这个命令可以查询到当初注册某个domain的用户的相关信息
DNS服务器的软件 种类与caching only DNS服务器设置
搭建dns所需要的软件 rpm -qa | grep ‘^bind’
Bind-libs-9.7.0-.... 给bind和相关命令使用的函数库
Bind-utils-9.7.0-...这个是客户端查找主机名的相关命令
Bind-9.7.0-.....bind主程序所需软件
Bind-chroot-9.7.0...将bind主程序关在家里面
Bind-chroot chroot代表change to root(根目录) centos6.x默认将BIND锁在/var/named/chroot目录中
/etc/named.conf主配置文件 这个文件可以规范zone file的完整文件名
单纯的cache-onlyDNS服务器与forwarding功能
没有自己公开的DNS数据库的服务器为cache-only(唯高速缓存)DNS server 即这个DNSserver 值有缓存搜索结果的功能 它本身没有主机名与ip正反解的配置文件 完全是由对外的查询来提供他的数据库
DNS服务的详细配置
1 DNS服务器的架设需要上层DNS的授权才可以成为合法的DNS服务器
##如果我们尚未向上层ISP注册合法的域名 所以我们就没有权力架设合法的DNS服务器了
2 配置文件位置 可参考/etc/sysconfig/named 目前BAID程序以运行chroot
3 named 主配置文件 /etc/named.conf
4 每个正反解区域都需要一个数据库文件,而文件名则是在/etc/named.conf里设置
5 当DNS查询时 若本身没有数据库文件 则前往root(.) 或forwarders服务器查询
6 named是否启动成功 务必要查询/var/log/messages内的信息
正解文件记录的数据(Resource Record,RR )
A后接ip NS后接主机名
A查询ip的记录
NS 查询管理区域名(zone)的服务器主机名
SOA 查询管理域名的服务器管理信息
CNAME 设置谋主机名的别名(alias)
MX 查询某域名的邮件服务器主机名
反解文件记录的RR数据
dig -x www.westos.org
解析后的ip反过来写 在结尾后加上.in-addr-arpa.的结尾字样即可
PTR就是反解
DNS启动与查看防火墙
/etc/init.d/named start
Chkconfig named on
Tail -n 30 /var/log/messages | grep named
日志错误会有语法错误和逻辑错误两种
测试与数据库更新
通过client端的查询功能 目的是检测数据库有无错误
协同工作的DNS:slave DNA及子域授权设定
Slave DNS的特点(备用DNS 一般服务端最少要有两台DNS才行)
1 为了不间断的提供DNS服务 你的领域至少要有两台DNS作为查询的功能
2 这几台DNS服务器应该要分散在两个以上的不同ip网段才好
3 为管理方便 通常除了一台做masterDNS 其他都用来做slaveDNS的模式
4 slave DNS本身没有数据库 他的数据库是由masterDNS所提供
5 master/slave DNS要有可以相互传输的zone file信息才行 这部分需要在/etc/named.conf的设置中加以辅助
Master DNS权限的开放
1 修订named.conf 主要修改zone参数内的allow-transfer项目
Vim /etc/named.conf
Allow-transfer{172.25.254.90} ##在这里添加slave的ip
2 在zone file 里面添加NS标志 要注意需要有A(正解)及PTR(反解)的设置
Vim /etc/named/named.westos.org ##以master主机名自己创建的文件
Vim /etc/named/named.ip
在你的zone file文件中添加NS标志 IN NS
再重启即可 /etc/init.d/named restart
Slave DNS的设置及数据库权限问题
由于slave DNS也是DNS服务器 所以也要安装bind bind-chroot等软件 接下来设置named.conf 由于master/slave的数据库是一样的 理论上named.conf就是大同小异的了 唯一的区别是zone type 类型的差异 以及声明master在那里就可以了 由于zone file 是从master取得的 通过named这个程序来主动建立起需要的zone file 以此这个zone file放置的目录权限就很重要了
配置子域DNS服务器:子域授权课题
除了master/slave 需要协调DNS服务器共同提供服务外 DNS如果有上层 下层关系时该如何设置?做法如下:
1 上层DNS服务器:只需要添加zone file 的NS与A即可
Vim /etc/named/named.westos.org
/etc/init.d/named restart
及上层DNS服务器只要在westos.org那个zone file内 增加指定NS并指向下层DNS的主机名和IP(A)即可 而zone file的序号也要添加才行
2 下层DNS服务器:需要有完整的zone相关设置
修改named.conf 增加zone的参数 假设文件名为named.niki.westos.org
Vim /etc/named.conf
/etc.init.d/named restart
即下层DNS服务器 申请的域名必须是上层DNS提供的名称 并告知上层DNS管理员 我们这个zone 所需指定的DNS主机名与对应的ip即可 然后就开始设置自己的zone 与zone file相关数据
1 在internet当中 任何一台合法的主机都具有独一无二的主机名 这个主机名包含了hostname+domain name 并称为 Fully Qualified Name(FQDN)
2 为克服人类对ip不易记忆的困扰而有名称解析器的产生 首先是/etc/hosts 而后则是DNS系统
3 目前Unix like的机器中 都是以BIND这个伯克莱大学开发的软件来架设DNS服务器的
4 DNS是个协议的名称 bind是个软件 这个软件提供的程序是named
5 在DNS系统中 每一笔记录我们就称他为RR(Resource Record)
6 在DNS系统中 正解是有主机名找ip 反解则是ip找主机名 zone则是一个或者是部分域的设置值
7 在BIND9之后 默认的情况下named 已经做了chroot的动作
8 Slave主机自身并没有自行设置zone file 其zone file是由master主机传来的 因此master主机必须要针对slave主机开放allow-transfer的设置项目才行
9 整个DNS查找的流程当中 若找不到本身的数据 则会向root(.)要求资料
10 正解的记录(record)主要有SOA A MAX NS CNAME TXT HINFO等
11 反解的记录主要有 SOA PTR等
12 DNS查询的命令主要有host nslookup dig whois等
在载入了named这个daemon之后 请务必前往/var/log/messages里面察看是否成功开启
以上是关于DNS的主要内容,如果未能解决你的问题,请参考以下文章
DNS简介DNS工作原理DNS正反向解析的搭建DNS主从备份DNS子域创建