目睹DNS怪现状 本地对DNS的设定故障分析

DNS发展简介 改文档简单介绍了DNS的发展及部署情况,详细描述了我国DNS的现状. 立即下载
   DNS(Domain Name System)在tcp/ip网络中,一个用户通过指定一个名字就可与其他用户进行通信,这个名称的规定和解析系统就叫域名系统。我们常用DNS代指域名解析服务(Domain Name Service),它最基本的功能就是将我们在IE地址栏中输入的URL域名(如:www.yesky.com )解析成网络上唯一的Internet地址即IP(如:218.201.41.19),这个工作由网络上的DNS服务器来完成。我们每天上网最频繁的操作恐怕就属发出DNS请求来访问网站了,而我遇到的两个怪现象都跟本地系统对DNS的相应设定有关。

  怪现状之一:在一以开启NAT路由的ADSL MODEM为网关设备的局域网中,一台主机在访问一个平时非常稳定的大站点时,出现了“该页无法显示”的状况,刷新多次也未能正常,而同一时刻在别的主机上却登录正常。过了几分钟,这台故障主机又莫名其妙的好了,访问此站点时一切正常了。

  分析:这种情况,由于其他的网络操作都正常,故障也不时常发生,一般用户很可能会认为自己的系统、IE浏览器和防火墙设置哪里出现了小冲突。其实这个故障的现象是由于本地系统的DNS缓存服务造成的。

  在win2000以上的MS系统中,系统会自动的将从DNS服务器上的查询结果保存在本地的DNS缓存中(每次启用DNS缓存时,Hosts文件中记录也会被载入缓存中),那么下次再有重复的查询请求,系统会优先查询本地缓存,如果已有对照的条目则不再向DNS服务器发起请求,缓存中无记录时才查询DNS服务器。本来设定此DNS缓存的目的是为了能减少DNS服务器的负荷,不用为同一个域名解析多次,也同时能加快客户主机上的访问速度。在DNS缓存中记录条目每隔一段时间将被更新一次,长时间不用的条目将被丢弃,这个时间间隔称为生存时间(TTL)。默认情况下,得到肯定响应的条目TTL为86,400 秒(1 天),否定响应的TTL win2000下是300秒(5分钟),在winXP和2003中 是 900 秒(15 分钟)。正是由于这个否定响应的TTL时间存在,所以才造成了故障主机在得到一次否定的DNS解析之后一段时间内无法再到DNS服务器上查询,只有等TTL时间过后,这条否定的记录被清除,才能恢复。

  遇到这种情况,我们能采取的最简单手段是刷新DNS,也就是删除 DNS 解析器缓存中的条目。点击“开始”-“运行”-输入cmd并点击“确定”,在命令提示符窗口中键入:ipconfig /flushdns,然后按 Enter 键。你将会收到“Successfully flushed the DNS Resolver Cache.”的显示,这时你的DNS缓存已被重置,主机发起的查询请求将再次发向DNS服务器。

  注:查看本地DNS缓存记录的命令为:ipconfig /displaydns。你将会看到包括本地Hosts文件记录和已访问过的站点在内的所有DNS记录。如图1所示:



图 1

  如果记录太多显示不全,还可以用如下命令将其保存成文本文件:

  ipconfig /displaydns >log.txt

  这个log.txt文档将生成在输入此命令的路径文件夹下。

  我们还可以通过调整注册表中TTL设定的键值来改善此种故障的状况。关于DNS缓存机制设定的键值都在如下路径中:

  HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Dnscache/Parameters

  点击“开始”-运行-键入regedit并确定,展开注册表到上面的路径中,在右边窗口可以看到如下图2中所示的键值:



图 2 windows2000中的DNS缓存设定键值

  其中MaxCacheEntryTtlLimit为DNS缓存条目TTL最大值,在XP和2003系统中此项名称为MaxCacheTtl。肯定响应条目的TTL,将由在DNS解析器收到的查询响应中指定的秒数和此项数值两者中最小值决定。如果将此项键值设为1秒,则DNS 缓存看起来已被禁用。图中的NegativeCacheTime为否定响应条目的TTL,XP和2003中此项名称为MaxNegativeCacheTtl。可以将此项键值改小或直接改为0,则不缓存否定的响应。而NetFailureCacheTime子项为常规网络缓存失败的控制时间,默认30秒。若系统重复发送多次DNS请求,而完全得不到任何DNS服务器的响应,系统会认为网络连接失效,在默认30秒的时间中将不会再向外发送任何DNS查询请求,此项也可减小或置0。

  另外,在XP中还使用了“子网优先级划分”机制。如果查询的域名从 DNS 服务器收到多个 IP 地址映射,并且记录中包含客户主机直连网段范围的IP地址,那么系统DNS解析器会优先放置此记录在缓存中。也就说在实际访问中,客户端将优先采用此IP作为肯定响应的DNS解析,这样会强制客户机连接到比较靠近它们的网络资源,从而减少了子网间的网络通信量。如果我们不想让系统这样做,可以通过在此路径的注册表项中添加一个值为 0(REG_DWORD 数据类型)的 PrioritizeRecordData 注册表条目来禁用“子网优先级划分”功能。

  当然,我们还可以通过在命令提示符中键入命令“net stop dnscache”和“net start dnscache”来暂时停止和重新开启DNS缓存服务。而想要永久停止此服务,需要到“我的电脑”图标上右键单机-“管理”-展开“服务和应用程序”-“服务”(如图03),在右面窗口中找到“DNS Client”服务项上右键单击-“属性”,然后在“启动类型”中选择“已禁用”即可。在WinXP等系统中此项服务名称还可能会显示为“DNS Cache”。要注意的是,禁止掉DNS缓存将使每次查询都发送到指定的DNS服务器,不利于访问速度。



图 3



图 4

  解决:当此主机再次遇到同样故障时,用刷新DNS缓存命令,果然快速解决了问题,肯定了是由DNS解析造成的问题。经过调整注册表键值也确实改善了故障持续的时间,但具体分析到此种故障几乎都集中在这台主机,同一时刻别的主机则没发生类似的情况,而且ISP的DNS服务器一般都是很稳定的,所以最后怀疑是主机的“本地连接”属性-“Internet连接(TCP/IP)”属性中“DNS服务器地址”设定有问题。经查看,其他主机都是直接设定的当地ISP给定的DNS服务器地址,而此故障主机的DNS设的是网关IP,也就是指向了那台启用了路由的ADSL MODEM,这种情况下ADSL MODEM充当DNS Proxy即DNS代理或叫DNS转发的角色(开启路由后,一般默认支持DNS转发,有些MODEM则需要手动启用此功能)。它将客户机发送的DNS请求转发到它所知的DNS服务器上去,而很可能是由于这台ADSL MODEM的软件性能不稳定,致使DNS转发时偶尔出错,造成了客户主机系统认为DNS解析被否定或失败。既然明白了故障起因,那就好办了。将此主机的DNS设定改为ISP给定的公网本地DNS服务器地址,果然以后不再出现同样的故障了,至此这一怪现状被彻底解决了。

  怪现状之二:朋友的局域网中原有一台Windows 2000 DNS服务器,自从将其升级为Windows Server 2003以后,他就不能访问一些网站了,但是升级过程中没出现任何的错误。

  分析:按照经验,这很可能是由于root Cache文件丢失或损坏造成的。这种情况可以使用 DNS 管理单元手动添加根目录提示、将硬盘上的 Cache.dns 文件替换为备份 Cache.dns 文件或替换为 windows Server 2003 CD 中的原始版本 Cache.dns 文件来解决。恢复方法如下:

  第一步:使用 DNS 管理单元更新根目录提示

  在非域控制器上:

  1. 单击“开始”,指向“管理工具”-“DNS”。 
  2. 在控制台树中,右键单击“服务器名”-属性”。(“服务器名”是指服务器的名称)
  3. 单击“根目录提示”选项卡,然后单击“添加”。
  4. 指定要添加的根服务器的完全限定域名称 (FQDN) 和 IP 地址,然后单击“确定”。

  在域控制器上:

  1. 点击“开始”-“运行”。在“打开”框中,键入 cmd,然后 “确定”,打开命令提示符窗口。
  2. 停止 DNS 服务。请在命令提示符处,键入 net stop dns,然后按 Enter 键。
  3. 将 Cache.dns 文件从 %SystemRoot%/System32/Dns/Samples 文件夹复制到 %SystemRoot%/System32/Dns 文件夹。在命令提示符处键入下面的行,然后回车即可:
  copy %systemroot%/System32/Dns/Samples/Cache.dns %systemroot%/System32/Dns
  如果系统提示您改写现有文件,请键入 y,然后按 Enter 键。(这里的 %SystemRoot%指本地系统所在文件夹根目录,如C:/windows)
  4. 点击“开始”,指向“管理工具”,然后单击“Active Directory 用户和计算机”。
  5. 在“查看”菜单上,单击“高级功能”。展开“系统”,展开“Microsoft DNS”,右键单击“Root DNS Servers”,然后单击“删除”。在提示确定删除时,单击“是”。 退出 Active Directory 目录服务用户和计算机 MMC 管理单元。
  6. 启动 DNS 服务。在命令提示符处键入 net start dns,然后按 Enter 键。
  7. 点击“开始”,指向“管理工具”,然后单击“DNS”。 
  8. 在控制台树中,右键单击“服务器名”,然后单击“属性”。 单击“根目录提示”选项卡,并确认根服务器是否显示在“名称服务器”列表中。
  9. 单击“开始”,指向“管理工具”,然后单击“Active Directory 用户和计算机”。
  10. 展开“系统”,展开“Microsoft DNS”,然后确认已重新创建了“Root DNS Servers”容器,并且该容器是否包含根服务器列表。

  第二步:复制Windows Server 2003 CD 中的 Cache.dns 文件覆盖损坏文件

  1. 放入Win2003 CD。点击“开始”,然后单击“运行”。键入 cmd,然后单击“确定”。
  2. 在命令提示符窗口中,键入下面的命令,在每一行之后按 Enter 键:

  光驱盘符(如E):
  cd i386
  expand cache.dn_ %systemroot%/System32/Dns/Cache.dns

  3.退出命令提示符。

  注:如果是从备份的Cache.dns文件恢复。那么需要先用net stop dns停止DNS服务,并用ren cache.dns cache.old将当前cache.dns文件改名,然后Copy备份文件到DNS目录。最后用net start dns将DNS服务重新启动。

  但是,经过了Cache文件的恢复之后,问题依旧没能得到解决。而且最奇怪的是,这种情况下仍能Ping通这些网站,至此问题陷入了僵局。最后,经过多方面的资料查询,了解到原来Windows2003中为DNS嵌入了新的扩展结构(Extension Mechanisms),默认情况下这个EDNS是启动的,它允许通过使用大于512KB的UDP包来改善性能。而很多防火墙基于安全的考虑,并不允许这么大的UDP包,会直接拒绝或丢弃它们。这就造成了网络和DNS服务一切正常的情况下无法访问一些网站的怪现状。

  解决:还是那句话,既然明白了故障起因,那就好办了。首先,可以查询防火墙供应商是否为这个问题发布了修正补丁,如果有直接升级就解决了。如果没有,那么可以暂时禁用此EDNS,等待补丁的发布。要禁用EDNS,先要安装Win2003 CD的支持工具中的命令行工具“dnscmd.exe”。然后,打开命令提示符窗口输入:dnscmd /config /enableednsprobes 0,按Enter键即可停用EDNS。当防火墙得到了升级修正之后,重新启用EDNS时,输入:dnscmd /config /enableednsprobes 1,按Enter键即可。至此,这一怪现状得到了完满解决。

  注:关于EDNS的更多详细信息,可以参看IETF的RFC 2671文档(http://www.ietf.org/rfc/rfc2671.txt?number=2671)和微软的官方文档(http://www.microsoft.com/resources/documentation/WindowsServ/2003/standard/proddocs/en-us/Default.asp?url=/resources/documentation/windowsserv/2003/standard/proddocs/en-us/sag_dns_imp_ednssupport.asp)。

告别全局搜索!7种SRP-PHAT快速算法实战对比:哪个更适合你的麦克风阵列? 本文深入探讨了7种SRP-PHAT改进算法在声源定位领域的实战表现,包括SRC、CFRC、SPF等方案。通过对比计算效率、定位精度和环境鲁棒性等核心指标,为不同场景(如会议室、智能家居、工业机器人)提供算法选型建议,帮助工程师优化麦克风阵列性能。 阅读详情

相关推荐

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3657

禁用windows DNS客户端缓存

禁用windows DNS客户端缓存 概要Windows 包含客户端域名系统 (DNS) 缓存。客户端 DNS 缓存功能可能会令人产生一个错误的印象:DNS“循环”不是从 DNS 服务器到 Windows 客户机进行的。如果您使用 ping 命令搜索同一个 A 记录域名,客户端可能会使用相同的 IP 地址。这种情况不同于 Windows 2000 以前的 Microsoft 操作系统。这

haiross的专栏 9752

如何用Timer模型处理多变量时间序列?附完整代码示例

本文深入解析了如何运用清华大学的Timer模型处理多变量时间序列预测任务。通过一个完整的智能工厂设备监控实战案例,详细介绍了从数据预处理、模型构建、训练调优到预测可视化的全流程,并提供了可运行的完整代码示例,帮助开发者掌握这一强大的时序分析工具。

weixin_29243063的博客 250

Win32API调用错误号与信息(9000-9999)

Author:水如烟  Namespace LzmTW.uSystem.uWindows.Win32API    Friend Class ErrCollection09        Private Collection As New Dictionary(Of Integer, String)        Private Shared Loader As ErrCollectio

水如烟 2047

MEG预处理-Brainstorm

Brainstorm下载和安装 去Brainstorm官网进行下载:打开网页后,点击左侧Download;在跳出来的界面中进行简单的注册,注册完成后可以进行下载 解压后得到“brainstorm3”的文件夹,里面包含Brainstorm工具包的所有文件,把这个文件夹放在某个路径如"E:\matlab_tools\brainstorm3"即可 同样在某个路径建立空的文件夹命名为:brainstorm_db用于工具包运行过程中自动存储生成的文件,所以这个文件中生成的数据不要手动移动删除 在Matlab中,把.

AxeChen的博客 6119

别再手动算K值了!ZEMAX中两种锥透镜建模方法详解(标准面 vs. 轴锥面)

本文详细解析了ZEMAX中锥透镜的两种建模方法:标准面与轴锥面。通过对比两者的精度、计算效率和适用场景,帮助工程师在激光整形、光束匀化等应用中做出最优选择,并提供了参数设置和异常排查的实用技巧。

weixin_42548874的博客 319

DNS 与EDNS0(DNS 的扩展名机制)

DNS报文主要使用53/UDP,什么时候会用到53/TCP? 根据RFC1035,对于DNS服务器,递归解析时用53/UDP,区传输因需要可靠传输,必须使用53/TCP。DNS服务器的标准实现必须同时支持53/TCP和53/UDP。RFC 1035中还指出,53/UDP上的UDP数据区(不包括UDP首部)不得超过512字节,发送时如果超过512字节,将被截断成5...

weixin_34265814的博客 3974

opencv的cmake报错

1、下载 ippicv_2021.8_win_intel64_20230330_general.zip、v0.1.2a.zip、opencv_videoio_ffmpeg.dll、opencv_videoio_ffmpeg_64.dll、ffmpeg_version.cmake。由于下载源在https://raw.githubusercontent.com,由于网络原因下载不顺畅,可以先找到文件下载到对应文件夹下,或者更改网络环境。ffmpeg_version.cmake文件,打开后显示如下, 另存即可。

nownow_的博客 1298

关于服务编程中禁止“停止”或“暂停”选项的问题

          今天写服务程序,一直未发现用什么方法能够禁止服务防止别人“暂停”或“停止”的方法,经再三分析,发现了在我们的 SERVICE_STATUS 结构体中有一个域:dwControlsAccepted .只要我们对这个域进行赋值,则我们的服务可以被“停止”,“暂停”,或我们不管这个域,则别人无法对服务进行“停止”或“暂停”。         小小的技术。

ytfrdfiw的专栏 4170

均值场博弈_平均场博弈(mean field game)

The New Big Fish Called Mean-Field Game Theory原文链接http://www.science4all.org/article/mean-field-games/​www.science4all.org主要内容在经典博弈论中,它对附近其他鱼类的行为做出反应。这是非常复杂的,因为不同的鱼类之间会有大量的相互作用。这意味着经典博弈论对应于一长串高度耦合的方程。...

weixin_34773479的博客 3680

124、LLC谐振变换器的矩阵变压器设计

摘要 本文分享了LLC谐振变换器中矩阵变压器的实战设计经验。针对大功率LLC单颗变压器的痛点(绕组层数多、散热不均、漏感一致性差),作者提出将大变压器拆分为多个小变压器单元(建议6个),通过原边串联、副边并联的方式实现功率分配。详细解析了磁芯选型、匝比计算、绕组结构、漏感控制和散热设计等关键参数,特别强调了小磁芯优势、等效匝比计算误区以及三明治绕法的重要性。文中还总结了调试过程中的谐振频率偏移和均流问题解决方案,并给出了矩阵数量选择、磁芯材质、绝缘材料等实用建议。作者指出,矩阵变压器在2kW以上LLC应用中

Jack010169的博客 169

DNS日志事件3000警告

描述:DNS 服务器遇到很多运行时间事件。要 确定这些运行时间事件的初始原因,请 检查此事件之前的 DNS 服务器事件日志 项。为防止DNS 服务器添加事件日志 过快,将取消事件 ID 高于 3000 的后续 事件,除非事件不再高速产生。 解决:运行 dnscmd /Config /EventControlSuppression 1 转载于:https://bl...

weixin_33708432的博客 373

Qt项目开发实例 (含源码)

qt教程、qt项目、qt下载、qt项目实战、qt多线程。本文通过分析demo源码,QT实战的方式进行学习,学习路线是以实战为目录,全面的使用自己的学习知识,文章中编写一系列的学习游戏demo,与大家一起分享。

啊渊的专栏 14万+

详解入侵日志清除方法

 首先来讲解FTP和WWW日志FTP日志→FTP日志和WWW默认日志为每天生成一个日志文件,包含了每天的一切记录,文件名通常为ex(年份)(月份)(日期),例如ex051218,就是2005年12月18日记录的日志,选用记事本打开方式就可直接打开,如下例:#Software: Microsoft Internet Information Services 5.0(微软IIS5.0) #Vers

冷血书生的专栏 6569

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

EDNS

  随着业务的复杂化和多样化,RFC1035中定义的DNS消息格式和它支持的消息内容已经不足以满足一些DNS服务器的需求,于是,RFC2671中提出了一种扩展DNS机制EDNS(Extension Mechanisms for DNS),并在其中推荐了一种传递包大小的EDNS0。我将EDNS0中的一些关键内容总结在这篇文章中,以便日后翻阅,同时希望能够帮助到像我这样迷茫过的、探寻EDNS很久才知道...

weixin_34321753的博客 610

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

dns详解

名称服务器(NS)记录dns服务器是谁起始授权机构(SOA)记录dns的刷新记录SRV记录:只在dns和dc在同一个机器上才会出现SRV记录,SRV记录告诉客户段域的DC地址如果srv记录不全,只用重启net logon 服务,不能自己建常用命令 net stop dns net Start dns net stop netlogon ...

weixin_34239592的博客 184

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

名称以无效字符开头问题-终于解决了!

我用的是VS2005  后来由于其他原因,中途把IIS给卸载了,导致出现上述问题.从百度,google上面搜索,出现问题主要是下面个方面:     是因为NET没用注册到IIS引起的,在命令窗口中运行"C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_regiis.exe -i"问题得以解决.      vs2005在命令窗口运行C:/

冷月宫主的专栏 8681

“尝试解析加入域中域控制器的DNS名称失败” 的有效解决方法

出现该问题的原因可能有以下几个: 1.域控制器和客户端的IP和DNS没有设置好。所有的系统应该在同一个网段里,即IP地址的前三段是一样的;两个系统的的首选DNS都设置为域控制器的IP地址。 2.域控制器在搭建的时候没有搭建好DNS服务器。 3.虚拟机的网络设置有问题,客户端选择host-only网络(VMware中是【vmnet1】,virtualbox中是【仅主机(host-only)网络】),...

Charonmomo的博客 2万+

名称以无效字符开头问题-终于解决了

我用的是VS2005  后来由于其他原因,中途把IIS给卸载了,导致出现上述问题.从百度,google上面搜索,出现问题主要是下面个方面:     是因为NET没用注册到IIS引起的,在命令窗口中运行"C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_regiis.exe -i"问题得以解决.      vs2005在命令窗口运行C:/

Keep Moving--Leo Li 7181

DNS 域名解析失效

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33850015的博客 1377
上一篇: 做互联网最重要的是希望! 【水木周平】
下一篇: 鬼扯日记- 35 【 挖掘潜在价值 VS 售后服务 】
freexploit
博客等级 码龄22年 315粉丝 778原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值