RHCE服务搭建实验之DNS

目录

    • 一、DNS简介
    • 二、安装DNS

一、DNS简介

域名系统(DNS)是一个分层的分布式数据库。它存储用于将Internet主机名映射到IP地址(反之亦然)的信息、邮件路由信息以及Internet应用程序使用的其他数据。
客户端通过调用解析器库在DNS中查找信息,解析器库向一个或多个名称服务器发送查询并解释响应。BIND 9软件发行版包含一个名称服务器,named和一个名为liblwres的解析器库。
1、域名的系统结构
域名分为根域、顶级域、二级域、三级域和主机名这5类。
一般格式为“主机名.三级域.二级域.顶级域.”,后面这个点表示根域,在浏览器下不用输入。
在这里插入图片描述
2、域名服务器的分类

域名服务器可分为主域名服务器,辅助域名服务器,缓存域名服务器和转发服务器。

3、dns域名解析的过程
第一步:本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。
第二步:如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果,windows中可以通过配置C:WindowsSystem32driversetchosts文件来设置,Linux中可以通过/etc/hosts文件来设置。
第三步:前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责。
第四步:如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析。
第五步: 根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等
第六步:顶级域名服务器会返回一个二级域名服务器的地址,例如baidu。
第六步:二级域名找到了主机名的地址,就会返回给本地域名服务器,并且缓存下来。

递归和迭代查询的示意图:
在这里插入图片描述
在这里插入图片描述

4、资源记录
资源记录即添加到区域文件的记录,资源记录有许多类型,每一种类型的功能各不相同。
A 表示 Address,A记录就是地址记录,是域名到ipv4地址的映射信息。

AAAA也是地址记录,是域名到ipv6地址的映射信息。

PTR记录与A记录相反,是ip地址到域名的映射信息。

SOA记录意为起始7授权记录,用于声明DNS服务器是DNS域中数据表的信息来源,是主机的管理者。

NS记录是名称服务。用于记录表明区域权威DNS服务器,即在NS记录中指定的服务器会被其他服务器当作权威的来源,并能应答。

CNAME记录用于为特定FQDN创建别名,为多台主机提供相同的别名。

MX记录指向一个邮件服务器,用于指定邮件交换服务器。

二、安装DNS

[root@control ~]# dnf install bind bind-utils -y
配置文件解析

[root@kittod ~]# cat /etc/named.conf
options {
 /*
监听方式,服务监听指定ip的53号端口
服务器可能有多张网卡,any表示所有网卡监听53端口的DNS解析请求
 todo 可以个实验:1、ip指定为本机ip。2、ip指定为同网段随便的ip
 */
 listen-on port 53 { 127.0.0.1; any;}; /**/
 /*数据文件目录*/
 directory "/var/named";
 /*DNS缓存位置*/
 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";
 /*
 允许哪些client来查询dns服务,默认是localhost。
 any表示所有人都能进行dns查询
 */
 allow-query { localhost;any; };
 /*是否递归*/
 recursion yes;
  /*DNS安全扩展机制,默认开启,直接关闭即可*/
 dnssec-enable no;
 dnssec-validation no;
 /* Path to ISC DLV key */
 bindkeys-file "/etc/named.root.key";
 managed-keys-directory "/var/named/dynamic";
 pid-file "/run/named/named.pid";
 session-keyfile "/run/named/session.key";
};
logging {
 channel default_debug {
 file "data/named.run";
 severity dynamic;
 };
};
/*之所以全部DNS服务器都知道根域名服务器的位置,就是下面的配置在生效*/
zone "." IN {
 type hint;
 file "named.ca";
};
/*子配置文件*/
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

区域配置文件模板
cat /etc/named.rfc1912.zones

域类型的几种取值:

hint:若本地找不到相关解析,可查询根域名服务器
master:定义权威域名服务器
slave:定义辅助域名服务器
forward:定义转发域名服务器

dns正向解析实验
[root@control ~]# vim /etc/resolv.conf 可以设置dns

[root@control ~]# vim /etc/named.conf
listen-on port 53 { localhost; };     修改为本机ip地址
allow-query     { any; };           允许哪个主机可以过来查询,同时还可以帮你查询他不知道的域名
zone "xiaogang.com" IN{
        type master;
        file "named.xiaogang.com";     写一个区域文件
};
[root@control ~]# vim /var/named/named.xiaogang.com
可以cp -p 复制named.localhost这个文件的模板



$TTL 1D       域名解析记录在DNS服务器中的存留时间
@       IN SOA  ns1 admin.xiaogang.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1
ns1       A       192.168.85.133
www     CNAME   webser
webser  A       192.168.85.134
webser  A       192.168.85.135    两个IP地址对应着这个主机,在一些大公司里可以分担流量
*       A       192.168.85.134     *号表示,你的主机名错误但还是给你解析成www的
@       A       192.168.85.134    @表示本机,比如xiaogang.com

例如:
[root@control ~]# host www.xiaogang.com
www.xiaogang.com is an alias for webser.xiaogang.com.
webser.xiaogang.com has address 192.168.85.135
webser.xiaogang.com has address 192.168.85.134

[root@control ~]# host wwwss.xiaogang.com
wwwss.xiaogang.com has address 192.168.85.134

[root@control ~]# host xiaogang.com
xiaogang.com has address 192.168.85.134

准备两台主机,第一台主机安装好dns服务器的软件。另一台不安装软件,把dns改为第一台的ip地址。

在第二台主机上测试
[root@manged ~]# host www.xiaogang.com
www.xiaogang.com is an alias for webser.xiaogang.com.
webser.xiaogang.com has address 192.168.85.134
webser.xiaogang.com has address 192.168.85.135
[root@manged ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 183.2.172.185
www.a.shifen.com has address 183.2.172.42
www.a.shifen.com has IPv6 address 240e:ff:e020:9ae:0:ff:b014:8e8b
www.a.shifen.com has IPv6 address 240e:ff:e020:966:0:ff:b042:f296
在本地域名服务器找不到解析时,本地域名服务器会充当转发服务器向根域进行递归和迭代查询

只做转发服务器实验

[root@kittod ~]# cat /etc/named.conf
options {
 listen-on port 53 { 192.168.226.130; };
 forward only;
 forwarders { 114.114.114.114; };
};
[root@kittod ~]# systemctl restart named