一、DNS基础知识(先科普一下):
1、DNS出现的环境:
TCP/IP协议通信是基于IP地址的,但是网络管理员无法记住那一串串单调的数字。因此大家基本上是通过访问计算机域名,然后通过 DNS服务器将计算机域名解析为IP地址来实现的。
2、什么是DNS:
DNS:域名系统(Domain Name System)用于命名组织到域层次结构中的计算机和网络服务。DNS命名用于TCP/IP网络中,通过用户友好的名称查找计算机。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相关的IP地址。DNS客户端请求过程为:本地hosts文件-------缓存--------DNS服务器(逐一查找,那一步有,就不用找下一步了,没有就按顺序查找)。客户端查询示例图:
3、DNS域命名空间简介:
DNS域命名空间具有层次性的,一般可以分为根域、顶级域、二级域、子域以及主机名、其结构如下图:
(1)、根域:用“.”表示,默认情况下不需要表示出来,全世界目前有13台根域服务器,由INIC管理;
(2)、顶级域 :位于根域下层,是由三个字母组成的名称,又可分为国家或地区名称和使用机构名称(国家或地区名如:.cn,.hk,.tw,.jp等);
(3)、二级域:位于顶级域下面,是在Internet上使用而注册的域名,可以自定(但前提是没被别人使用);
(4)、子域 :是按公司或组织的具体情况而从已注册到的个人或组织的域名中按部门或地理位置创建,位于二级域下面;
(5)、主机名:位于DNS域命名空间的最低层,主要是的位于Internet或公司及组织内部的计算机主机名。
4、DNS服务器类型:
根据管理的DNS区域不同,DNS服务也有不同的类型。一台DNS服务器可以同时管理多个区域,因此也可以同时属于多种DNS服务器类型。目前在企业网络部署环境中主要有以下四类:
(1)、主DNS服务器:
当DNS服务器管理主要区域时,被称之为主DNS服务器,它是主要区域中的集中更新源;它的区域数据存放在本地文件中,只有自己才有写权限。当主DNS服务器出现故障时,从服务器(只读取主DNS服务的数据没有写主DNS服务器的权限)可以指定过期时间到达之前应答DNS客户端的请求。
(2)、从DNS服务器:
一般在DNS服务器针对实际使用中总建议至少使用两台,目的有两点:一是在同一个区域可以实现负载均衡,降低主DNS服务器的负载,同时提高性能。其次,当主DNS服务出现故障时,从DNS服务通过与主DNS服务器“复制操作”的实施方式(从DNS服务器对主DNS读取数据进行更新区域数据),为客户端口DNS解析请求提供答复(但要在指定过期时间之前)。
(3)、缓存DNS服务器:
即没有管理任区域的DNS服务器,也不会像从DNS器一样产生区域复制操作,它只是缓存名称并且使用缓存信息来应答DNS客户端的解析请求。刚安装好的DNS服务器默认就是一台缓存服务器,可以用来减少DNS客户端访问外部DNS的网流流量,降低解析时间(目前应用广泛)。
(4)、转发DNS服务器:
转发DNS服务器允许当本地DNS服务器无法对DNS客户端的解析请求进行本地解析时,转发DNS客户端发送的解析请求到上游DNS服务器。此时,本地DNS服务器又称为转发服务器,而上游DNS服务器又称为转发器。
在Linux系统还提供了条件转发功能,可以针对不同的域名请求转发到不同的转发器(上游DNS服务器)。
5、DNS解析类型:
在部署一台DNS服务器时,必须先考虑到DNS解析类型,以此来决定DNS服务器类型,DNS解析类型可以分为以下两类:
(1)、正向查找解析:getipbyhostname
用于域名到IP地址,当DNS客户端请求解析某个域名时,DNS服务器通过正向查找,返回给对应的IP给请求的DNS客户端。
(2)、反向查找解析:gethostnamebyip
用于IP地址到域名,当DNS客户端请求解析某个IP时,DNS服务器通过反向查找,返回给对应的域名给请求的DNS客户端。
二、用到的DNS服务器软件包及相关工具(Linux系统下)
1、所需程序包:
bind-libs:被bind和bind-utils包的程序共同用到的库文件
bind-utils:bind客户端程序集,例如dig,host,nslookup等;
bind:提供的dns server程序,解析器库文件以及几个常用的测试程序
bind-chroot:选装,在互联网上使用时,建议安装----让named运行在jail模式下(沙箱模式)
2、配置文件位置:
主配置文件:/etc/named.conf
区域数据文件:/var/named/ZONE_FILE.ZONE(正向)
:/var/named/ZONE_FILE.ZONE(反向)
3、所用到的工具:
语法测试工具:检查配置文件语法错误
:named-checkconf;测试主配置文件
:named-checkzone;测试区域数据文件
测试工具:dig 、host、nslookup
rndc命令:named服务控制命令
:rndc reload;重载区域配件文件
:rndc status;查看服务状态
:rndc flush;清除服务缓存
端口开放及防火墙添加:53/tcp/udp 953/tcp
:iptabls
:firewall-cmd
温馨提示:测试时千万要注意时间同步问题,否则会出现让你想不到的错误
ntpdate 172.16.0.1(可用计划任务自动同步时间,可是其他时间服务器地址)
三、配置文件格式:
1、全局(主)配置文件:/etc/named.conf
全局配置段:
options {………}
日志配置段:
logging {………}
区域配置段:
zone {………}
2、区域数据库文件:(资源记录或解析库文件):Resource Record,简称rr:
记录类型:A,AAA,PTR,SOA,NS,CNAME,MX
SOA:Start of Authority,起始授权记录;一个区域解析库有且只能有一个SOA记录,而且必须放在第一条。
NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的; A:Address,地址记录,从FQDN解析为IP地址的记录(IPv4)。
AAAA:地址记录,从FQDN解析为IP地址的记录(IPv4)一个主机可以有多个IP(实现轮巡服务),一个IP也可以有多个IP。
CNAME:Canonical Name,别名记录。
PTR:Pointer,从IP解析到FQDN。
MX:Mail exchanger,邮件交换器(标记邮件服务器的)可有多个,但有优先级的概念
优先级:0-99,数字越小优先级越高:
例如(SOA):aaa.com. 86400 IN SOA aaa.com. admin.aaa.com. ( 2017010801; serial 序列号
2H ;refresh 刷新时间
10M ;retry 重试时间
10W ;expire 过期时长
1D ;negative answer ttl 答案缓存时长
)
3、配置解析一个正向区域:
以aaa.com域为例:
(1)、定义区域
在主配置文件中或主配置文件辅助配置文件中实现
zone "ZONE_NAME"
(2)、建立区域数据文件(主要记录为A或AAAA记录)
在/var/named目录下建立 区域数据文件;文件为:/var/named/aaa.com.zone 后面的文件名为自建的
权限及属组修改
chgrp named /var/named/aaa.com.zone
检查语法错误:
named-checkzone ZONE_NAME ZONE_FILE
named-checkconf
(3)、让服务器重载配置文件和区域数据文件
rndc reload或者systemctl reload named.service
4、配置解析一个反区域:
示例:区域名称38.16.172.in-addr.arpa为例:
(1)、定义区域
主配置文件中或主配置文件辅助配置文件中实现
zone "ZONE_NAME"
注意:反向区域的名字
反写的网段地址:.in-addr.arpa
38.16.172.in-addr.arpa
(2)、建立区域数据文件
在/var/named目录下建立 区域数据文件;文件为:/var/named/38.16.172.zone 后面的文件名为自建的 权限及属组修改
chgrp named /var/named/38.16.172.zone
chmod o= /var/named/38.16.172.zone
检查语法错误:
named-checkzone ZONE_NAME ZONE_FILE
named-checkconf
(3)、让服务器重载配置文件和区域数据文件
rndc reload或者systemctl reload named.service
上面啰嗦了半天,大家累了,来看点轻松愉快的。。。。。。。。。。。。。。。。。
四、架设DNS服务器实战
安装说明及服务器之间关系:
主DNS服务器-----CentOS 7.1
域解析 ns :
_IP:172.16.38.100
本地区域:aaa.com
主 机:www
从DNS服务器----CentOS 6.7
域解析 ns1:
_IP:172.168.38.200
本地区域:aaa.com
子域DNS服务器---CentOS 6.7
域解析 ns2:
本地区域:gayj.aaa.com
主 机:www
全局转发:直接在子域主配置中设置转发
架设安装正式开始。。。。。。
(一)、主DNS服务器
系统CentOS 7.1、 域解析ns : IP:172.16.38.100 本地区域:aaa.com, 主 机:www
1、先检测是否已经安装:
2、开始安装
3、设置开机启动及开放端口和添加防火墙
设置开机启动
添加防火墙端口 53/tcp/udp 同样方法添加953
查看防火墙配置结果
4、查看服务运行状况
5、区域配置文件:/etc/named.conf
options 全局配置字段修改如下-------172.16.38.100的53号端口作为主DNS监听端口
注:下面allow-query是注释了的,不然只能本地解析
zone区域配置段新添加两段-------主DNS正向区域和反向区域
测试配置文件有没有语法错误------没返回值就说明正常
6、创建并配置区域数据文件:
/var/named/aaa.com.zone
正向区域数据文件------注意后面三段:ns为主服务器自身配置,ns1为从服务配置,ns2为子域授权
对文件进行语法检查
/var/named/aaa.com.zone
反向区域数据文件------注意后面三段:ns为主服务器自身配置,ns1为从服务配置
对文件进行语法检查
7、更改/var/named/172.16.38.zone和/var/named/aaa.com.zone的属组为named
8、重载配置文件和服务
9、解析测试
正向测试:
如果测试主DNS自己主机出现下面状况,请用rndc flush清除DNS缓存
清除DNS缓存
重新解析主DNS主机
正向解析ftp.aaa.com
反向解析测试
主DNS自身反向解析(主要针对内部区域使用)
(二)、从DNS服务器
系统CentOS 6.7 域解析ns1 : IP:172.16.38.200 本地区域:aaa.com, 主 机:www
1、先检测是否已经安装:
2、开始安装
3、设置开机启动及防火墙
chkconfig --list named
添加防火墙
保存防火墙规则
查看防火墙状态
4、查看DNS服务状态
5、区域配置文件:/etc/named.conf(从服务一般只配置这个文件)
options 全局配置字段修改如下-------172.16.38.200的53号端口作为从DNS监听端口
zone区域配置段新添加两段-------从DNS正向区域和反向区域
测试配置文件有没有语法错误------没返回值就说明正常
6、重载区域配置文件和服务
7、解析测试
正向解析主DNS上的主机到IP
反向解析主DNS上的IP到主DNS的主机
正向解析互联网上的主机到IP
(三)、子域授权
系统CentOS 6.7 域解析ns2 : IP:172.16.38.8 本地区域:gayj.aaa.com, 主 机:www
1、先检测是否已经安装:
2、开始安装
3、设置开机启动及防火墙
chkconfig --list named
添加防火墙
保存防火墙规则
查看防火墙状态
4、查看DNS服务状态
5、区域配置文件:/etc/named.conf(从服务一般只配置这个文件)
options 全局配置字段修改如下-------172.16.38.8的53号端口作为从DNS监听端口
zone区域配置段新添加一段-------子域DNS正向区域
测试配置文件有没有语法错误------没返回值就说明正常
6、配置子域的区域数据文件:/var/named/gayj.aaa.com.zone
检查语法错误
7、重载区域配置文件和服务
8、解析测试
利用主DNS正向解析解析到自己区域名主机
利用从DNS正向解析到自己区域名主机
正向解析互联网上的主机到IP
(四)、全局定向转发
直接在子域中实施,因为子域不能解析主DNS的主机区域到IP
1、在子域全局文件配置就行(注意CentOS7与CentOS配置方法区别在于{}和;)下图为CentOS6
2、测试语法错误
3、重载全局配置文件
4、用子域解析主DNS的主机区域
东西太多,如有点小错请指正。