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.loopback
bind程序安装完成之后,默认即可做缓存名称服务器使用; 如果没有专门负责解析的区域,直接即可启动服务;
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 @172.16.254.188
反向解析:
dig -x 172.16.254.188 @172.16.254.188
更多的dig命令请自行查找
以上仅为个人学习整理,如有错漏,大神勿喷~~~
本文出自 “kkk” 博客,谢绝转载!
原文地址:http://xxxkkkk.blog.51cto.com/8941156/1930622