每位IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS合同所要完成的功能。
明天我们将讨论DNS服务器深度linux系统,非常是LinuxDNS服务器linux桌面,及其怎么安装、配置和维护它。
/etc/hosts文件
在没有DNS服务器的情况下,每位系统在本地网路上保留其主机名和相应IP地址列表的副本是合理的——特别是在没有互联网联接的大型站点上。
在Linux系统中,这个列表就是/etc/hosts文件。虽然你没有DNS服务器或DNS服务器不可用,该文件也可以使用/etc/hosts文件将IP地址转换为名称。
其实你早已有DNS服务器了,但你也会由于其它缘由而想保留这个文件。诸如,系统可能须要在向外部查询之前在本地查找DNS服务器的IP地址;这意味着系统在查询DNS服务器之前先检索该文件,假如查找到对应的域则无须查询任何DNS服务器直接将其转换为IP地址。
试试编辑下/etc/hosts文件,并添加以下信息:127.0.0.1.
之后,返回你的浏览器,输入,瞧瞧结果怎样。假如你的系统上安装了Apache而且本地主机正在运行,浏览器会显示localhost的索引页,而不是Google页面。
作为确认,你可以将映射到任何网站的任何其他IP地址并查看结果。
因而这个文件所做的是将IP地址转换成名字,但这仅仅是在同一相互联接的网路下。这么外部网路和诸多系统的所有记录是怎样维护的呢?
每位人都须要维护自己的/etc/hosts文件并自己更新吗?
更为稳健的域名服务是DNS服务器。
域名
当你访问网站时,你可以输入FQDN(FullyQualifiedDomainName,完全限定域名)或类似或的域名。在域名中从右到左的两个点之间的每位文本依次是顶尖域组件、二级域组件和五级域组件。
所以,com是顶尖域名组件;google是二级域组件;而www是五级域名组件。
实际上,当你访问任何网站时,浏览器会默认在域的末尾添加一个不可见的点,因而该域将像一样。该点被称为根域。
该点是由一大堆称为根域名服务器的特殊服务器管理的。截至这篇文章发表前,世界上有13个根域名服务器。你可以把她们当做互联网的脑部–如果她们失效了,世界上就没有互联网了。
为何是13呢?由于假如世界的某处水灾可能会破坏一个根服务器,所以其他的服务器可以继续提供服务直至受影响的服务器重新上线。
这种根名称服务器按字母次序命名linux 服务器安装,名称如、等。
顶尖域名(或叫做一级域名TLDs)
我们早已见过顶尖域名的组成部份,如com。可以觉得,顶尖域名为DNS命名空间提供分类组织。
顶尖域名(TLD)依据地理或功能方面分为几类。
截至本文撰写时,网上有800多个顶尖域名。
顶尖域名类别有:
子域名
当你访问一个类似这样的网站,这儿的mail就是的子域名.
只有的名称服务器晓得他下边存在的所有主机,所以Google会回复是否有一个叫mail的子域名。根名称服务器对此并不知情。
DNS服务器的类型
一共有三种DNS服务器。
主DNS服务器
这种服务器上储存了特定域名的配置文件,但是基于此权威地规定了特定域名的地址。主DNS服务器晓得全部在它管辖范围的主机和子域名的地址。
辅助DNS服务器
这种服务器作为主DNS服务器的备份,也承当一定负载。主服务器晓得辅助DNS服务器的存在,而且会向她们推送更新。
缓存DNS服务器
这种服务器上不储存特定域名的配置文件。当顾客端恳求缓存服务器来解析域名时,该服务器将首先检测其本地缓存。假如找不到匹配项便会寻问主服务器。接着这条响应将被缓存上去。您也可以轻松地将自己的系统用作缓存服务器。
搭建LinuxDNS服务器
Linux下有好多实现了DNS功能的包,不过我们只关注BINDDNS服务器。它用于世界上大多数DNS服务器。
假如你在使用基于RedHat发行版的Linuxlinux 服务器安装,例如CentOS,可以像这样安装:$dnf-yinstallbind
假如你使用基于Debian的操作系统,例如Ubuntu:$apt-getinstallbind9
安装完成以后就可以启动它并让它在计算机启动的时侯一并启动上去。
$systemctlstartnamed
$systemctlenablenamed
配置BIND
这个服务使用/etc/named.conf作为配置文件。
BIND在哪个文件中使用像下边这样的一些句子:
在options句子中可以见到BIND的工作目录在/var/named。
zone句子可用于定义DNS区域,例如域名,它包含子域名和。
上述三个域名(主域名和子域名)都有一个由zone句子定义的区域。
定义一个主域服务器
我们晓得DNS服务器类型有主域名服务器、辅助域名服务器和缓存域名服务器。不同于缓存域名服务器,主域名服务器和辅助域名服务器在应答过程中是处于同等地位的。
在/etc/named.conf的配置文件中,你可以使用如下语法定义一个主域服务器:
zone""{
typemaster;
.db
};
包含主要区域信息的文件储存在/var/named目录下,从options可知,这是一个工作目录。
注意:软件服务器或则托管面板会按照你的域名手动为你创建主域服务器信息的文件名,因而假如你的域名是,这么你主域服务器信息的文件就为/var/named/.db。
类型为master,也就是说这是一个主域服务器。
定义一个辅助域服务器
同定义一个主域服务器一样,辅助域服务器的定义稍为有些变化:
zone""{
typeslave;
mastersIPAddresslist;;
.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文件里,你的系统就可以以缓存服务器来工作了。而且怎么引用类似.db,localhost.db,和127.0.0.rev那些文件中的内容呢?
这种文件包含具有个别选项的每位区域的DNS记录类型。这么,这种DNS记录类型是哪些以及它们是怎么写的?
DNS记录类型
数据库文件包含例如SOA、NS、A、PTR、MX、CNAME和TXT在内的记录类型。
我们瞧瞧每一种类型都是怎样记录的吧。
SOA:起始授权机构记录
SOA记录按如下方式开始描述一个站点的DNS条目:
.86400INSOA..(
2017012604;serial
86400;refresh,seconds
7200;retry,seconds
3600000;expire,seconds
86400;minimum,seconds
)
第一行以域名开始,以句号结束——该句子和/etc/named.conf文件中的区域定义是一致的。我们要一直记得,DNS配置文件是非常挑剔的。
IN告诉域名服务器:这是一条网路记录。
SOA告诉域名服务器:这是一条起始授权机构记录。
.是该文件所在域的域名服务器的完全合格域名(FQDN:FullyQualifiedDomainName)。
.是域管理员的邮箱地址。你会发觉这个邮箱地址没有“@”标志,而是被句号所替代,但是末尾还有一个句号。
第2行是一个序列码,它被拿来告诉域名服务器文件是哪些时侯升级的。为此,假如你对区域码做了变更,你必须对这个序列码进行递增。这个序列码的格式是YYYYMMDDxx,其中的xx是从00开始的。
第3行是每秒刷新率。这个值被拿来告诉第二个域名服务器查询主服务器中的记录是否早已被更新的频度。
第4行是每秒重试的频度。假如第二个服务器多次尝试联接主域名服务器来进行更新检查,但未能联接上的时侯,第二个服务器都会在每秒内重试指定的数值次数。
第5行是超时指示。其目的是为了第二个服务器能将区域数据缓存出来。这个值告诉那些服务器假如它们不能联接到主服务器来进行更新,这么它们都会在这个指定数值秒数以后抛弃这个值。
第6行告诉缓存服务器,假如它们不能联接到主域名服务器时,它们应当在超时前等待多久。
NS:NameServerRecords(名称服务器记录)
NS记录用于指定那个名称服务器维护该域的记录。
你可以这样编撰的NS记录:
INNS.
INNS.
并不须要有2个NS记录,而且一般偏好有备份名称服务器。
A和AAAA:AddressRecords(地址记录)
A记录用于提供从主机名到IP地址的映射supportINA192.168.1.5。
假如你在地址为192.168.1.5上的上有一个主机,你可以像前面的事例那样输入。
请注意,我们所写的主机并没有句号。
PTR:PointerRecords(表针记录)
PTR记录用于执行反向名称解析,容许某人指定IP地址之后找出对应的主机名。
这与A记录的功能相反:192.168.1.5IN.
在这儿,我们键入具有点号的完整主机名。
MX:MailExchangeRecords(短信交换记录)
MX记录告诉其他站点关于你所在域的短信服务器地址:.INMX10mail.
其实这个域以句号结束。数字10是短信服务器的重要性标志,假如你拥有多个电邮服务器,其中较小的数字不太重要。
CNAME:CanonicalNameRecords(权威名称记录)
CNAME记录容许你为主机名创建别称。当你想提供一个便于记住的名称时,这很有用。
假定某个站点具有一个主机名为的Web服务器,但是因为系统是Web服务器,因而可以为主机创建一个名为www的CNAME记录或则别称。
你可以创建名为的域名创建CNAME记录:
whatever-bignameisINA192.168.1.5
wwwINCNAMEwhatever-bignameis
第一行通知DNS服务器关于别称的位置。第二行创建一个指向www的别称。
TXT记录