名称解析是现代网络的重要组成部分。名称解析服务将人们容易记住的名称与较难记住的IP地址联系起来。名称解析使用地址(A)记录来解析具有IPv4地址的名称,并使用quad-A(AAAA)记录来将名称与IPv6地址相关联。最终用户依靠名称解析来浏览网站。计算机技术人员可以使用名称来映射网络打印机或驱动器,系统管理员可以通过名称远程连接到服务器或VM。
排除名称解析故障的第一步是了解它。本系列的第一篇文章定义了名称解析 并提供了一些功能的示例,如主机文件和DNS。第二篇文章介绍名称解析问题的疑难解答 从客户端的角度,使用ping、nslookup、host和dig等工具。本文讨论服务器上的DNS服务故障排除。具体而言,它将介绍如何检查Linux和Windows DNS服务器上的服务状态和主配置文件。
基于Linux的DNS疑难解答
Linux服务器上的名称解析故障排除从基础知识开始。首先,服务是否已安装并正在运行?其次,区域文件是否准确,它们是否包含解析网络主机所需的资源记录?
Linux的名称解析服务是Berkeley Internet Name Domain(BIND),目前版本为9。
1.检查是否安装了BIND
排除名称解析服务器故障时,请确保BIND已安装并正在运行。使用以下命令确认BIND 9已安装:
$ named -v
输出应指示BIND 9已安装并显示版本号。如果未安装BIND 9,这就是对该服务器的名称解析查询失败的原因。
在Red Hat、Fedora和类似的发行版上,键入以下内容以安装BIND 9:
$ sudo dnf install -y bind bind-utils
在Ubuntu、Debian和类似的发行版上,键入以下内容:
$ sudo apt install bind9 bind9-utils bind9-dnsutils
管理员是否需要安装各种额外的实用程序取决于他们打算如何使用名称解析服务器。
2.确保BIND正在运行
假设安装了BIND,下一步是确保服务正在运行。系统 命令使用以下语法:
$ sudo systemctl status bind9
管理员可以使用systemctl启动,停止,再启动,使能 和禁用 命令来管理服务。
别忘了设置防火墙允许端口53/udp用于查询,53/tcp用于区域传输。
3.检查区域配置
存储BIND 9配置文件的主目录通常是/etc/绑定 和/var/cache/bind。主要的服务配置文件有named.conf,named.conf.default-zones,named.conf.local 和named.conf.options这些文件定义名称解析服务如何执行其任务。
请注意,确切的目录和文件名以及位置可能因发行版而异。这在Linux系统上并不少见。grep 的/etc 和/var 字符串目录包含命名的.
区域文件包含将特定主机名与IP地址相关联的实际资源记录。区域文件通常位于/var/cache/bind。标准资源记录,例如授权起始(SOA)和名称服务器(NS)记录,与用于名称解析查询的A和指针(PTR)记录一起存储在这里。如果服务器解析多个区域的查询,则每个区域将具有其自己的文件。
使用以下命令检查区域文件配置,其中地带名称 是管理员正在进行故障排除的DNS区域的名称:
$ sudo命名检查区域zonename.comdb.zonename.com
该指定检查区 实用程序检查区域文件的语法。此检查提供了测试和排除现有区域文件故障的机会,并在将新区域文件加载到BIND9之前确认其配置。
结果应通过提供退出代码指示区域正在正确响应0。如果检查返回退出代码1,检查区域文件内容是否有错误。管理员可能会遇到以下错误:
- 区域名称不正确。
- 区域文件可能包含不正确的A和PTR资源记录。
- 记录可能有印刷错误。
注意事项: 管理员可能会发现,使用dig、host和nslookup等工具从客户端系统进行故障排除有助于正确识别某些问题。
基于Windows的DNS疑难解答
微软Active Directory域服务 (AD DS)集成了多项服务,以提供安全性和易于管理性。第一项服务是DNS AD集成区域。此功能支持使用AD数据库复制DNS数据库--一种更全面的复制设计。第二项服务是动态主机配置协议(DHCP)拥有的A和PTR记录的动态更新。DHCP注册客户端的主机名和IP地址 在租用IP地址配置后,使用DNS,确保-希望-DNS区域填充有准确的信息。因为这三种服务一起工作,所以通常将它们放在同一台服务器上是有意义的。
任何名称解析故障排除都必须涉及AD DS和DHCP。在查看事件查看器消息或试图缩小名称解析问题的范围时,请记住这一点。有几个控制台和Windows PowerShell cmdlet可用于排除DNS故障。
1.验证是否已安装DNS
首先,通过检查服务器管理器或服务项目 如有必要,请添加DNS角色,并将服务器配置为AD域的一部分。任何服务(包括DNS)都可以在服务项目 中的控制台工具 管理员可以检查服务的状态并从该控制台重新启动服务。
2.检查区域
打开DNS管理器 管理员还可以在这里创建新的区域,以及管理区域复制、安全设置和转发等配置。
3.使用PowerShell排除配置故障
只要管理员记住了适当的cmdlet和参数,命令行环境(如PowerShell,可以是高效的,并且通常比导航GUI更快。显然,命令行界面的主要好处是脚本。管理员甚至可以生成他们自己的名称解析故障排除脚本。
有几个cmdlet可帮助进行DNS故障排除和报告。它对于显示区域中的记录、确认DNS服务器对查询名称的名称解析是可能的特别有用。
以下是使用PowerShell排除配置故障或检索信息的几个示例。
使用以下cmdlet清除DNS解析程序缓存:
〉Clear-DnsServerCache
使用以下cmdlet从服务器检索资源记录,并确认记录存在:
〉Get-DnsServerResourceRecord -ComputerName DC1 -ZoneName myzone.local
从指定的DNS服务器检索A记录,方法是添加- RR A型 参数:
〉Get-DnsServerResourceRecord -ComputerName DC1 -ZoneName myzone.local -RRType A
4.检查DNS配置
从服务器管理器中,转到工具 菜单,然后选择DNS 打开DNS管理器 控制台。管理员可以展开节点以显示服务器知道的任何DNS区域。以下是根据故障排除方案需要检查的一些区域:
- 确认列出了正确的区域。
- 搜索静态资源记录中的任何印刷错误。
- 验证是否存在正确的A和PTR资源记录。
- 确认防火墙允许DNS流量。
管理员还可以使用DNS控制台检查区域属性,如清除和转发器。这些设置会影响DNS处理名称解析查询的方式。清除有助于清理DNS记录。在AD环境中,Windows客户端或DHCP服务器动态创建A和PTR资源记录。如果不进行处理,记录的数量会继续增长,而不会删除较旧的记录,这就是为什么DNS可以使用老化和清除等属性的原因。
时效标识指定时效的资源记录。这些记录被标记为陈腐的,并且在另一个指定的时间间隔后它们将被清除(删除)。请确保在区域中的一个DNS服务器上启用了清除,以保持区域的大小可管理。
转发会将未解析的查询发送到另一台服务器。此配置将内部DNS服务器(可能与AD域控制器(DC)位于同一位置)与直接Internet访问隔离。相反,指定的DNS服务器(称为运输公司 驻留在网络的面向Internet的屏蔽子网或DMZ中。内部DNS服务器将对外部Internet资源的查询转发到转发器。
要检查的另一个设置是条件转发。DNS条件转发使管理员能够将特定域名与已知DNS服务器关联。当DNS服务器接收到与该域名相关的查询时,该查询将直接发送到列出的DNS服务器,而不通过多个其他服务器进行解析。请确保标识的任何域名都正确,并且提供了适当的DNS服务器IP地址。
5.重新加载区域
接下来,尝试重新加载区域。管理员还可以重新启动DNS服务。但是,请注意,这也会重新启动AD DS,并可能影响客户端系统。假设站点上至少有两个AD DC,以减轻一次一个DC不可用的影响。
6.检查事件查看器日志
接下来,检查事件查看器DNS日志。管理员可能需要查看AD DS事件,甚至可能是DHCP事件,而不仅仅是DNS条目。注意指示DNS启动问题的条目。更重要的是,检查DNS和AD DS是否存在复制错误。
Windows提供了多种DNS服务接口。管理员可以通过服务项目 控制台,但大多数DNS故障排除可能会在DNS管理器 控制台。此控制台可启用区域管理、显示资源记录并修改服务设置,如清除和转发。AD集成区域可提高DNS区域复制的安全性和性能,并实现DNS和DHCP之间更紧密的集成。因此,在对DNS问题进行故障排除时,请不要忘记检查AD复制和DHCP设置。
总结
DNS服务器提供网络上最关键的服务之一。名称解析使用户能够使用相对容易记住的名称。在后台,系统将这些名称与TCP/IP所需的IP地址相关联。许多服务都依赖于DNS,包括电子邮件,Web浏览,文件共享,打印机共享和AD。通过确保服务已安装、正在运行且可访问来开始故障排除。确认存储资源记录所需的区域存在且配置正确。最后,验证查询目标的资源记录存在且准确。