前言:
DNS(Domain Name System)是什么?一般来说像我们访问www.51cto.com或者www.google.com.hk 等等这些网站的时候,一般都是在浏览器这个地址,然后就可以访问到这个主机。这个地址叫做域名,而网络中的任何一个主机都是通过IP地址来标识的,也就是说,我们只有知道了对方的IP地址,我们才能成功实现访问操作。但是由于IP地址不太容易记忆(其实是非常难记),所以网络中就出现了域名这个概念,在访问的时候我们只需要输入这个好记的域名即可,网络中会存在着将相应的域名解析成IP地址的服务器,也就是DNS服务器。DNS服务器是一个可以将域名和主机IP地址相互映射的一个分布式数据库。
相关概念:
1、域名结构:
通常互联网上的主机域名一般结构为:主机名.三级域名.二级域名.一级域名。
根域,全世界现在只有13个顶级域服务器,分别位于美国(负责美国及其他地区)、荷兰(负责欧洲区域)、日本(负责亚太区域)。
一级域根据用途不同又可以分为很多类型。
.com :表示商业机构
.net :表示网络服务机构
.edu :表示教育机构
.cn :表示国家域(中国缩写)
…….
以我的博客地址为例:
2、DNS查询模式
DNS查询模式分为两种,一种为递归查询,另外一种为迭代查询。
1、递归查询:
域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。
二、迭代查询
迭代查询又称重指引,当服务器使用迭代查询时能够使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止。
用图的方式理解起来应该更好:
3、DNS服务器分类:
缓存DNS服务器:
主DNS服务器:
辅助DNS服务器:
4、DNS软件介绍:
在Linux下比较流行的DNS软件非BIND莫属了。BIND是现今互联网上最常使用的DNS服务器软件,BIND现在由互联网系统协会负责开发和维护。网站为www.isc.org 。可以在这个网站上查看关于BIND的介绍以及下载该软件。
安装DNS服务器
如果你的服务器能够联网,那么安装DNS服务器会是一件非常easy的事情。如果你的服务器不能联网或者你想挑战一下源码安装的乐趣,那么编译安装DNS会是一件非常有趣的事情。由于编译安装DNS会遇到一些很有趣的麻烦,这次我就使用yum进行安装。
安装bind
yum install bind –y
bind安装好了,接下来就是如何使用了。现在我要创建一个域名为beyond.com,域名内又有几台主机,分别为www、ftp、mail、其中www主机又能以web名称访问。
IP和域名对应关系如下:
192.168.144.134 dns.beyond.com (我的dns服务器,即本机服务器)
192.168.144.140 www.beyond.com
192.168.144.141 ftp.beyond.com
192.168.144.142 mail.beyond.com
web.beyond.com 是www.beyond.com 的别名,即通过访问web.beyond.com也能访问www.beyond.com
DNS正向解析与反向解析:
正向解析:将域名解析为IP地址
反向解析:将IP地址解析为域名
好了,接下来就来配置DNS来完成需求。
DNS主配置文件:/etc/named.conf 定义各区域的全局配置、定义区域、定义视图、定义日志
定义区域相关:/etc/named.rfc1912.zones rpm包安装DNS服务器之后生成的默认区域文件
名称解析库:/var/named/定义区域内资源数据文件
一般来说,我们需要关注的配置文件是/etc/named.conf /etc/named.rfc1912.zones 和/var/named/下的所有文件。
配置正向解析
我们先来打开/etc/named.rfc1912.zones创建一个beyond.com域。
在这个位置添加一个beyond.com域,
zone “beyond.com” IN { } ;表示创建域的名称。
type master;表示域的主机角色为主服务器
file “beyond.com.zone”; 表示区域数据文件,默认在/var/named/下
接下来,创建名称解析库
关于名称解析库:
1、名称解析库是一个文本文件,只能包含资源记录和宏定义,每一行称作一个资源记录。
2、资源记录类型
FQDN(全称域名)—>IP v4 :A (address)
FQDN(全称域名)—>IP v6 :AAAA
Domain(域)—>DNS Server :NS 域名服务器指定的区域DNS服务器的域名或IP地址
Domain(域)—>Master DNS: SOA 表明此DNS服务器是该DNS域中的数据的信息的最佳来源(在任何DNS记录文件中,都是以SOA记录开始)
FQDN—>FQDN:CNAME(别名)
IP—>FQDN:PTR
Domain—>Mail Server:MX (Mail exchange),有优先级:0-99
好了,开始创建名称解析库文件
vim /var/named/beyond.com.zone
$TTL 600 宏定义,默认TTL值为600秒
@ 表示SOA和域是一样的
IN 表示提供IP地址的域名类当与A、PTR或者CNAME记录一起使用时可将域名映射为IP地址,反之亦然
SOA记录中:
dns.beyond.com. 表示主DNS服务器FQDN (别忘记名称最后有个点.)
admin.beyond.com.表示管理员邮箱。由于在之前我们使用了@来表示SOA和域是一样的。所以这里管理员邮箱不能再使用@符号,而要使用.符号。
2014042601 表示序列号
2H 表示刷新时间(2小时)
5M 表示重试时间(5分钟)
7D 表示过期时间(7天)
6H 表示否定答案的TTL(6小时)
保存以上文件,退出。
cd到/var/named目录下,使用ls -l查看下刚创建的文件
可以看到这是一个root用户创建的文件,由于dns服务器是由named用户来运行的,所以我们要修改一下这个文件的默认属性。
chown root:named beyond.com.zone
chmod 644 beyond.com.zone
然后,我们验证一下我们的配置文件和名称解析库文件有没有错误。
named-checkconf
named-checkzone “beyond.com” beyond.com.zone
没有报错信息就是最好的信息。
然后,我们就可以启动dns服务器来验证一下了。
service named start
使用dig –t A www.beyond.com @192.168.144.134
如果你的系统中无法使用dig命令,那么请yum install bind-utils 进行安装
报错了。没有解析出来结果。原因在/etc/named.conf配置文件中,打开来看看。
注释掉以上三行信息(使用//),然后再次重启dns服务
service named restart
接着再次使用dig命令来验证我们的dns服务器
可以看到我们的DNS服务器已经可以正常解析到www.beyond.com这台主机了。
DNS正向解析成功。
dig常用命令使用:
-t:设置查询类型,A、AAAA、NS、PTR、MX、CNANME等
-x:逆向查询,通过IP地址查询域名
+trace:从跟服务器开始追踪一个域名的解析过程
@server:设置DNS服务器
这里,我们只需要修改/etc/resolv.conf文件将nameserver指向本机地址就不用dig的时候设置DNS地址了。
以上就是创建一个简单的正向解析域的过程。
反向解析域的创建
反向解析也就是通过IP地址解析到域名的过程,创建过程与正向解析类似。
创建过程:
首先也是在/etc/named.rfc1912.zones文件中添加区域
注意:这里zone的名称是要跟你域名所对应的网段的反向书写,即我的域名为192.168.144.0,那么这里就要写为144.168.192。
接着创建名称解析库文件/var/named/192.168.144.zone
反向记录中是不能有MX记录和CNAME记录的。
然后也修改该文件的相关属性。
重新加载dns服务,service named reload。
然后使用dig 命令查看反向解析是否能够成功。
dig –t axfr 144.168.192.in-addr.arpa 对反向区域做完全传送
解析单个IP地址对应的域名
解析成功,反向解析域配置成功。
在Ceont OS 6.5系统中,还有一个更为好用的命令来控制dns服务(named),就是rndc。
在实际生产环境中,我们更新DNS配置文件或者名称解析库文件后,都要使named服务reload或者restart使其生效,rndc可以更好的帮助我们实现这一功能。
rndc 远程DNS控制器,使用也非常简单
rndc status 显示状态信息
rndc reload 重新装载区域
rndc flush 清空缓存
rndc querylog 启动或关闭记录日志
rndc trace 设置debugging level级别
rudc notrace 取消debugging level
总结:dns是一个简单的网络服务,因为它的配置文件比较简单;但是由于dns的原理比较的复杂,想学好也不是一件简单的事。接下来会对dns的主从设置以及配置文件进行一个说明。