DNS域名解析服务

DNS :

功能

正向解析:根据域名查找对应IP地址

反向解析:根据IP地址查找对应的域名

DNS端口:TCP53端口用于连接DNS服务器

                    UDP53端口用于解析DNS

域名的结构

是一种树形结构 以根域.  为起点         每个域之间用”  .  “来间隔

DNS域名解析工作原理:

客户端会先讲DNS解析请求发送给本地缓存域名服务器 如果本地缓存域名服务器有相关记录则直接返回给服务器 否则讲请求发送给根域服务器进行解析 根域服务器会根据域名的*域再将DNS解析请求委派给相对应的*域服务器进行解析 *域服务器也会根据域名的二级域或子域再讲DNS解析请求委派给 相对应的二级域或子域的服务器进行解析         最后子域服务器会根据域名的主机名解析出响应的IP地址 再返回给本地缓存域名服务器和客户端

DNS域名解析查询方式:

1.递归查询:本地域名服务器先将DNS解析请求发送给根域名服务器 根域名服务器再将解析请求转发给相对应的*域名服务器 *域名服务器再将解析请求转发给相对应的二级域名或子域名服务器 最后子域名服务器会根据域名的主机名解析出响应的IP地址后 再逐层返回给本地域名服务器

总结:一探到底逐层返回

2.迭代查询:本地域名服务器先将DNS解析请求发送给根域名服务器 根域名服务器再返回响应并告知本地服务器去找相对应的*域        本地域名服务器再将DNS请求寻找相对应的*域服务器 *域服务器响应并告知本地服务器去找相对应的二级域或子域        本地服务器讲DNS请求寻找对应的子域或者二级域     最后子域名或二级域名服务器得到响应解析出IP地址并返回本地域名服务器

总结:次次寻找都有回应

根据域名查找IP地址的方法: 先使用本机本地的hosts文件查找相关记录        再使用DNS服务进行解析

实验正向解析:

先初始化操作

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

然后yum安装 bind


[root@localhost ~]# cd /mnt/Packages/
[root@localhost Packages]# yum install -y bind
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 bind.x86_64.32.9.11.4-26.P2.el7_9.9 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package      架构           版本                            源            大小
================================================================================
正在安装:
 bind         x86_64         32:9.11.4-26.P2.el7_9.9         ren1         2.3 M

事务概要
================================================================================
安装  1 软件包

总下载量:2.3 M
安装大小:5.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 32:bind-9.11.4-26.P2.el7_9.9.x86_64                         1/1
  验证中      : 32:bind-9.11.4-26.P2.el7_9.9.x86_64                         1/1

已安装:
  bind.x86_64 32:9.11.4-26.P2.el7_9.9

完毕!

然后cd进到这个目录然后修改三个配置文件

[root@localhost ~]# cd /mnt/Packages/
[root@localhost Packages]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
    


以此修改第二个,第四个第九个配置文件

第一个配置文件
vim /etc/named.conf

options {
        listen-on port 53 { any };    #any表示监听所有地址
        #listen-on-v6 port 53 { ::1; };        #ipv6z我们现在用不到直接注释
            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     { any; };    #允许那些客户端能够访问
        recursion yes;        #表示递归查询

修改第四个配置文件
 vim /etc/named.rfc1912.zones

zone "localhost.localdomain" IN {
        type master;            #代表组域名服务器
        file "named.localhost";    #域名解析数据文件放在那个文件
        allow-update { none; };    #是否允许更新
然后我们需要再中间插入几行命令
zone "ren1.com" IN {    #名字自取
        type master;
        file "ren1.com.zone";
        allow-update { none; };
}






zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN 
#表示解析ipv6
{
        type master;    
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};    ##上面几行表示方向解析




然后

$TTL 1D            #代表生命周期
@       IN SOA  @ rname.invalid. (    #@代表域名    rname.invalid代表管理员邮箱
soa代表主从域名服务器
                                        0       ; serial
                                        1D      ; refresh#刷新时间
                                        1H      ; retry#
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1    #a代表解析记录
        AAAA    ::1
         NS      ren1.com.
        A       192.168.80.66

www IN A        192.168.80.67
mail IN A       192.168.80.68
news IN A       192.168.80.69
ftp IN CNAME    www
*       IN A    192.168.80.70
~
                       #IN 代表正向解析

         

*代表除了上面的域名     其他的所有域名都解析成一个地址
[root@localhost Packages]# cd /var/named/
[root@localhost named]# ll
总用量 16
drwxrwx---. 2 named named    6 2月  24 2022 data
drwxrwx---. 2 named named    6 2月  24 2022 dynamic
-rw-r-----. 1 root  named 2253 4月   5 2018 named.ca
-rw-r-----. 1 root  named  152 12月 15 2009 named.empty
-rw-r-----. 1 root  named  152 6月  21 2007 named.localhost
-rw-r-----. 1 root  named  168 12月 15 2009 named.loopback
drwxrwx---. 2 named named    6 2月  24 2022 slaves
[root@localhost named]# cp -p named.localhost ren1.com.zone

然后修改[root@localhost named]# vim ren1.com.zone这个文键

然后重启配置

[root@localhost ~]# systemctl start named
[root@localhost ~]# systemctl status named.service^C
[root@localhost ~]# ^C
[root@localhost ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

这时候重新开一个虚拟机

上一篇:Python项目开发实战:怎么删除恶意代码


下一篇:【算法刷题 | 贪心算法04】4.26(跳跃游戏、跳跃游戏||)-6.跳跃游戏