使用Linux DNS服务器非常简单。 这个过程是互联网的核心部分,是你服务器中非常重要的服务。
DNS(domain name system,域名解析系统)是针对计算机的命名系统。DNS服务器将IP地址转换为人类可读的地址。 这个过程是互联网的核心部分,是你服务器中非常重要的服务。 今天我们将讨论DNS服务器 - 特别是Linux DNS服务器 - 及其如何安装、配置和维护它。
在没有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等。
我们已经见过顶级域名的组成部分,如 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服务器的存在,并且会向他们推送更新。
这些服务器上不存放特定域名的配置文件。当客户端请求缓存服务器来解析域名时,该服务器将首先检查其本地缓存。如果找不到匹配项便会询问主服务器。接着这条响应将被缓存起来。您也可以轻松地将自己的系统用作缓存服务器。
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
这个服务使用 /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
,也就是说这是一个主域服务器。
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务