DNS
DNS(Domain Name System)域名系统,DNS协议的一种开源实现,端口53,是UDP/TCP协议。
DNS在53端口上监听请求并提供响应的服务。出于性能的考虑,DNS查询请求用UDP协议交互并且每个请求的大小小于512字节,但是如果返回的请求大小大于512字节,交互双方会协商使用TCP协议。
1.因特网的域名结构:
(1)国家顶级域名:如cn(中国)、us(美国)、uk(英国)…
(2)通用顶级域名:com(公司企业)、net、org、int、gov、mil
(3)基础结构域名:arpa,用于反向域名解析,因此被称为反向域名。 两种查找方式:
递归 -----计算机只发送一次请求
迭代 -----计算机发送多次请求
2.域名解析过程:
1.在浏览器中输入域名(如www.qq.com),先看本地hosts文件中是否有该网址的映射关系,如果有,就调用这个IP地址映射,完成域名解析。
2.如果hosts中没有这个域名映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3.本地DNS解析器缓存中也没有该网址的映射关系,则查找本地DNS服务器,本地DNS收到查询,如果要查询的域名,包含在本地配置区域资源中,则返回一个权威解析结果给客户机,完成域名解析。
4.如果要查询的域名,不由本地DNS服务器区域解析,但服务器已经缓存了此网址的映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5.如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否进行转发)进行查询,如果未用转发模式,本地DNS就把请求发至根DNS,根DNS服务器收到请求后会判断这个域名(如.com)是谁来授权管理,并返回一个负责该顶级域名服务器的IP。本地DNS收到IP信息后,会联系负责.com域的这台服务器。这台服务器收到请求后,如果自己无法解析,就会找一个管理qq.com的DNS服务器地址给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6.如果用的转发模式,本地DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,就找根DNS或把请求转至上上级,以此循环。找到最后把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
解析方式:正向解析、反向解析
DNS 服务类型:
? 主DNS服务器(master):数据修改(接受用户请求返回数据)
? 辅助dns服务器(slave): 定期请求数据同步
? 缓存dns服务器(hint): 只缓存dns数据
? 转发服务器(forward):缓存服务器去掉缓存功能
DNS解析答案:
根据是否能够查询到想要的结果,可分为肯定答案和否定答案;
根据解析答案是否由直接负责的DNS服务器返回,可分为权威答案和非权威答案。
包名为bind 服务为named
反解析可应用在邮件管理
资源记录名称:(数据库中的每一个条目)
SOA(起始授权记录) 记录提供有关dns区域工作方式的信息 -----具体负责哪个区域的解析 (指定权威服务器)
这代表着master/salve相关的认证,授权资料。不论有没有设定master/salve的架构都需要设定好。
NS 标记dns服务器 将域名最终映射到哪一台主机(标记本地 dns服务器)
A (ipv4地址记录) 资源记录将主机名映射到ipv4地址。
CNAME (规范名称)记录域别名
MX 邮件交换记录 —标记邮件服务主机名
PTR指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS)
AAAA (IPV6 地址记录) 资源记录(四A记录)将主机名映射到ipv6地址。
/var/named/named.ca (数据文件----资源记录文件)
五种配置中定义的信息:
serial number: 序列号 定义当前使用的数据序列号 sn遵循“年+月+日+编号” ·
主和从的更新依据
refresh: 定义检查间隔时间 (上次和这次变化的时间)
retry: 重试时间 < 检查时间>
expire: 过期时间 (什么时候通过从服务器解析)
negative answer ttl: 否定答案的缓存时长 (没有指定生存期的数据可以保存在数据中的时间及TTL值)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
案例一:正向解析
DNS包名为bind,服务名为named
1.编辑DNS主配置文件
#vim /etc/named.conf
options {
listen-on port 53 { 192.168.220.129; };
directory "/var/named";
};
zone "openlab.com" IN {
type master;
file "named.openlab.com";
};
#vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA @ admin.admin.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS www.openlab.com.
dns IN A 192.168.220.129
named IN A 192.168.220.121
www IN A 192.168.220.111
wwww IN CNAME www
#vim /etc/resolv.conf
servername 192.168.220.129
###重新加载配置信息
#rndc reload
###测试
#nslookup www.baidu || dig -t NS openlab.com || ping www.openlab.com
案例二:反向解析
#vim /etc/named.conf
options {
listen-on port 53 { 192.168.220.129; };
directory "/var/named";
};
zone "openlab.com" IN {
type master;
file "named.openlab.com";
};
zone "220.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.220";
};
#vim /var/named/named.192.168.220
$TTL 1D
@ IN SOA @ admin.admin.com. (
0
1D
1H
1W
3H )
IN NS dns.openlab.com.
129 IN PTR www.openlab.com.
#rndc reload
###测试
#nslookup 192.168.220.129 || dig -x 192.168.220.129
案例三:完全区域传送
区域传送:将一个区域文件复制到多个服务器上的过程叫做区域传送。
两种区域文件复制方式:
? 完全区域传送:axfr,all transfer,全部区域文件复制,复制整个区域文件
? 增量区域传送:ixfr,incremental transfer,仅复制区域里变化的文件
查询上次序列号改变后的信息
dig -x ixfr=1 baidu.com@192.168.220.129
在服务器dns主配置文件named.conf中定义完全区域传送(主服务)
#vim /etc/named.conf
options {
listen-on port 53 { 192.168.220.129; };
directory "/var/named";
allow-transfer { 192.168.220.234; };
};
在另一台虚拟机作为从服务器安装bind软件包,配置主配置文件/etc/named.conf
#vim /etc/named.conf
options {
listen-on port 53 { 192.168.220.129; };
directory "/var/named";
};
zone "openlab.com" IN {
type slave;
file "slaves/named.openlab";
masters { 192.168.220.129; };
};
zone "220.168.192.in-addr.arpa" IN {
type slave;
file "slaves/named.192.168.220";
masters { 192.168.220.129; };
};
重启服务,查看/var/names/slaves目录下同步的主服务其中的区域数据文件
#systemctl restart named
#ll /var/named/slaves/
-rw-r--r--. 1 named named 269 Aug 28 20:26 named.192.168.220
-rw-r--r--. 1 named named 393 Aug 28 20:21 named.openlab
重启服务会动态同步主服务其中的区域数据文件
案例四:dns从服务的搭建
完全区域传送
增量区域传送
主:在区域文件添加资源记录,修改序列号,ns标记从服务是谁
从:tail -f /var/log/messages
1.修改主服务的区域配置文件/var/named/named.openlab.com
#vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA @ admin.admin.com. (
2021082803 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.openlab.com.
dns IN A 192.168.220.129
named IN A 192.168.220.121
mail IN A 192.168.220.111
www IN A 192.168.220.110
wwww IN CNAME www
2.重启主从服务器服务
#systemctl restart named
3.通过tail -f /var/log/message来查看从服务器的日志,注意传送过程
案例五:配置DNS转发服务器
1.转发server配置:
#vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; };
forwarders { 192.168.220.234; };
forward only;
};
2.主dns服务:
#vim /etc/named.conf
options {
listen-on port 53 { 192.168.220.129; };
directory "/var/named";
};
zone "openlab.com" IN {
type master;
file "named.openlab.com";
};
zone "220.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.220";
};
#vim /etc/named/named.openlab.com
$TTL 1D
@ IN SOA @ admin.admin.com. (
2021082803 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.openlab.com.
dns IN A 192.168.220.129
named IN A 192.168.220.121
mail IN A 192.168.220.111
www IN A 192.168.220.110
wwww IN CNAME www
配置客户端主机:
#vim /etc/resolv.conf
nameserver 192.168.220.129
在客户端主机测试:
#nslookup www.openlab.com || dig -t NS openlab.com || ping www.openlab.com
|