DNS服务介绍
DNS:Domain Name System 应用层协议,工作在C/S,53/udp, 53/tcp,用于实现把域名ip或ip解析成域名的一个服务。
在linux上通常利用BIND:Bekerley Internat Name Domain来实现DNS服务,DIND是ISC (www.isc.org)的一个项目。
我们还可以通常本地名称解析配置文件:hosts,linux上的文件位置:是/etc/hosts,windows的文件位置是:%WINDIR%/system32/drivers/etc/hosts
hosts文件内容例:
123.122.10.117.2 www.magedu.com
93.46.8.89 www.google.com

DNS域名:
有根域,一级域名(com,edu,mil,gov,net,org...)有三类、组织域、国家域、反向域,二级域名,最多有127级域名,由ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统
的管理。
配置DNS主从实验_第1张图片
DNS查询类型:
递归查询:把查询请求发送出去,只返回查询结果,例如我们设置dns上网一样
迭代查询:例如查询www.baidu.com,先查询根域,再查询com域,再查询com域中的baidu.com域,再返回www.baidu.com对应的ip地址
名称服务器:域内负责解析本域内的名称的主机
根服务器:13组服务器
解析类型:
FQDN --> IP
IP --> FQDN
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树,FQDN:(Fully Qualified Domain Name)全限定域名

下面我们再来了解一个DNS服务器类型
DNS服务器的类型:主DNS服务器,从DNS服务器,缓存DNS服务器(转发器)
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
“通知”机制:主服务器解析库发生变化时,会主动通知从服务器
区域传输:完全传输:传送整个解析库,增量传输:传递解析库变化的那部分内容
一次完整的查询请求经过的流程:
Client -->hosts文件 -->DNS Service Local Cache --> DNS Server(recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
解析答案:
肯定答案:返回的答案
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:主域名服务器,负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。
非权威答案:通常由缓存服务器给出的间接信息
资源记录
区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个
SOA记录,必须位于解析库的第一条记录
A:internet Address,作用,FQDN --> IP
AAAA:FQDN --> IPv6
PTR:PoinTeR,IP --> FQDN
NS:Name Server,专用于标明当前区域的DNS服务器
CNAME : Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:
SPF(反垃圾邮件)记录,https验证等
示例:_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x

资源记录定义的格式:
语法:name [TTL] IN rr_type value
注意:
(1) TTL可从全局继承
(2) @可用于引用当前区域的名字
(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询
方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值
进行定义;此仅表示通过多个不同的名字可以找到同一个主机

配置缓存DNS服务器:
安装DNS服务器软件 :bind,可以利用yum安装
BIND程序名:named
service named start
查看是否监听53/udp端口
配置DNS主从实验_第2张图片
主配置文件/etc/named.conf:
全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {};
注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
缓存名称服务器的配置:监听外部地址即可
dnssec: 建议关闭dnssec,设为no
options {
// listen-on port 53 { 127.0.0.1; }; //注释
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 { any; };//这里修改成any
recursion yes;
dnssec-enable no;
dnssec-validation no;
/ Path to ISC DLV key /
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};

接下来,我们可以通过named-checkconf
rndc reload
配置DNS主从实验
这样就是一个缓存DNS服务器了
配置主区域DNS服务器:
vim /etc/named.rfc1912.zones
配置DNS主从实验
vim /var/named/zcs.com.zone
配置DNS主从实验_第3张图片
注意:这里面的/var/named/zcs.com.zone权限一定要属主root,属组named,且权限为640
配置DNS主从实验
我们还需要通过named-checkzone zcs.com /var/named/zcs.com.zone 来对区域文件进行检验
配置DNS主从实验
配置DNS主从实验
最后通过dig -t A www.zcs.com @192.168.0.30来进行校验
配置DNS主从实验_第4张图片

配置从DNS服务器
在主区域文件中添加DNS服务器
配置DNS主从实验_第5张图片
修改/etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; //注释
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-transfer {none;};
allow-query { any; };//这里修改成any
recursion yes;
dnssec-enable no;
dnssec-validation no;
/ Path to ISC DLV key /
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
主区域文件/etc/namd.conf中options{}添加allow-transfer {192.168.0.40;};
vim /etc/named.rfc1912.zones
配置DNS主从实验
rndc reload
注意:如果防火墙未关闭,则关闭防火墙,或者添加tcp/53的策略,而且时钟需要与主服务器同步
成功可以看到/var/named下接收到了正向区域的区域文件
![](https://s1.51cto.com/images/blog/201904/23/493efa024d92d9d1d36e650c0378f273.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk
配置DNS主从实验_第6张图片
配置主从反向区域DNS服务器
#vim /etc/named.rfc1912.zones
配置DNS主从实验
修改/etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; //注释
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-transfer {none;};
allow-query { any; };//这里修改成any
recursion yes;
dnssec-enable no;
dnssec-validation no;
/ Path to ISC DLV key /
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
#vim /var/named/192.168.0.zone
配置DNS主从实验_第7张图片
注意权限:
配置DNS主从实验
在从DNS服务器上配置]#vim /etc/named.rfc1912.zones
配置DNS主从实验
rndc reload
验证#dig -t ptr 50.0.168.192.in-addr.arpa @192.168.0.30或dig -x 192.168.0.50 @192.168.0.30
配置DNS主从实验_第8张图片