Linux DNS服务器安装、配置和维护
作者:dzone 发布时间:[ 2017/4/18 11:14:41 ] 推荐标签:操作系统 Linux
定义一个缓存服务器
即使你已经配置了主域或者辅助域服务器,你仍有必要(不是必须)定义一个缓存服务器,因为这样你可以减少DNS服务器的查询次数。
在定义缓存服务器之前,你需要先定义三个区域选择器,第一个:
zone "." IN {
type hint;
file "root.hint";
};
zone "." IN {
type hint;
file "root.hint";
};
zone "." IN {
type hint;
file "root.hint";
};
zone "localhost" IN {
type master;
file "localhost.db";
};
定义第三个区域是为了反向查找到本地主机。这种反向查找是把本地的IP地址执向本地主机。
zone "0.0.127.in-addr.arpa" IN {
type master;
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:起始授权机构记录
SOA记录按如下形式开始描述一个站点的DNS条目:
example.com. 86400 IN SOA ns1.example.com. mail.example.com. (
2017012604 ;serial
86400 ;refresh, seconds
7200 ;retry, seconds
3600000 ;expire, seconds
86400 ;minimum, seconds
)
第一行以域名example.com开始,以句号结束——该语句和/etc/named.conf文件中的区域定义是一致的。我们要始终记得,DNS配置文件是极其挑剔的。
IN 告诉域名服务器:这是一条网络记录。
SOA 告诉域名服务器:这是一条起始授权机构记录。
ns1.example.com. 是该文件所在域的域名服务器的完全合格域名(FQDN: Fully Qualified Domain Name)。
mail.host.com. 是域管理员的邮箱地址。你会发现这个邮箱地址没有“@”标志,而是被句号所取代,并且末尾还有一个句号。
第2行是一个序列码,它被用来告诉域名服务器文件是什么时候升级的。因此,如果你对区域码做了变更,你必须对这个序列码进行递增。这个序列码的格式是 YYYYMMDDxx ,其中的 xx 是从 00 开始的。
第3行是每秒刷新率。这个值被用来告诉第二个域名服务器查询主服务器中的记录是否已经被更新的频率。
第4行是每秒重试的频率。如果第二个服务器多次尝试连接主域名服务器来进行更新检测,但无法连接上的时候,第二个服务器会在每秒内重试指定的数值次数。
第5行是超时指示。其目的是为了第二个服务器能将区域数据缓存下来。这个值告诉这些服务器如果它们不能连接到主服务器来进行更新,那么它们会在这个指定数值秒数之后抛弃这个值。
第6行告诉缓存服务器,如果它们不能连接到主域名服务器时,它们应该在超时前等待多久。
NS: Name Server Records(名称服务器记录)
NS记录用于指定哪个名称服务器维护该域的记录。
你可以这样编写的NS记录:
IN NS ns1.example.com.
IN NS ns2.example.com.
并不需要有2个NS记录,但是通常偏好有备份名称服务器。
A和AAAA: Address Records(地址记录)
A记录用于提供从主机名到IP地址的映射support IN A 192.168.1.5。
如果你在地址为192.168.1.5上的support.example.com上有一个主机,你可以像上面的例子那样输入。
请注意,我们所写的主机并没有句号。
PTR: Pointer Records(指针记录)
PTR记录用于执行反向名称解析,允许某人指定IP地址然后找出对应的主机名。
这与A记录的功能相反:192.168.1.5 IN PTR support.example.com.
在这里,我们键入具有点号的完整主机名。
MX: Mail Exchange Records(邮件交换记录)
MX记录告诉其他站点关于你所在域的邮件服务器地址:example.com. IN MX 10 mail.
当然这个域以句号结束。数字10是邮件服务器的重要性标志,如果你拥有多个邮件服务器,其中较小的数字不太重要。
CNAME: Canonical Name Records(权威名称记录)
CNAME记录允许你为主机名创建别名。当你想提供一个易于记住的名称时,这很有用。
假设某个站点具有一个主机名为whatever-bignameis.example.com的Web服务器,并且由于系统是Web服务器,因此可以为主机创建一个名为www的CNAME记录或者别名。
你可以创建名为www.example.com的域名创建CNAME记录:
whatever-bignameis IN A 192.168.1.5
www IN CNAME whatever-bignameis
第一行通知DNS服务器关于别名的位置。第二行创建一个指向www的别名。
TXT记录
您可以将任何信息存储到TXT记录中,例如你的联系方式或者你希望人们在查询DNS服务器时可获得的任意其他信息。
你可以这样保存TXT记录:example.com. IN TXT ” YOUR INFO GOES HERE”.
此外,RP记录被创建为对host联系信息的显式容器:example.com. IN RP mail.example.com. example.com。
DNS TTL值
在/etc/named.conf文件的顶部,这里有一个$TTL条目。
该条目告诉BIND每个单独记录的TTL值(time to live,生存时间值)。
它是以秒为单位的数值,比如14,400秒(4个小时),因此DNS服务器多缓存你的域文件4个小时,之后会向你的DNS服务器重新查询。
你可以降低这个值,但是默认值通常是合理的。除非你知道你正在做什么。
捕获配置错误
当您写入域文件时,也许您忘记了一个句号或空格或其他任意错误。
你可以从日志诊断Linux DNS服务器错误。BIND服务通过/var/log/messages上的错误,可以使用tail命令来查看实时错误日志,须使用-f选项:$ tail -f /var /log/messages。
因此,当你编写域文件或修改/etc/named.config并重新启动服务时,显示错误之后,你可以从日志中轻松识别错误类型。
Host命令
在你成功添加或修改记录后,可以使用host命令查看主机是否正确解析。
host命令允许你将主机名解析为IP地址:$ host example.com。
此外,你可以执行反向查找:$ host 192.168.1.5。
你可以this在此篇文章中查看更多关于host和dig命令的信息。
Whois命令
whois命令用于确定域名的所有权及其拥有者的e-mail地址和联系电话:$ whois example.com.
Rndc命令
rndc工具可用于安全地管理名称服务器,因为与服务器的所有通信均通过数字签名进行身份验证。
此工具用于控制名称服务器和调试问题。 你可以通过以下方式检查Linux DNS服务器的状态:$ rndc status。
此外,如果你更改任何域(zone)文件,您可以重新加载服务,而无须重启命名服务:$ rndc reload example.com。
在这里,我们重新加载example.com域文件。 你可以重新加载所有域:$ rndc reload。
或者你可以添加新的域或更改服务的配置。 你可以重新加载配置,如下所示:$ rndc reconfig。
Linux DNS解析器
我们已经知道Linux DNS服务器的工作原理以及如何配置它。另一部分当然是与DNS服务器交互的(正在与DNS服务器通信以将主机名解析为IP地址的)客户端。
在Linux上,解析器位于DNS的客户端。要配置解析器,可以检查/etc/resolv.conf这个配置文件。
在基于Debian的发行版上,可以查看/etc/resolvconf/resolv.conf.d/目录。
/etc/resolv.conf文件中包含客户端用于获取其本地DNS服务器地址所需的信息。
第一个表示默认搜索域,第二个表示主机名称服务器(nameserver)的IP地址。
名称服务器行告诉解析器哪个名称服务器可使用。 只要你的BIND服务正在运行,你可以使用自己的DNS服务器。
使用Linux DNS服务器非常简单。 我希望你发现这篇文章很有用,并且很容易理解。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Linux下开源的DDR压力测试工具曝Linux恶意软件:让树莓派设备挖掘数字货币linux系统中不同颜色的文件夹及根目录介绍软件测试工程师必知必会Linux命令Linux下DNS服务器配置如何成为不可替代的Linux运维工程师?详解Linux进程(作业)的查看和杀死Linux 日志定时轮询流程详解比特币勒索病毒不只Windows系统有,Linux版的来了Linux日志定时轮询流程详解Linux iommu和vfio概念空间解构Linux系统如何低于TCP洪水攻击Linux无损调整分区大小Linux下防火墙配置实例Linux使用Jexus托管Asp.Net Core应用程序Linux中引号的那些事
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南