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

CentOS主DNS服务器配置简易指南

时间:2023-03-17 12:40:59 科技观察

任何运行的域名都至少有两台DNS服务器,一台叫主域名服务器(比如叫ns1),一台叫二级域名服务器(例如,它称为ns2)。这些服务器通常用于故障转移:如果一个宕机,另一个被激活为DNS服务器(译注:这里译者有不同意见,实际上两个或多个DNS服务器一起工作,不是第一站停止服务后,第二台接管,解析器随机选择一台DNS服务器进行查询,超时再查询下一台,这是多DNS的一种容错机制)。还可以实施更复杂的故障转移机制,包括负载平衡、防火墙和集群。一个域的所有DNS条目都会被添加到主名称服务器中,从服务器只会根据主服务器上的SOA记录的序列号参数从主服务器同步所有信息。本教程将展示如何创建在CentOS上运行的主DNS服务器。请注意,本教程中提到的DNS服务器将是一个开放的DNS服务器,这意味着该服务器将回答来自任何IP地址的查询。本教程将讨论DNS服务器的访问控制(译注:开放DNS服务器是一种安全风险)。在我们开始之前,我想提一下DNS可以在chroot环境和非chroot环境中配置。chroot环境将DNS服务器限制在系统上的特定目录,以避免为服务器提供系统级访问权限。在这种环境下,任何DNS服务器的安全漏洞都不会导致整个系统的破坏。将DNS服务器置于chroot环境中对于部署测试也很有用。目的我们将根据域名example.tst在测试环境中配置一个DNS服务器,这个域名是假的(不存在)。这样,我们就不会意外地干扰其他真实域。在这个域中,有以下三个服务器。服务器IP地址托管服务完全限定域名(FQDN)服务器A172.16.1.1邮件mail.example.tst服务器B172.16.1.2Web、FTPwww.example.tstftp.example.tst服务器C172.16.1.3主DNS服务器ns1.example.tst我们将配置一个主名称服务器并从上表中添加必要的域和DNS记录。设置主机名所有主机名必须以完全限定域名的形式正确定义,可以通过以下方法设置。#vim/etc/sysconfig/networkHOSTNAME=ns1.example.tst注意:这个文件中指定的hostname参数在服务器启动后(译注:或者网络服务重启后)才会生效,所以这个设置不会生效立即生效。以下命令会立即临时更改主机名。#hostnamens1.example.tst设置后,可以使用以下命令验证主机名。#hostnamens1.example.tst在进行下一步之前,请确保以上三台服务器上的主机名设置正确。安装包我们将使用bind来配置DNS服务,它可以通过yum轻松安装。不使用chroot环境:#yuminstallbindbind-chroot使用chroot环境:#yuminstallbindbind-chroot准备配置文件上面说了bind可以在chroot环境下配置也可以在非chroot环境下配置,配置文件的路径取决于是否安装了chroot包。配置文件路径区域文件路径不带chroot/etc//var/named/带chroot/var/named/chroot/etc//var/named/chroot/var/named/可以使用默认文件提供的named.conf配置,但为了更方便,我们将使用另一个简单的配置文件模板。非chroot环境:#cp/usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones/etc/named.confChroot环境:#cp/usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones/var/named/chroot/etc/named.conf现在备份和修改配置文件。非chroot环境:#vim/etc/named.confchroot环境:#vim/var/named/chroot/etc/named.conf添加/修改以下行:options{##Regionalfilestoragedirectory##directory"/var/named";##非本地权威域的请求被转发到Google的公共DNS服务器##forwarders{8.8.8.8;};};##声明一个本地域example.tst##zone"example.tst"IN{typemaster;file"example-fz";##存储文件名,放到/var/named##allow-update{none;};};##为IP段172.16.1.0提供反向解析##zone"1.16.172.in-addr.arpa"IN{typemaster;file"rz-172-16-1";##storethefilenamein/var/named##allow-update{none;};};准备区域文件这些默认区域文件是在/var/named或/var/named/chroot/var/named(chroot环境)中自动创建的。如果在这些地方找不到这些文件,/usr/share/doc/bind目录中提供了模板文件,可以从此处复制。假设没有提供默认区域文件,我们可以从/usr复制模板文件。非chroot环境:#cp/usr/share/doc/bind-9.8.2/sample/var/named/named.*/var/named/chroot环境:#cp/usr/share/doc/bind-9.8。2/sample/var/named/named.*/var/named/chroot/var/named很好!现在默认区域文件已准备就绪,我们可以为example.tst和172.16.1.0网络创建区域文件,必须牢记以下几点。区域文件中的特殊字符“@”表示空。(注释:表示此域。)所有完全限定的域名都必须以点“.”结尾。如:example.tst。没有这一点,你就会有问题。(译注:会被认为是当前@所代表的域的子域。)1.转发区(本地权威域)转发区包含名称到IP地址的映射。对于公共域,域托管提供商的DNS服务器存储转发区域文件。(译注:转发区为本地权威域,服务器本身提供权威分析数据)非chroot环境:#vim/var/named/example-fzchroot环境:#vim/var/named/chroot/var/named/example-fz$TTL1D@INSOAns1.example.tst.sarmed.example.tst.(0;serial1D;refresh1H;retry1W;expire3H);minimumINNSns1.example.tst.INA172.16.1.3mailINA172.16.1.1INMX10mail.example.tst.wwwINA172.16.1.2ns1INA172.16.1.3ftpINCNAMEwww.example.tst。说明:在区域文件中,SOA表示权限开始。其值的第一部分是权威名称服务器的完全限定域名。完全限定的域名后跟电子邮件地址。由于'@'符号不能用在sarmed@example.tst这样的格式中(译注:@有特定的含义,代表这个域。),我们将电子邮件地址重写为类似sarmed.example.tst的格式。以下是典型的常用DNS记录类型:NS:域名服务器A:地址记录,记录主机名到IP地址的映射(译注,此处原文有误。)MX:邮件交换记录。这里我们只使用一条邮件交换记录,并设置其优先级为10。如果有多条邮件交换记录,我们可以使用多个数值优先级,数字最小的优先级***。例如,MX0的优先级高于MX1。CNAME:规范名称。如果多个服务托管在单个服务器上,则多个名称也可能解析为单个服务器。CNAME指定服务器可能拥有的其他名称,并将它们指向具有实际A记录的名称。2.反向区反向区包含IP地址到名称的映射。在这里,我们为172.16.1.0网络创建一个反向区域。在正式域中,公共IP块的所有者拥有的DNS服务器存储反向区域文件。(有些服务,如邮件服务,需要正确的IP地址反向解析才能正常工作。IP的反向解析通常由IP的所有者,如接入商或IDC来解析。)非chroot环境:#vim/var/named/rz-172-16-1chroot环境:#vim/var/named/chroot/var/named/rz-172-16-1$TTL1D@INSOAns1.例子.tst。sarmed.example.tst。(0;串行1D;刷新1H;重试1W;过期3H);minimumINNSns1.example.tst.1INPTRmail.example.tst.2INPTRwww.example.tst.3INPTRns1.example.tst。说明:反向区文件中除以下参数外,大部分参数与正向区文件相同。PTR:IP反向解析记录,指向一个反向限定域名。关闭作业现在区域文件已经就位,让我们调整它们的权限。非chroot环境:#chgrpnamed/var/named/*Chroot环境:#chgrpnamed/var/named/chroot/var/named/*现在,我们设置DNS服务器的IP地址。#vim/etc/resolv.confnameserver172.16.1.3***,我们就可以启动DNS服务了,一定要把它添加到启动服务中。#servicenamedrestart#chkconfignamedonDNS服务器启动后,建议注意日志文件/var/log/messages,里面有一些后台运行的有用信息。如果没有发现错误,我们就可以开始测试DNS服务器了。测试DNS我们可以使用dig或nslookup来测试DNS。首先,我们需要安装必要的包。#yuminstallbind-utils1.使用dig测试转发区使用dig测试时,一定要时刻注意状态信息:“NOERROR”,任何其他值都说明有问题。#挖掘example.tst;;->>HEADER<<-操作码:QUERY,状态:NOERROR,id:31184;;问题部分:;example.com。在一个;;答案部分:example.com。86400INA172.16.1.3;;权威部分:example.com。86400INNSns1.example.com.;;附加部分:ns1.example.com。86400在172.16.1.32。使用dig测试PTR记录使用dig测试时,必须时刻注意状态信息:“NOERROR”,任何其他值都说明有问题。(注解,也可以用dig1.1.16.172.in-addr.arpa.ptr进行测试。)#dig-x172.16.1.1;;->>HEADER<<-操作码:QUERY,状态:NOERROR,id:27415;;问题部分:;1.1.17.172.in-addr.arpa。在PTR中;;答案部分:1.1.16.172.in-addr.arpa。86400INPTRmail.example.tst.;;授权部分:1.16.172.in-addr.arpa。86400INNSns1.example.tst.;;附加部分:ns1.example.tst。86400在172.16.1.33。使用dig测试MX记录#digexample.tstmx;;->>HEADER<<-操作码:QUERY,状态:NOERROR,id:35405;;问题部分:;示例.tst。在墨西哥;;答案部分:example.tst。14366INMX10mail.example.tst。故障排除提示我关闭了SELinux。确保防火墙没有阻止UDP端口53。如果出现错误,您可以在/var/log/messages中查看有用的信息确保区域文件的所有者是“named”确保DNS服务器的IP地址是在/etc/resolv.conf***Item如果您使用example.tst作为实验室环境,请确保断开服务器与互联网的连接,因为example.tst是一个不存在的域。***总结,本教程着重在实验环境配置example.tst域进行演示。请注意,本教程创建了一个公共DNS服务器,该服务器响应来自任何源IP地址的查询。如果您正在配置DNS生产服务器,请务必检查与公共DNS相关的策略。其他教程包括创建辅助DNS服务器、限制对DNS服务器的访问以及部署DNSSEC。希望本教程对您有所帮助。via:http://xmodulo.com/2014/04/primary-dns-server-using-centos.html译者:GOLinux校对:wxy