DNS介绍以及模拟dns解析过程实验


  • DNS简介
  • DNS域名的解析过程
  • DNS服务器的资源记录
  • 实验模拟DNS解析过程

DNS简介

  DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住不易于记忆的IP地址。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

DNS域名的解析过程

  每个域都有自己的DNS服务器,负责解析本域名结尾的所有主机和ip地址的对应关系,同时也会指明下级子域的DNS服务器的ip地址,这个dns称为这个域的权威dns服务器。
  主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
  本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
  大致的解析流程:
  1、客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
  2、当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
  3、如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。
  4、本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
  5、重复第四步,直到找到正确的纪录。
  6、本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

DNS服务器的资源记录

  在DNS服务器的区域数据库中,DNS服务器的资源记录记录是域与IP地址之间的对应关系,以及子域的DNS服务器地址,或者是从DNS服务器的地址。在这里给大家简单介绍常见的资源记录类型。

SOA记录

  SOA(Start Of Authority),起始授权记录,一个区域解析库有且只能有一个SOA记录,而且必须是解析库的第一条记录。SOA指示区域的源名称,并包含作为区域主要信息源的服务器的名称。它表示最初创建它的DNS服务器或现在是该区域的主服务器的DNS服务器。它还表示该区域的其他基本属性以及用于存储会影响区域更新或过期的其他属性,如版本信息和计时。

NS记录

  NS(Name Server)名称服务器,NS记录实际上也是在DNS服务器之间,表明谁对某个区域有解释权,即权威DNS。

A记录

  A: internet Address,主机地址(A) 资源记录,作用是将 DNS 域名映射成IPV4的32 位ip地址。

CNAME记录

  CNAME(Canonical Name)通常称别名指向,可以为一个主机设置别名。作用是将owner 字段中的别名或备用的DNS 域名映射到canonical_name字段中指定的标准或主要DNS 域名。

PTR记录

  PTR是pointer 的简写,PTR记录也被称为指针记录,PTR记录是A记录的逆向记录,作用是把IP地址解析为域名。DNS的反向区域负责从IP到域名的解析,因此如果要创建PTR记录,必须在反向区域中创建。

实验模拟DNS解析过程

模拟实验结构图
实验准备

  准备6台linux centos7机器,按照上图配置好IP地址,确保互相之间可以通信。为排除其他因素的干扰,实验之前必须确保所有机器的防火墙以及selinux全部禁用。

    # 查询防火墙状态
    systemctl status firewalld
    # 如果防火墙处于打开状态,关闭防火墙
    systemctl stop firewalld
    # 禁用selinux
    sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
    setenforce  0 

  在除了客户端(192.168.1.6)的其余5台机器上,查询是否安装了bind软件,如果没有安装,安装一下。

    # 查询是否安装了bind软件
    yum info bind
    # 如果没有安装,安装一下
    yum install bind
    # 启动DNS服务
    systemctl start named
配置

  配置的原则是从底往上配置,配置一台,测试一下。下面是具体的配置过程。
一、在king.com的主DNS上

    # 修改/etc/named.conf配置文件
    vim /etc/named.conf
        # 在options{}中注释两行,默认表示监听本机所有ip,以及接受所有主机查询
        // listen-on port 53 { 127.0.0.1; };
        // allow-query     { localhost; };
        # 在options{}中添加一行
        allow-transfer { 192.168.1.16; };  # 允许该主机可以从这里复制区域解析库文件
    # 修改/var/named/named.ca,把根域DNS指向192.168.1.8,修改后内容为
    .                       518400  IN      NS      a.root-servers.net.
    a.root-servers.net.     3600000 IN      A       192.168.1.8
    # 确保/var/named/named.ca的所属组是named,并且所属组队该文件有毒权限
    # 把修改后的文件复制到所有参与实验的主机,根DNS服务器无需修改
    scp /var/named/named.ca  192.168.1.16:/var/named/ 
    scp /var/named/named.ca  192.168.1.7:/var/named/            
    scp /var/named/named.ca  192.168.1.14:/var/named/           
    scp /var/named/named.ca  192.168.1.6:/var/named/
    # 修改区域数据库配置文件
    vim /etc/named.rfc1912.zones
        # 添加  
        zone "king.com" IN {
            type master;
            file "king.com.zone";
        };     
    # 创建区域数据库king.com.zone
        cd /var/named
        vim king.com.zone 
        $TTL 1D
        @               IN SOA  dns1.king.com. admin.king.com. (
                                        2017092415 ; serial
                                        86400      ; refresh (1 day)
                                        3600       ; retry (1 hour)
                                        604800     ; expire (1 week)
                                        10800      ; minimum (3 hours)
                                        )
                                NS      dns1.king.com.
                                NS      dns2.king.com.
        dns1                    A       192.168.1.15
        dns2                    A       192.168.1.16       # 从DNS
        websrv                  A       192.168.1.88
        www                     CNAME   websrv
    # 重启DNS服务
    systemctl restart named
    # 在客户端上测试通过
    dig www.king.com @192.168.1.15 

二、在king.com的从DNS上

    # 修改/etc/named.conf配置文件
    vim /etc/named.conf
       # 在options{}中注释两行
       // listen-on port 53 { 127.0.0.1; };
       // allow-query     { localhost; };
       # 在options{}中添加一行
       allow-transfer { none; };  # 设置为任何人都不允许复制区域解析库文件
      # 修改区域数据库配置文件
        # 添加  
        zone "king.com" IN {
            type slave;
            masters { 192.168.1.15; };
            file "slaves/king.com.slave.zone";
        };
    # 重启DNS服务
    systemctl restart named
    # 在客户端上测试通过
    dig www.king.com @192.168.1.16   

三、在com DNS上

    # 修改/etc/named.conf配置文件
    vim /etc/named.conf
        # 在options{}中注释两行
        // listen-on port 53 { 127.0.0.1; };
        // allow-query     { localhost; };
    # 修改/etc/named.rfc1912.zones
    vim /etc/named.rfc1912.zones
        # 添加 
        zone "com"  IN {
            type master;
            file "com.zone";
        };
    # 添加区域数据库
    cd /var/named
    cp -p named.localhost com.zone
    # com.zone内容为
    $TTL 1D
    @               IN SOA  dns1 admin.king.com. (
                                2017092415 ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )
                            NS      dns1
    king                    NS      dns2
    king                    NS      dns3
    dns1                    A       192.168.1.14
    dns2                    A       192.168.1.15
    dns3                    A       192.168.1.16
    # 检查一下配置
    named-checkconf
    named-checkzone  "com"  /var/named/com.zone
    # 重启DNS服务
    systemctl restart named
    # 在客户端上测试通过
    dig www.king.com @192.168.1.14   

四、在根域DNS上

    # 修改/etc/named.conf
       # 在options{}中注释两行
        // listen-on port 53 { 127.0.0.1; };
        // allow-query     { localhost; };
       # 删除下面的行,根域DNS不需要不需要再去找根DNS
       zone "." IN {
                        type hint;
                        file "named.ca";
                    };
    # 修改/etc/named.rfc1912.zones
    vim /etc/named.rfc1912.zones
        # 添加 
        zone "."  IN {
                type master;
                file "root.zone";
            };
    # 添加区域数据库
    cd /var/named
    cp -p named.localhost root.zone
    # root.zone内容为
    $TTL 1D
    @               IN SOA  dns1 admin.king.com. (
                                2017092419 ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )
                        NS      dns1
    com                     NS      dns2
    dns1                    A       192.168.1.8
    dns2                    A       192.168.1.14
    # 检查一下配置
    named-checkconf
    named-checkzone  "com"  /var/named/com.zone
    # 重启DNS服务
    systemctl restart named
    # 在客户端上测试通过
    dig www.king.com @192.168.1.8   

五、在电信DNS上面

# 修改/etc/named.conf
       # 在options{}中注释几行
        // listen-on port 53 { 127.0.0.1; };
        // allow-query     { localhost; };
        // recursion yes;
       # 修改下面两行,涉及到dns的安全监测,作为转发DNS需要关闭
       dnssec-enable no;
       dnssec-validation no;
 # 重启DNS服务
    systemctl restart named
客户端测试

一、直接测试

# 测试 
 dig www.king.com @192.168.1.7
# 显示的主要内容
;; QUESTION SECTION:
;www.king.com.                  IN      A

;; ANSWER SECTION:
www.king.com.           86400   IN      CNAME   websrv.king.com.
websrv.king.com.        86400   IN      A       192.168.1.88

;; AUTHORITY SECTION:
king.com.               86400   IN      NS      dns3.com.
king.com.               86400   IN      NS      dns2.com.

;; ADDITIONAL SECTION:
dns3.com.               86400   IN      A       192.168.1.16
dns2.com.               86400   IN      A       192.168.1.15

  测试通过。
二、关闭king.com的主DNS测试

    # 测试,发现仍然是可以解析的
    dig www.king.com @192.168.1.7

  至此,关于DNS的相关知识以及DNS的解析过程模拟实验就介绍完了。篇幅所限,没有涉及到反向解析的介绍,以及还存在很多其他的不足,请多指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 14.1 引言 域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换...
    张芳涛阅读 1,872评论 0 8
  • DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能...
    一直在努力hard阅读 4,606评论 3 19
  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,865评论 0 7
  • 目录: 一些基本概念主机名DNS名称解析DNS 解析的后端存储名称解析总结 大规模域名解析的体系架构DNS 解析需...
    C86guli阅读 12,475评论 3 34
  • 1. 基础知识 1.1 3种常见的计算机体系结构划分 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话...
    Mr希灵阅读 19,836评论 6 120