当前位置: 首页 > 科技观察

LinuxDNS服务器安装、配置与维护

时间:2023-03-14 22:27:47 科技观察

每一个IP地址都可以有一个主机名,主机名由一个或多个由小数点分隔的字符串组成。有了主机名,不要死记硬背每个IP设备的IP地址,记住比较直观、有意义的主机名即可。这就是DNS协议的作用。今天我们将讨论DNS服务器,特别是LinuxDNS服务器,以及如何安装、配置和维护它。/etc/hosts文件在没有DNS服务器的情况下,每个系统在本地网络上保留其主机名列表和相应IP地址的副本是合理的——尤其是在没有Internet连接的小型站点上。在Linux系统上,此列表是/etc/hosts文件。即使您没有DNS服务器或DNS服务器不可用,此文件也可以使用/etc/hosts文件将IP地址转换为名称。也许您已经有了一个DNS服务器,但出于其他原因您还想保留这个文件。例如,系统可能需要先在本地查找DNS服务器的IP地址,然后再向外部查询;这意味着系统在查询DNS服务器之前检索文件,如果找到相应的域,则不需要查询任何DNS服务器直接将其转换为IP地址。尝试编辑/etc/hosts文件并添加以下信息:127.0.0.1google.com。然后,返回浏览器并输入google.com看看会发生什么。如果您的系统上安装了Apache并且localhost正在运行,浏览器将显示localhost索引页面而不是Google页面。作为确认,您可以将google.com映射到任何网站的任何其他IP地址并查看结果。所以这个文件所做的是将IP地址转换为名称,但仅限于同一互连网络内。那么如何维护外部网络和众多系统的所有记录呢?是不是每个人都需要维护自己的/etc/hosts文件,自己更新?更强大的域名服务是DNS服务器。域名当你访问一个网站时,你可以输入一个FQDN(FullyQualifiedDomainName,完全限定的域名)或者像geeks.com或www.google.com这样的域名。域名中从右到左两个点之间的每个文本分别是一级域组件、二级域组件和三级域组件。因此,com是***域名的组成部分;google是二级域名组成部分;www为三级域名组成部分。事实上,当你访问任何网站时,浏览器都会默认在域的末尾添加一个不可见的点,因此域将类似于www.google.com。此点称为根域。这一点由一组称为根名称服务器的特殊服务器管理。截至本文发表时,全球共有13个根域名服务器。你可以把他们想象成互联网的大脑——如果他们失败了,世界上就没有互联网了。为什么是13?因为如果世界某个地方的地震可能导致根服务器瘫痪,其他服务器可以继续提供服务,直到受影响的服务器重新上线。这些根名称服务器按字母顺序命名,例如a.root-server.net、b.root-server.net等。***域名(或TLD)我们已经看到了***域名的组成部分,例如com.可以将域名视为为DNS命名空间提供分类组织。***域名(TLD)根据地理或功能方面分为几类。截至撰写本文时,网络上有800多个***域。***域名类别包括:通用***域名如:org、.com、.net、.gov、.edu等国家代码***域名如:.us、.ca等.,对应美国和加拿大新品牌***域名的国家代码,允许组织创建最多64个字符的TLD,例如:.linux、.microsoft、.companyname等基础设施***域名如:.对于.google.com这样的网站,这里的mail是google.com的子域名。只有mail.google.com这个名字服务器知道他下面所有的主机,所以Google会回复是否有一个叫mail的子域名。根名称服务器对此一无所知。DNS服务器的类型DNS服务器分为三种类型。主DNS服务器这些服务器存储了特定域名的配置文件,并据此权威地指定特定域名的地址。主DNS服务器知道其管辖下的所有主机和子域的地址。备用DNS服务器这些服务器作为主DNS服务器的备份,也承担一定的负载。主服务器知道辅助DNS服务器并将更新推送给它们。缓存DNS服务器这些服务器不存储特定域名的配置文件。当客户端请求缓存服务器解析域名时,该服务器将首先检查其本地缓存。如果未找到匹配项,则查询主服务器。然后这个响应将被缓存。您还可以轻松地将自己的系统用作缓存服务器。搭建LinuxDNS服务器Linux下实现DNS功能的包有很多,但我们只关注BINDDNS服务器。它用于世界上大多数DNS服务器。如果您使用的是基于RedHat的Linux发行版,例如CentOS,您可以这样安装它:$dnf-yinstallbind如果您使用的是基于Debian的操作系统,例如Ubuntu:$apt-getinstallbind9安装完成后就可以启动了,也让它在电脑开机的时候启动。$systemctlstartnamed$systemctlenablenamed配置BIND此服务使用/etc/named.conf作为配置文件。BIND在该文件中使用如下语句:options:用于全局BIND配置。logging:配置什么需要记录,什么需要忽略。我建议您看一下Linux系统日志服务器。区域:定义DNS区域。include:在named.conf中包含另一个文件。在options语句中可以看到BIND的工作目录是/var/named。zone语句可用于定义DNS区域,例如域google.com,其中包含子域mail.google.com和analytics.google.com。以上三个域名(主域和子域)中的每一个都有一个由zone语句定义的区域。定义主域名服务器我们知道DNS服务器的类型有主域名服务器、二级域名服务器和缓存域名服务器。与缓存名称服务器不同,主名称服务器和辅助名称服务器在应答过程中处于同等地位。在配置文件/etc/named.conf中,您可以使用以下语法定义主域服务器:zone"likegeeks.com"{typemaster;filelikegeeks.com.db};包含主要区域信息的文件存储在/var/命名目录中,我们从选项中可以看出这是一个工作目录。注意:软件服务器或托管面板会根据您的域名自动为您创建主域服务器信息的文件名,所以如果您的域名是example.org,那么您的主域服务器信息文件就是/var/命名/示例.org.db。类型是master,这意味着这是一个主域服务器。定义辅助域服务器与定义主域服务器相同。副域服务器定义略有改动:zone"likegeeks.com"{typeslave;mastersIPAddresslist;;filelikegeeks.com.db};对于副域服务器,其域名与主域服务器相同。上面语法中的slave类型表示这是一个二级域服务器,“mastersIPAddresslist”表示二级域服务器的区域文件中的信息是从主域服务器的区域文件中的信息复制而来的.定义缓存服务器即使您已经配置了主域或副域服务器,仍然有必要(不是必须)定义缓存服务器,因为这样可以减少DNS服务器查找的次数。在定义缓存服务器之前,需要先定义三个区域选择器:zone"."IN{typehint;file"root.hint";};zone"."IN{typehint;file"root.hint";};zone"."IN{typehint;file"root.hint";};zone"localhost"IN{typemaster;file"localhost.db";};第三个区域定义为反向查找本地主机。这个反向查找就是将本地IP地址指向本地主机。zone"0.0.127.in-addr.arpa"IN{typemaster;file"127.0.0.rev";};把这三个区域的信息放到/etc/named.conf文件中,你的系统就可以了缓存服务器开始工作。但是,您如何引用likegeeks.com.db、localhost.db和127.0.0.rev等文件?这些文件包含具有特定选项的每个区域的DNS记录类型。那么,这些DNS记录类型是什么,又是怎么写的呢?DNS记录类型数据库文件包含SOA、NS、A、PTR、MX、CNAME和TXT等记录类型。让我们看看每种类型是如何记录的。SOA:OriginatingAuthorityRecordSOA记录以以下形式开始描述站点的DNS条目:example.com.86400INSOAns1.example.com.mail.example.com.(2017012604;serial86400;refresh,seconds7200;retry,seconds3600000;expire,seconds86400;minimum,seconds)***行以域名example.com开头,以句号结尾——这条语句与/etc/named.conf文件中的zone定义一致。我们应该永远记住DNS配置文件非常挑剔。IN告诉域名服务器:这是一条网络记录。SOA告诉域名服务器:这是一个权威记录的来源。ns1.example.com。是文件所在域名服务器的完全限定域名(FQDN:FullyQualifiedDomainName)。mail.host.com.是域管理员的电子邮件地址。您会注意到电子邮件地址没有“@”符号,而是被一个句点代替,最后还有一个句点。第2行是序列号,用于告诉名称服务器文件更新的时间。因此,如果更改区域代码,则必须增加此序列号。此序列号的格式为YYYYMMDDxx,其中xx从00开始。第3行是每秒的刷新率。该值用于告诉第二个名称服务器多久查询一次主服务器以获取已更新的记录。第4行是每秒重试的频率。如果第二台服务器多次尝试连接主域名服务器进行更新检测,均未连接成功,则第二台服务器将每秒重试指定次数。第5行是超时指示。其目的是让第二个服务器缓存区域数据。该值告诉这些服务器,如果它们无法连接到主服务器进行更新,它们将在指定的秒数后丢弃该值。第6行告诉缓存服务器,如果它们无法连接到主名称服务器,它们在超时之前应该等待多长时间。NS:名称服务器记录(NameServerRecords)NS记录用于指定哪个名称服务器为这个域维护记录。您可以这样编写NS记录:INNSns1.example.com.INNSns2.example.com。不必有2个NS记录,但通常最好有备份名称服务器。A和AAAA:AddressRecords(地址记录)A记录用于提供INA192.168.1.5从主机名到IP地址的映射支持。如果您的主机位于support.example.com,地址为192.168.1.5,您可以像上面的示例一样输入它。请注意,我们编写的主机没有句号。PTR:PointerRecords(指针记录)PTR记录用于执行反向名称解析,允许某人指定一个IP地址,然后找出对应的主机名。这与A记录的作用相反:192.168.1.5INPTRsupport.example.com。在这里,我们键入带点的完整主机名。MX:邮件交换记录(MailExchangeRecords)MX记录告诉其他站点您所在域的邮件服务器地址:example.com。在MX10邮件中。当然,这个域以句点结尾。数字10是邮件服务器的重要性标志,如果您有多个邮件服务器,则较小的数字不太重要。CNAME:规范名称记录(权威名称记录)CNAME记录允许您为主机名创建别名。当您想提供一个易于记忆的名称时,这很有用。假设一个站点有一个主机名为whatever-bignameis.example.com的Web服务器,并且由于系统是一个Web服务器,可以为名为www的主机创建一个CNAME记录或别名。您可以创建一个名为www.example.com的域名创建一个CNAME记录:whatever-bignameisINA192.168.1.5wwwINCNAMEwhatever-bignameis***行通知DNS服务器别名的位置。第二行创建一个指向www的别名。TXT记录您可以在TXT记录中存储任何信息,例如您的详细联系信息或您希望人们在查询您的DNS服务器时拥有的任何其他信息。您可以像这样保存TXT记录:example.com。在TXT中“您的信息在这里”。此外,还会创建一个RP记录作为主机联系信息的显式容器:example.com。在RPmail.example.com中。例子。com。DNSTTL值位于/etc/named.conf文件的顶部,其中有一个$TTL条目。此条目告诉BIND每个单独记录的TTL值(生存时间,生存时间)。是一个以秒为单位的值,比如14400秒(4小时),所以DNS服务器最多缓存你的域文件4个小时,然后会重新向你的DNS服务器查询。您可以降低此值,但默认值通常是合理的。除非你知道你在做什么。捕获配置错误也许您在编写域文件时忘记了句点或空格或其他任何内容。您可以从日志中诊断LinuxDNS服务器错误。BIND服务将错误传递到/var/log/messages,可以使用tail命令查看实时错误日志,必须使用-f选项:$tail-f/var/log/messages。所以当你编写域文件或修改/etc/named.config并重启服务时,出现错误后,你可以很容易地从日志中识别错误类型。主机命令成功添加或修改记录后,可以使用主机命令检查主机是否正确解析。host命令允许您将主机名解析为IP地址:$hostexample.com。此外,您可以执行反向查找:$host192.168.1.5。您可以在本文中阅读有关host和dig命令的更多信息。Whois命令whois命令用于确定域名的所有权及其所有者的电子邮件地址和联系电话号码:$whoisexample.com.Rndc命令rndc工具可用于安全地管理名称服务器,因为所有与服务器是通过数字签名进行认证的。此工具用于控制名称服务器和调试问题。您可以使用以下命令检查LinuxDNS服务器的状态:$rndcstatus。此外,如果您更改了任何区域文件,则无需重新启动命名服务即可重新加载服务:$rndcreloadexample.com。在这里我们重新加载example.com域文件。您可以重新加载所有域:$rndcreload。或者您可以添加新域或更改服务配置。您可以按如下方式重新加载配置:$rndcreconfig。LinuxDNS解析器我们已经知道LinuxDNS服务器如何工作以及如何配置它。另一部分当然是客户端与DNS服务器交互(它正在与DNS服务器通信以将主机名解析为IP地址)。在Linux上,解析器位于DNS的客户端。要配置解析器,请检查配置文件/etc/resolv.conf。在基于Debian的发行版上,查看/etc/resolvconf/resolv.conf.d/目录。/etc/resolv.conf文件包含客户端获取其本地DNS服务器地址所需的信息。第一个代表默认搜索域,第二个代表主机名服务器(nameserver)的IP地址。名称服务器行告诉解析器要使用哪些名称服务器。只要您的BIND服务在运行,您就可以使用自己的DNS服务器。使用LinuxDNS服务器非常简单。我希望您发现这篇文章有用且易于理解。