什么是DNS?
DNS:Domain Name Service 是一种应用层协议
用于ip地址和域名之间转换
使用(TCP/UDP) 53端口服务
DNS域名称
域名系统作为一个层次结构和分布式数据库,是一个倒置树形结构,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com。
完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。 下图显示与主机称为 im 内 qq.com DNS 树的示例。 主机的 FQDN 是 im.qq.com。
DNS 域的名称层次结构
DNS域名称空间的组织方式
按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例。
DNS 和 Internet 域
互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。 一些很多现有缩写,保留以供组织中,以及两个字母和三个字母的国家/地区使用的缩写使用下表所示。一些常见的DNS域名称如下图:
资源记录
DNS 数据库中包含的资源记录 (RR)。 每个 RR 标识数据库中的特定资源。我们在建立DNS服务器时,经常会用到SOA,NS,A之类的记录,在维护DNS服务器时,会用到MX,CNAME记录。
常见的RR见下图:
DNS的工作方式:
反向解析
正向解析
反向解析:
反向解析即为,将ip地址发送给DNS服务器,DNS服务器解析出匹配的域名返回。
一般用于邮件服务器中垃圾邮件的判定,比如你用 [email protected] 这个邮箱给我的邮箱 [email protected] 发了一封信。163邮件服务器接到这封信会查看这封信的信头文件,这封信的信头文件会显示这封信是由哪个IP地址发出来的。然后根据这个IP地址进行反向 解析,如果反向解析到这个IP所对应的域名是name.com 那么就接受这封邮件,如果反向解析发现这个IP没有对应到name.com,那么就拒绝这封邮件。
正向解析:
正向解析,将域名发送给DNS服务器,DNS服务器返回匹配的IP地址(暂不考虑递归和迭代),主机通过返回的IP地址进行访问。
在DNS解析的过程中有2中模式:递归和迭代
迭代: 按照解析规则,主机首先将域名发送给根服务器(.),跟服务器根据对应的顶级域返回相应的DNS服务器地址,主机再向得到的DNS服务器地址,进行DNS解析申请,该主机继续判断应交给哪个更接近的DNS服务器,这样层层迭代,直到找到域名的对应IP地址返回给主机。
递归: 主机将DNS请求发送给一个代理的服务器,该服务器进行迭代处理,得到结果返回给主机。从主机的角度,仅发送了一次,而后续的迭代操作由代理服务器完成。
DNS服务的实现,BIND
相关软件包
bind-9.8.2-0.30.rc1.e16
bind-utils-9.8.2-0.30.rc1.e1l.x89_64
bind-chrot-9.3.3-7.el6
/var/named/ 存数据
BIND服务器端程序
主要执行程序: /usr/sbin/named
服务脚本: /etc/init.d/named
默认监听端口:53
主配置文件:/etc/named.conf
保存DNS解析记录的数据文件位于:
/var/named/
named.conf文件配置基础:
options{}
listen-on {监听ip}
directory 工作目录
allow-query {允许查询网段}
recursion 是否允许递归 yes|no
logging{}
file 日志文件位置
zone{} 区域
在Centos6下进行BIND配置
正向配置:
第一步配置/etc/named.conf
options{ //函数中
listen-on port 53 { 192.168.1.104; };//默认端口,本机IP
.
.
allow-query {192.168.1.0/24; };//允许访问的网段和掩码
}
logging函数有关日志,无需改动
其后需添加zone函数
zone "." IN {
type hint;
file "named.ca";
};
zone "openex27.com" IN {
type master; //hint|master|slave|forward
file "openex27/openex27.zone"; //zone文件相对路径
};
第二步:
创建存放自建zone文件的文件夹
在该文件夹下创建并编辑相关zone文件
zone格式
首先设定SOA(Start Of Authority,授权信息开始)记录
@代表本地网络
$TTL 1D //TTL宏用于设置等待时间
@ IN SOA openex27.com. //区域地址 admin.openex27.com.//管理员邮件地址 (
2009021901 ;更新序列号
3H ;刷新时间
15M ;重试延时
1W ;失效时间
1D ;无效地址解析记录的默认缓存时间 )
IN NS ns1.openex27.com.
ns1 IN A 192.168.1.104
www IN A 192.168.1.104 //实现模拟负载均衡
www IN A 192.168.1.105 //A主机
web IN CNAME www //别名
第三步:
重启BIND服务,/etc/init.d/named restart
service named restart
测试:
dig -t NS openex27.com @192.168.1.104
反向配置:
部分配置同正向配置,此处仅增量添加
第一步配置:/etc/named.conf
添加反向解析的zone
注意:zone名要使用相反取名
例如:
zone "1.168.192.in-addr.arpa" IN {
type master;
file "openex27/1.168.192.arpa";
};
第二步配置:创建相关的zone文件
文件名仍需相反取名
第三步:测试
dig -x 待解析ip @DNS服务器地址
主从域名服务器:
主服务器:
编辑 /etc/named.conf
修改需要传递给从服务器的zone区域
在allow-transfer中添加从服务器地址
从服务器:
编辑 /etc/named.conf
修改或添加需要从主服务器接受的zone
type为 slave
masters {主服务器IP}
子域授权
子域授权,在原有的域上再划分出一个小的区域并指定新DNS服务器。在这个小的区域中如果有客户端请求解析,则只要找新的子DNS服务器。这样的做的好处可以减轻主DNS的压力,也有利于管理。这次只做正向区域的子域授权。
第一步:
在父域服务器上,编辑对应区域的zone文件
在其中添加子域信息
ops IN NS ns1.ops
ns1.ops IN A 192.168.1.105
第二步:
在子域服务器中编辑/etc/named.conf
添加该子域zone信息
创建对应的ops目录以及ops.openex27.com.zone文件
编辑之
第三步
重启服务或重读服务配置文件
service named restart
rndc reload
测试
dig -t A mail.ops.openex27.com @192.168.1.104
注意!若dig测试没有结果可能是/etc/named.conf中options函数下
这三个选项为yes,改成no,取消安全认证便可以测试
分离解析
来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果
构建分离解析:
第一步:
在DNS服务器的/etc/named.conf
在其中添加view
第二步:
创建对应的zone文件夹,在其中创建zone文件
openex27/openex27.com.zone.lan
openex27/openex27.com.zone.wan
保存退出
第三步:
重启named服务
第四部测试:
在不同的网段测试www.openex27.com所返回的地址