DNS域名服务器
DNS域名服务器
什么是DNS
Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解 析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)
DNS服务器类型
DNS服务器可以分为以下几种类型:
主DNS服务器:负责管理所有的域名记录,如A记录、CNAME记录、MX记录等,主DNS服务器会检查自己的缓存记录,如果找不到对应的记录,会查询从DNS服务器。
辅助DNS服务器:不创建区域,其区域数据是从主DNS服务器复制来的,辅助DNS服务器会和建立联系的主DNS服务器联系,并从主DNS服务器中复制数据。
缓存服务器:没有自己的区域数据文件,只是帮助客户端向外部DNS请求查询,然后将查询的结果保存到它的缓存中。
转发DNS服务器:不存储任何域名记录,只负责接收用户的查询请求,并将这些请求转发给其他的DNS服务器。
递归DNS服务器:负责接收纯缓存服务器发送的查询请求,然后通过向各级授权服务器发出查询请求获得需要的查询结果,最后返回给纯缓存服务器的解析器。
权威DNS服务器:负责管理特定顶级域名下的一级域名服务器,权威DNS服务器会返回该域名所对应的IP地址。
网络域名称系统:主要用于管理大型组织内部的网络环境,可以为组织内部的所有计算机提供一个唯一的主机名,并将其与相应的IP地址绑定在一起。
递归DNS服务器
根服务器
一级域名服务器
二级域名服务器
三级域名服务器
.........
到123级域名服务器
DNS查询原理
先查看本机的缓存记录,有就转到该域名对应的IP地址;若没有记录,就递归查询本机的hosts文件,若hosts有就转到对应地址;若hosts文件里没有,就转到DNS域名服务器查询,有就直接返回结果并转到其对应地址:若本地DNS域名服务器没有,就转到外网上的DNS域名服务器,从根服务器迭代向下查询到一级域名服务器、二级域名服务器、三级域名服务器,最终由一个权威服务器反馈查找到对应的IP地址给DNS域名服务器,在由DNS域名服务器把得到的域名和对应的IP地址发送给需求的主机。
DNS的安装与应用
DNS安装和DNS服务器解析应用
[root@localhost ~]#yum install bind bind-utils -y
#主软件 和 配置包管理软件
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
[root@localhost ~]#systemctl start named
#开启服务
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
将DNS修改为本机的域名
#重启服务
[root@localhost ~]#systemctl restart network
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; #将127.0.0.1修改为any
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; }; #将localhost修改为any
:wq
[root@localhost ~]#rndc reload
server reload successful
#重新加载DNS服务
[root@localhost named]#vim /etc/named.rfc1912.zones
#编写域名
zone "localhost.localdomain" IN { #将localhost.localdomain改写为你想要的域名
type master;
file "named.localhost"; #将named.localhost改写为你想要的域名并加入.zone
allow-update { none; }; #这行可以不要
};
:wq
[root@localhost named]#cd /var/named/
#切换目录
[root@localhost named]# ls
chroot data dyndb-ldap named.empty named.loopback
chroot_sdb dynamic named.ca named.localhost slaves
[root@localhost named]#cp named.localhost ./***.com.zone -p
#保留权限复制,***为上面修改的域名。
[root@localhost named]# vim zhang.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. ( #将@修改为你修改的域名
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @ #将@改为master
A 127.0.0.1 #改为master A 本机DNS地址
AAAA ::1 #可以删除
[root@localhost named]# host master.zhang.com #验证DNS
master.zhang.com has address 192.168.10.10