什么是DNS的资源记录,记录有哪些类型?
DNS是域名系统(DomainNameSystem)。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析系统来完成,DNS就是进行域名解析的系统。
DNS 包括七大资源记录类型:
SOA (起始授权机构) 定义了该与众的权威名称服务器
NS (名称服务器) 表示某区域的权威服务器鹤SOA中指定的该区域的主服务器的辅助服务器
A (主机) 列出了区域中的FQDN(完全合格的域名) 到ip 地址的映射
PTR(指针) 相对于A资源记录,ptr记录是把ip地址映射到FQDN
MX 邮件交换器记录,向指定的邮件交换主机提供消息路由
SRV (服务) 列出了正在提供特定服务的服务器
CNAME (别名) 将多个名字映射到同一台计算机上,便于访问。
解析日志通常不会直接存起来,
需要在 /etc/namedconf 里的 logging 设置,
除了 xfer-log 的频道外,再加上以下的内容:
由於我这边dns的解析日志非常的大,
你可自行调整 versions, size 之值,以适合你自己的环境:
logging {
channel querylog {
file "/data/logs/querylog" versions 55 size 900m;
print-time yes;
severity debug 3;
};
category queries { querylog; };
};
当named重新启动后,tail -f querylog 就会看到疯狂的解析过程。
一般情况下,新建或修改域名解析,很快就可以生效。但有时也会存在一些解析较慢或解析长时间不生效的问题。出现这种情况,除了网络不可用、域名被劫持等外部因素外,也可能与域名自身状态以及解析设置有关。
1域名过期没有及时续费
如果域名到期未能及时续费,就会导致原解析失效,所以网站管理者要时刻关注域名的到期情况,及时续费,避免因域名过期导致的解析不生效或者域名被抢注等情况的发生。
2域名未通过实名认证
根据《中华人民共和国网络安全法》和《中国互联网络域名管理办法》的规定,需对com/net/cn等后缀的新注以及存量域名进行实名认证,如果未能通过实名认证,注册局将暂停域名解析。所以针对这种情况,在域名注册成功后需要及时提交材料完成实名认证,一般情况下实名认证通过后,域名就会恢复正常解析状态。
3域名状态出现异常
如果出现域名解析长时间不生效,就需要检查一下域名状态,可以通过whois工具查看域名当前的状态是否出现了异常。如果域名的状态是clienthoold或severhold状态,说明域名是被禁止解析的,在这种状态下,即使设置了域名解析,域名也无法被访问到,此时需要联系域名服务商了解情况,尽快恢复正常状态。
一般情况下,当域名处于以下几种状态时,域名是无法被解析的:
Pending delete(域名过期,赎回期)
Redemption period(域名过期,赎回期)
Clienthold(暂停解析)
Serverhold(暂停解析)
Inactive(未设置 DNS)
如果是域名状态出现了问题,需要及时联系域名注册商查明情况并解决。
1没有设置默认解析线路
如果在进行多线解析时没有设置默认解析线路,也会出现解析不生效或者无法访问的问题。所以这种情况下,需要先添加一条默认解析,这样才能保证当用户网络类型无法确认或者不在设置的网络类型时系统会自动解析到该默认地址上。
2权威和递归DNS的解析未生效
如果刚修改过域名解析,解析不能及时生效,那么需要检查下权威DNS和递归DNS解析记录是否修改成功。因为在网站访问过程中,直接影响用户端解析生效的是运营商递归服务器,间接影响用户端解析生效的是权威DNS服务器。
首先通过“nslookup +要检测的域名”,查看递归服务器结果,然后再“nslookup +要检测的域名 + dns服务器地址”,查看权威服务器结果。
如果递归服务器未生效,权威服务器已生效,表明域名解析刚添加不久,全球的递归服务器还没有完全同步,需要等域名配置的TTL值失效后再检测是否生效。如果TTL值过后,再次检测递归服务器仍然未生效,则可能是域名劫持或缓存投毒。如果递归和权威服务器都没有生效,则表明域名解析没有添加成功,需要检查情况并重新添加。
3修改解析服务器未生效
如果是修改了解析服务器,则需要等一定的缓存时间,全球的DNS服务器才能同步生效。一般来说,变更了解析服务器,需要等48小时才能生效。在此期间,由于递归服务器的缓存时间不同,可能会出现有的DNS请求新服务器,有的会请求旧的服务器。所以这种情况下,要耐心等待,不得在此期间对DNS解析记录进行修改,以免影响正常的DNS解析。
…
DNS解析不生效的原因很多,但归根结底不外乎域名状态和解析设置这两种情况,所以我们在遇到解析不生效情况时,仔细检查这两种情况,然后逐一排查就能快速定位故障原因,并针对性进行应对。
● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
● DNS域名的指定类别。
对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如hostahellocompanycom,并且指定的查询类型用于通过该名称搜索地址资 源记录。系统将把DNS 查询当作客户机向服务器提出的两部分问题,如“对于名为 hostnamehellocompanycom 的计算机,你有没有地址资源记录”当客户机从服务器接收应答时,它读取并解释应答的地址资源记录,以了解它通过名称提问的计算机的 IP 地址。
DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代。
总之,DNS 的查询过程按两部分进行:首选,名称查询从客户机开始并传送至解析程序(DNS客户服务)进行解析;其次,不能就地解析查询时,可根据需要查询DNS服务器来解析名称。DNS 查询的过程如下图所示。
如查询过程的初始步骤所示,DNS 域名由本机的程序使用。该请求随后传送至 DNS 客户服务,以通过使用就地缓存的信息进行解析。如果可以解析查询的名称,则查询将被应答,并且此过程完成。其中,本地
解析程序的缓存可从以下2个可能的来源获取名称信息:
● 如果主机文件就地配置,则来自该文件的任何主机名称到地址的映射都将在DNS 客户服务启动时预先加载到缓存中。
● 从以前DNS查询应答的响应中获取的资源记录将被添加至缓存并保留一段时间。
如果此查询不匹配缓存中的项目,则解析过程继续进行,客户机查询 DNS 服务器来解析名称。
接下来查询 DNS 服务器,当本地的DNS不能就地解析查询时,可根据需要查询 DNS 服务器来解析名称。如图4-1所示,客户机将查询首选 DNS 服务器。在此过程中使用的实际服务器是从全局列表中选择的。当 DNS 服务器接收到查询时,首先检查它能否根据在服务器的就地配置区域中获取的资源记录信息作出权威性的应答。如果查询的名称与本地区域信息中的相应资源记录匹 配,则服务器作出权威性的应答,并且使用该信息来解析查询的名称。
如果查询的名称没有区域信息,则服务器检查它能否通过本地缓存的先前查询信息来解析名称。如果从中发现匹配的信息,则服务器使用它应答查询。接着,如果首选服务器可使用来自其缓存的肯定匹配响应来应答发出请求的客户机,则此次查询完成。
如果查询名称在首选服务器中未发现来自缓存或区域信息的匹配应答,则查询过程可继续进行,使用递归来完全解析名称,包括来自其他 DNS 服务器的支持,以帮助解析名称。在默认情况下,DNS 客户服务要求服务器在返回应答前使用递归过程来代表客户机完全解析名称。在大多数情况下,DNS 服务器的默认配置支持递归过程,如下图所示。
为了使 DNS 服务器正确执行,首先需要在DNS 域名空间内存放其他DNS服务器的一些有用的联系信息。该信息以根线索的形式提供,它是记录初步资源的一个列表,可用来定位一些 DNS 服务器,这些服务器对 DNS 域名空间树的根具有绝对控制权。根服务器对 DNS 域名空间树中的根域和顶级域具有绝对控制权。DNS 服务器可通过使用根线索搜索根服务器来完成递归过程。
例如,当客户机查询单个DNS服务器时,考虑使用递归过程来定位名称 hostexamplemicrosoftcom。此过程在 DNS 服务器和客户机首次启动,并且没有可帮助解析名称查询的当地缓存信息时进行。
首先,首选服务器分析全名并确定对于顶级域com具有绝对控制权的服务器的位置。随后,对com DNS 服务器使用迭代查询,以获取microsoftcom服务器的参考信息。然后参考性应答从microsoftcom服务器传送到 examplemicrosoftcom的 DNS 服务器。最后,与服务器 examplemicrosoftcom 联系上。因为该服务器包括作为其配置区域一部分的查询名称,所以,它向启动递归的源服务器作出权威性的应答。当源服务器接收到表明已获得对请求查询的权威 性应答的响应时,它将此应答转发给发出请求的客户机,这样,递归查询过程就完成了。
在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的。这个现象发生的机率比较大,所以本文将从零起步教给各位读者一些基本的排除DNS解析故障的方法。
一、什么是DNS解析故障
一般来说像我们访问的www163com这些地址都叫做域名,而众所周知网络中的任何一个主机都是IP地址来标识的,也就是说只有知道了这个站点的IP地址才能够成功实现访问操作。
不过由于IP地址信息不太好记忆,所以网络中出现了域名这个名字,在访问时我们这需要输入这个好记忆的域名即可,网络中会存在着自动将相应的域名解析成IP地址的服务器,这就是DNS服务器。能够实现DNS解析功能的机器可以是自己的计算机也可以是网络中的一台计算机,不过当DNS解析出现错误,例如把一个域名解析成一个错误的IP地址,或者根本不知道某个域名对应的IP地址是什么时,我们就无法通过域名访问相应的站点了,这就是DNS解析故障。
出现DNS解析故障最大的症状就是访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。
二、如何解决DNS解析故障:
当我们的计算机出现了DNS解析故障后不要着急,解决的方法也很简单。
(1)用nslookup来判断是否真的是DNS解析故障:
要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。
第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
第二步:输入nslookup命令后回车,将进入DNS解析查询界面。
第三步:命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的DNS服务器IP为202106020。
第四步:接下来输入你无法访问的站点对应的域名。例如笔者输入wwwsoftercom,假如不能访问的话,那么DNS解析应该是不能够正常进行的。我们会收到DNS request timed out,timeout was 2 seconds的提示信息。这说明我们的计算机确实出现了DNS解析故障。
小提示:如果DNS解析正常的话,会反馈回正确的IP地址,例如笔者用wwwsohucom这个地址进行查询解析,会得到name:sohucom,addresses:61135133103,61135133104的信息。
2)查询DNS服务器工作是否正常:
这时候我们就要看看自己计算机使用的DNS地址是多少了,并且查询他的运行情况。
第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
第二步:输入ipconfig /all命令来查询网络参数。
第三步:在ipconfig /all显示信息中我们能够看到一个地方写着DNS SERVERS,这个就是我们的DNS服务器地址。例如笔者的是202106020和20210646151。从这个地址可以看出是个外网地址,如果使用外网DNS出现解析错误时,我们可以更换一个其他的DNS服务器地址即可解决问题。
第四步:如果在DNS服务器处显示的是自己公司的内部网络地址,那么说明你们公司的DNS解析工作是交给公司内部的DNS服务器来完成的,这时我们需要检查这个DNS服务器,在DNS服务器上进行nslookup操作看是否可以正常解析。解决DNS服务器上的DNS服务故障,一般来说问题也能够解决。
(3)清除DNS缓存信息法:
当计算机对域名访问时并不是每次访问都需要向DNS服务器寻求帮助的,一般来说当解析工作完成一次后,该解析条目会保存在计算机的DNS缓存列表中,如果这时DNS解析出现更改变动的话,由于DNS缓存列表信息没有改变,在计算机对该域名访问时仍然不会连接DNS服务器获取最新解析信息,会根据自己计算机上保存的缓存对应关系来解析,这样就会出现DNS解析故障。这时我们应该通过清除DNS缓存的命令来解决故障。
第一步:通过“开始->运行->输入CMD”进入命令行模式。
第二步:在命令行模式中我们可以看到在ipconfig /中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令。
第三步:执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。
第四步:接下来我们再访问域名时,就会到DNS服务器上获取最新解析地址,再也不会出现因为以前的缓存造成解析错误故障了。
(4)修改HOSTS文件法:
修改HOSTS法就是把HOSTS文件中的DNS解析对应关系进行修改,从而实现正确解析的目的。因为在本地计算机访问某域名时会首先查看本地系统中的HOSTS文件,HOSTS文件中的解析关系优先级大于DNS服务器上的解析关系。
这样当我们希望把某个域名与某IP地址绑定的话,就可以通过在HOSTS文件中添加解析条目来实现。
第一步:通过“开始->搜索”,然后查找名叫hosts的文件。
第二步:当然对于已经知道他的路径的读者可以直接进入c:\windows\system32\drivers\etc目录中找到HOSTS文件。如果你的系统是windows 2000,那么应该到c:\winnt\system32\drivers\etc目录中寻找。
第三步:双击HOSTS文件,然后选择用“记事本”程序将其打开。
第四步:之后我们就会看到HOSTS文件的所有内容了,默认情况下只有一行内容“127001 localhost”。(其他前面带有#的行都不是真正的内容,只是帮助信息而已)
第五步:将你希望进行DNS解析的条目添加到HOSTS文件中,具体格式是先写该域名对应的IP地址,然后空格接域名信息。例如笔者添加了“211153801 wwwftedugovcn”与“108201 wwwftedugovcn”两个条目。
第六步:设置完毕后我们访问wwwftedugovcn时就会自动根据是在内网还是外网来解析了。
三、总结:
通过上面介绍的四个步骤,我们就可以解决大部分DNS解析问题了,这几个方法中前三个是循序渐进的一步步解决DNS解析故障,而最后一个修改HOSTS文件则是在实在没有办法的时候,一种权宜之计。当然不管是通过哪种方法,我们都可以解决因为DNS解析错误带来的网络故障。
0条评论