DNS服务的原理介绍:
dns(Domain Name Service,域名解析服务) 为c/s架构的服务
通常默认的监听的端口为:53/tcp 53/udp
将dns服务实现的应用程序为:bind (rpm包 )
DNS的树状结构:
根域为:.
tld:(Top Level Domain 顶级域)
组织域:.com, .net, .org, .gov, .edu, .mil
国家域:.iq, .tw, .hk, .jp, .cn, ...
DNS查询内型:
递归查询:DNS请求被服务器接受后,如果属于此服务器管辖范围则请求上级服务器依次传递请求,并且依次传递结果给发出请求的主机。
迭代查询:DNS请求被服务器接受后,如果不是自己管辖范围,让客户端访问根域服务器,然后跟域通知客户端去访问下级服务器,直到最后客户端访问管辖请求域名的服务器为止。
DNS客户端设置使用的DNS服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。
DNS解析方式:
正向解析: 名称(域名)——>IP
反向解析: IP——>名称(域名)
**二者的名称空间,非为同一个空间,即非为同一棵树;因此,也不是同一个解析库
DNS服务器类型:
主DNS服务器;从DNS服务器:负责解析一个域或多个域。
缓存服务器:不负责解析域名
区域(zone)和域(domain)
例:
xxxx.com为域:
将xxx.com进行正向解析时:正向解析库为区域
将xxx.com进行反向解析时:反向解析库为区域
区域传送:
全量传送:axfr, 传送整个数据库;
增量传送:ixfr, 仅传送变量的数据;
区域的数据库文件中相关参数含义:
资源记录:Resource Record, 简称rr;
记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;
NS:Name Service,域名服务记录;
A: Address, 地址记录,FQDN --> IPv4;
AAAA:地址记录, FQDN --> IPv6;
CNAME:Canonical Name,别名记录;
PTR:Pointer,IP --> FQDN
MX:Mail eXchanger,邮件交换器;
优先级:0-99,数字越小优先级越高;
资源记录的定义格式:语法: name [TTL] INRR_TYPE value
SOA:起始授权记录name: 当前区域的名字;
value:有多部分组成
(1) 当前区域的区域名称(也可以使用主DNS服务器名称);
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
(3) (主从服务协调属性的定义以及否定答案的TTL)
注意:任何解析库文件的第一个记录的类型必须是SOA
例:
@ IN SOA xxx.com mailxxx.com (
20000001 ; serial 序列号#每增加配置版本号+1
1D ; refresh 刷新时间间隔
1H ; retry 重式时间间隔
1W ; expire 过期时常
3H ) ; minimum 否定答案的缓存时长
NS:Name Service,域名服务记录name: 当前区域的区域名称
value:当前区域的某DNS服务器的名字,例如dns.xxx.com.;
注意:一个区域可以有多个ns记录;例:
xxx.com IN NS dns1.xxx.com
xxx.com IN NS dns2.xxx.com
MX:Mail eXchanger,邮件交换器;name: 当前区域的区域名称
value:当前区域某邮件交换器的主机名;
优先级:0-99,数字越小优先级越高;
注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;例:
xxx.com IN MX 20 mx1.xxx.com
xxx.com IN MX 10 mx2.xxx.com
A:Address, 地址记录,FQDN --> IPv4;name:某FQDN,例如www.xxx.com.
value:某IPv4地址;例:
www.xxx.com IN A 172.16.0.55
www.xxx.com IN A 172.16.1.11
edu.xxx.com IN A 172.16.0.55
AAAA:地址记录, FQDN --> IPv6;name:FQDN //表示的为域
value: IPv6 //代表的IPV6
PTR:Pointer,IP --> FQDN:反向解析name:IP地址,有特定格式,IP反过来写,而且加特定.in-ddar.arpa后缀;
例如172.16.0.55的记录应该写为55.0.16.172.in-addr.arpa.;
value:FQND例:
172.16.0.55.in-ddar.arpa IN PTR www.xxx.com
CNAME:Canonical Name,别名记录;name:FQDN格式的别名;
value:FQDN格式的正式名字;例:
edu.xxx.com IN CNAME www.xxx.com
sss.xxx.xom IN CNAME www.xxx.com
在区域的数据库文件中定义时要注意:
(1) TTL可以从全局继承;
(2) @表示当前区域的名称;
(3) 相邻的两条记录其name相同时,后面的可省略;
(4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录
配置正反向的DNS服务前的环境!
linux中提供的DNS服务包为bind(bekerley internet name domain)
使用 yum install 安装bind;并使用 rpm -ql 查看安装的程序的环境程序环境:
主程序:/usr/sbin/named
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones
区域解析库文件:/var/named/
主配置文件中定义域类型分为:
主域(master)、从域(slave)、缓存域(hint)、转发域(forward)
bind的配置文件:主配置文件:
/etc/named.conf
或包含进来其它文件;
/etc/named.iscdlv.key
/etc/named.rfc1912.zones //用来定义区域的主配置文件
/etc/named.root.key解析库文件:
/var/named/目录下; //配置完的区域文件后对的配置文件的存放处
一般名字为:ZONE_NAME.zone
注意:(1) 一台DNS服务器可同时为多个区域提供解析;
(2) 必须要有根区域解析库文件: named.ca;
(3) 还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;
正向:named.localhost 反向:named.loopbackbind程序安装完成之后,默认即可做缓存名称服务器使用;
如果没有专门负责解析的区域,直接即可启动服务;CentOS 6与CentOS 7的bind启动方法:
CentOS 6: service named start
CentOS 7: systemctl start named.service
DNS服务的正反向解析配置!
案例:
为xxx.ss域配置一个dns服务
dns服务器地址为:172.16.254.188
www : 172.16.254.188
mail: 172.16.252.177
ftp别名www,指向www
第一步安装:bind
第二步修改/etc/named.conf配置文件:[root@localhost ~]# vim /etc/named.conf
options { #全局配置
//listen-on port 53 { 127.0.0.1; }; #注释后监听全部IP的53端口
//listen-on-v6 port 53 { ::1; };
directory "/var/named"; #区域文件目录
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
//allow-query { localhost; }; #访问控制,注释后允许所有IP访问或改为any
allow-query { any; };
recursion yes; #是否递归
//dnssec-enable yes; //是否启用dns校验的服务注销或者改为no
//dnssec-validation yes;
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging { #定义日志
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
第三步:在/etc/named.rfc1912.zones创建正反向区域或在/etc/named.conf内配置zone "xxx.ss" IN { //正向区域
type master;
file "xxx.ss.zone";
};
zone "16.172.in-addr.arpa" IN { //反向区域 在配置反向区域时IP为反写的并在后加特定的后缀.in-addr.arpa
type master;
file "172.16.zone";
第四步:在/var/named/ 下创建相关的正反向区域的配置文件创建正向区域文件
[root@localhost named]# vim xxx.ss.zone #必须与区域文件名保持一致
$TTL 2000
@ IN SOA dns.xxx.ss. admin.xxx.ss. (
2017052901
1H
5M
6D
1D )
@ IN NS dns
@ IN MX 10 mail
dns IN A 172.16.254.188
mail IN A 172.168.252.177
www IN A 172.16.254.188
ftp IN CNAME www
创建反向区域文件
[root@localhost named]# vim 172.16.zone #必须与区域文件名保持一致
$TTL 2000
@ IN SOA dns.xxx.ss. admin.xxx.ss. (
2017052901
1H
5M
6D
1D )
@ IN NS dns.xxx.ss.
188.254 IN PTR dns.xxx.ss.
177.252 IN PTR mail.xxx.ss.
188.254 IN PTR www.xxx.ss.
第五步:检查并修改文件权限,检查配置文件语法;
修改创建配置文件的权限# chgrp named ZONE_FILE NAME
# chmod o= ZONE_FILE NMAE
检查配置文件是否语法错误:# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
第六步开启服务:# rndc reload 服务重载
# systemctl reload named.service 重启服务
第七步:产看本地53号端口是否正常监听ss -tnl
第八步测试:正向解析:
dig -t A www@xxx@ss 【将@换为.】 @172.16.254.188反向解析:dig -x 172.16.254.188 @172.16.254.188
更多的dig命令请自行查找
以上仅为个人学习整理,如有错漏,大神勿喷~~~