每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相对直观有意义的主机名就行了。这就是 DNS 协议所要完成的功能。

今天我们将讨论 DNS 服务器,特别是 Linux DNS 服务器,及其如何安装、配置和维护它。

/etc/hosts 文件

在没有 DNS 服务器的情况下,每个系统在本地网络上保留其主机名和相应 IP 地址列表的副本是合理的——特别是在没有互联网连接的小型站点上。

在 Linux 系统中,这个列表就是 / etc/hosts 文件。即使你没有 DNS 服务器或 DNS 服务器不可用,该文件也可以使用 / etc/hosts 文件将 IP 地址转换为名称。

也许你已经有 DNS 服务器了,但你也会因为其它原因而想保留这个文件。例如,系统可能需要在向外部查询之前在本地查找 DNS 服务器的 IP 地址;这意味着系统在查询 DNS 服务器之前先检索该文件,如果查找到对应的域则无须查询任何 DNS 服务器直接将其转换为 IP 地址。

试试编辑下 / etc/hosts 文件,并添加以下信息:127.0.0.1 google.com.

然后,返回你的浏览器,输入 google.com,看看结果如何。如果你的系统上安装了 Apache 并且本地主机正在运行,浏览器会显示 localhost 的索引页,而不是 Google 页面。

作为确认,你可以将 google.com 映射到任何网站的任何其他 IP 地址并查看结果。

因此这个文件所做的是将 IP 地址转换成名字,但这仅仅是在同一互相连接的网络下。那么外部网络和众多系统的所有记录是如何维护的呢?

每个人都需要维护自己的 / etc/hosts 文件并自己更新吗?

更为稳健的域名服务是 DNS 服务器。

域名

当你访问网站时,你可以输入 FQDN(Fully Qualified Domain Name,完全限定域名)或类似 likegeeks.com 或 www.google.com 的域名。在域名中从右到左的两个点之间的每个文本依次是顶级域组件、二级域组件和三级域组件。

所以,com 是顶级域名组件; google 是二级域组件; 而 www 是三级域名组件。

实际上,当你访问任何网站时,浏览器会默认在域的末尾添加一个不可见的点,因此该域将像 www.google.com. 一样。该点被称为根域。

该点是由一大堆称为根域名服务器的特殊服务器管理的。截止这篇文章发表前,世界上有 13 个根域名服务器。你可以把他们当成互联网的大脑 – 如果他们失效了,世界上就没有互联网了。

为什么是 13 呢?因为如果世界的某处地震可能会破坏一个根服务器,所以其他的服务器可以继续提供服务直到受影响的服务器重新上线。

这些根名称服务器按字母顺序命名,名称如 a.root-server.net、b.root-server.net 等。

顶级域名 (或称作一级域名 TLDs)

我们已经见过顶级域名的组成部分,如 com。可以认为,顶级域名为 DNS 命名空间提供分类组织。

顶级域名(TLD)根据地理或功能方面分为几类。

截止本文撰写时,网上有 800 多个顶级域名。

顶级域名类别有:

  • 通用的顶级域名如:org, .com, .net, .gov, .edu 等等

  • 国家代码顶级域名如:us, .ca 等,分别对应美国和加拿大的国家代码

  • 新的品牌顶级域名,允许组织创建最多 64 个字符的 TLD,如:.linux, .microsoft, .companyname 等

  • 基础架构顶级域名如:.arpa

子域名

当你访问一个类似 mail.google.com 这样的网站, 这里的 mail 就是 google.com 的子域名.

只有 mail.google.com 的名称服务器知道他下面存在的所有主机,所以 Google 会回复是否有一个叫 mail 的子域名。根名称服务器对此并不知情。

DNS 服务器的类型

一共有三种 DNS 服务器。

主 DNS 服务器

这些服务器上存放了特定域名的配置文件,并且基于此权威地规定了特定域名的地址。主 DNS 服务器知道全部在它管辖范围的主机和子域名的地址。

辅助 DNS 服务器

这些服务器作为主 DNS 服务器的备份,也承担一定负载。主服务器知道辅助 DNS 服务器的存在,并且会向他们推送更新。

缓存 DNS 服务器

这些服务器上不存放特定域名的配置文件。当客户端请求缓存服务器来解析域名时,该服务器将首先检查其本地缓存。如果找不到匹配项便会询问主服务器。接着这条响应将被缓存起来。您也可以轻松地将自己的系统用作缓存服务器。

搭建 Linux DNS 服务器

Linux 下有很多实现了 DNS 功能的包,不过我们只关注 BIND DNS 服务器。它用于世界上大多数 DNS 服务器。

如果你在使用基于 Red Hat 发行版的 Linux,比如 CentOS,可以像这样安装:$ dnf -y install bind

如果你使用基于 Debian 的操作系统,比如 Ubuntu:$ apt-get install bind9

安装完成之后就可以启动它并让它在计算机启动的时候一并启动起来。

$ systemctl start named

$ systemctl enable named

配置 BIND

这个服务使用 /etc/named.conf 作为配置文件。

BIND 在那个文件中使用像下面这样的一些语句:

  • options: 用于全局 BIND 配置。

  • logging: 配置哪些需要记录,哪些需要忽略。我推荐你看看 Linux syslog server。

  • zone: 定义 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" {

type master;

file likegeeks.com.db

};

包含主要区域信息的文件存放在 /var/named 目录下,从 options 可知,这是一个工作目录。

注意:软件服务器或者托管面板会根据你的域名自动为你创建主域服务器信息的文件名,因此如果你的域名是 example.org,那么你主域服务器信息的文件就为 /var/named/example.org.db。

类型为 master,也就是说这是一个主域服务器。

定义一个辅助域服务器

同定义一个主域服务器一样,辅助域服务器的定义稍微有些变化:

zone    "likegeeks.com" {

type slave;

masters IP Address list; ;

file likegeeks.com.db

};

对于辅助域服务器来说,它的域名和主域服务器是一样的。上述语法里的的 slave 类型表示这是一个辅助域服务器,“masters IP Address list” 表示辅助域服务器中区域文件内的信息都是通过主域服务器中区域文件内的信息复制过来的。

定义一个缓存服务器

即使你已经配置了主域或者辅助域服务器,你仍有必要(不是必须)定义一个缓存服务器,因为这样你可以减少 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。

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 服务器非常简单。我希望你发现这篇文章很有用,并且很容易理解。

来自:开源中国

译文:https://www.oschina.net/translate/linux-dns-server-installation-amp-configuration-am

原文链接 | http://t.cn/R3dSKnp

7月云计算免费训练营

时间:

7月24日 - 7月30日 (为期5天,27/28日休息)

课程内容:

  • 什么是Linux、云计算、虚拟化;

  • KVM虚拟化实战;

  • Linux操作系统由来;

  • 企业级Linux服务器安装方案;

  • 破解Linux系统密码;

  • Linux命令行格式;

  • Linux下目录和文件管理;

  • FTP服务器演示;

  • Web服务器演示;

  • DNS服务器演示;

  • 初识网络工程;

  • Linux云计算行业发展前景等等。

地点:达内全国各中心校区,就近选择。

讲师:行业大咖,技术大牛面授课程。

免费报名方式:长按下方二维码即可免费申请▼

*本次免费训练营异常火爆,座位有限,各位童鞋抓紧时间,先报先得。

PS:记得查收小编送你的免费大礼包呦~

福利 | 一万多套PPT模板等你免费来拿!无条件领取!

免费送 | 1000多套简历模板免费拿,附赠简历制作教程!

免费领 | 《Shell脚本 100例》电子书免费拿,运维必备干货~

▼▼点击【阅读原文】,22大互联网热门课程任选免费学

Linux 服务器安装、配置和维护,一文看全~相关推荐

  1. Linux 服务器安装配置 TimeMachine

    Linux 服务器安装配置 TimeMachine 1.安装 Time Machine 相关的后台服务 (1) 安装netatalk: apt-get install netatalk (2) 安装 ...

  2. Linux 服务器安装配置

    Linux 服务器安装配置 1.硬盘分区 Linux 服务器的硬盘分区结构如下图所示: 2.安装过程 (1) 安装 Ubuntu12.04或Debian7.8(amd64)桌面版,建议安装英文版.[以 ...

  3. Linux服务器安装配置Redis

    Linux服务器安装配置Redis 一.下载安装redis 1.下载压缩包进行解压 官网下载地址:https://redis.io/download/ 通过Xshell和Xftp将压缩包移动到Linu ...

  4. 关于我在学习Javaweb时对Linux服务器安装配置jdk,tomcat,mysql的一些学习心得

    学习javaweb有一段时间了,最近刚好完成一个小的web项目. 勿喷!!!!!!!! 主要参考问题: 1.jdk,tomcat,mysql的安装配置. 2.tomcat,mysql的开机自启(我不会 ...

  5. Linux服务器安装/配置宝塔bt,附Xshell和Xftp下载安装和简单使用教程

    文章目录 前言 一.安装Xshell7和Xftp7 二.使用Xshell连接Linux服务器 1.服务器配置 2.Xshell配置 三.安装宝塔bt 1.服务器配置 2.安装配置 总结 前言 之前使用 ...

  6. Linux服务器安装配置JDK

    一.准备工作: 1.登录服务器,切换到root用户(su - root,然后输入密码,按enter),进入根目录:cd / 2.进入要安装jdk的目录,自己可以创建一个java目录,执行命令如下: c ...

  7. 一文看全北科智能车创新历程

    None****None看到北京科技大学智能车队指导教师杨珏老师在朋友圈中发送一个推文,详细介绍了北京科技大学智能车队在团队.传承以及创新方面的情况.特别编辑了一个短视频,对于在历届比赛中,北科智能车 ...

  8. 一文看全!史上以来的59家测序仪公司

    本文来源于微信公众号"尹哥聊基因"(ID:yingeliaojiyin),系授权转载. 前言 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你 ...

  9. PCB板上的字母代表哪些元器件?一文看全!

    在PCB板上,有很多的丝印字母,如R109.C113.Q105.D206等.这些字母/数字都表示什么意思呢? PCB板上的字母表示的是电子元器件的简称,在字母的后面还往往会跟上数字,这些数字也都是有含 ...

最新文章

  1. Apache服务器部署(2)
  2. 真正开始记录自己学习技术过程的点滴
  3. 查看MySQL表占用空间大小
  4. DR.com客户端解密过程逆向分析
  5. SpringBoot整合RabbitMQ测试代码
  6. ArcGIS API for JavaScript——绘制工具(Draw)
  7. launch edge 和 latch edge 延迟以及静态时序分析相关概念
  8. Objective-C 常用结构体
  9. 有必要买吗_婴儿床有必要买吗 婴儿床有用吗
  10. c语言谭浩强第八章函数PPT,清华谭浩强C语言 第8章 函数.ppt
  11. python正则匹配中文
  12. 013_itop4412设置多个GPIO
  13. Monkey测试------报错日志分析参考
  14. 成都Uber优步司机奖励政策(2月25日)
  15. oracle用户授权只读,只读权限oracle用户
  16. linux内核计算次方,linux内核bic和cubic实现
  17. DNF 单机游戏 手机游戏 网络游戏 推荐游戏 TXT 小说 外挂 辅助
  18. 李章最帅!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  19. OMAPL138的DSPLINK开发入门
  20. .git文件泄露的一次渗透darkhole2

热门文章

  1. STM32CUBE+自平衡车实践篇3.4-STM32cueb配置编码器+车轮速度测量代码实现
  2. 【AliOS Studio】AliOS Studio初体验
  3. 编辑为什么建议转投_编辑回信解读 —“建议转投子刊”实例
  4. HTML之表格与表单
  5. 虚拟机增加一块新硬盘
  6. java Thread的start和run方法的区别
  7. SVN提交失败 can‘t open file‘\db\txn-current-lock’
  8. Cartoon-Stylegan2:快来将你的图片漫画风
  9. 30天自制操作系统——第二十三天窗口操作
  10. ES6 极简教程(ES6 Tutorial) 文 / 东海陈光剑