模拟构建DNS解析流程

背景

DNS初步认识

??DNS(Domain Name Server,域名系统)是互联网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户方便的访问互联网,而不用去费力的记忆IP字符串。通过域名,最终可以得到该域名对应的IP地址的过程叫做域名解析。DNS协议运行在UDP洗衣上,使用的是53号端口。
??
??

DNS的重要性以及高可用(DNS冗余)

重要性

??
??DNS解析是目前互联网大多数应用的实际的寻址方式;域名技术的不断发展,和基于域名技术出现的新技术和新思路极大的丰富了互联网的应用;域名现在起着互联网的一种类似于身份标记的作用,具有唯一性,因此互联网的全球化发展也使得域名也成为一种重要的资源

冗余(高可用)

??
??NS服务器在互联网上承担的如此重要的任务,因此其高可用性也成为了重点。在一个区域的资源记录通过手动或自动方式更新到单个主名称服务器(主DNS)上,主DNS服务器可以是一个或者多个区域的权威名称服务器。
??冗余的DNS服务器做为同一区域中主服务器的备份服务器,防止主服务器无法访问或者宕机。辅DNS服务器会定期与主DNS服务器通讯,进而保证它的区域信息文件保持最新。如果不是最新的信息,辅助DNS服务器就会从主DNS服务器上获取最新的区域数据文件副本。这种将区域文件复制到多台名称服务器的过程称为区域复制。

??
??

环境与架构图

??

软件环境

??由于本次试验要模拟整个DNS的解析流程,因此需要的8台虚拟机,在其中5台机器上安装bind程序提供域名解析服务,2台虚拟机安装httpd(web服务)提供网页访问服务,剩下的一台虚拟机模拟客户端进行DNS查询。
注意:
??1.实验前要关闭selinux,防火墙并且清空防火墙规则;
??2.由于机器数量较多最好保持时间同步,以免导致实验无法正常运行;
??3.自建文件包注意权限问题,以防出现无法解析。

实验整体架构图与构建思路


??由于仅仅是作为模拟,因此这里仅在douma.com的域名服务器做了主从备份,这里仅仅提供正向解析,想了解反向解析的构建的话可以参考之前的文章http://blog.51cto.com/11010461/2105703

??
??

实验记录

??

搭建流程

??

基础配置

??
环境清理
在所有主机上运行

            setenforce 0
            iptables -F
            iptables -X

搭建基础服务
在准备做dns解析的服务器上安装bind。

        yum install bind -y

在web服务器上配置httpd提供web服务

        #安装httpd 135和136两台主机
        yum install httpd -y
        #构建相应页面
        #192.168.99.135
        echo this is web1.douma.com ! > /var/www/html/index.html
        #192.168.99.136
        echo this is web2.douma.com ! > /var/www/html/index.html


启动httpd 并且验证是否能够提供服务

        systemctl start httpd
        #使用curl命令访问httpd
        curl + ip

搭建douma.com的dns服务并且配置主从

??
douma.com主服务器192.168.99.133
??
编辑主服务器的配置文件

    vim /etc/named.conf

对主配置文件做如下修改

编辑域文件,创建对douma.com域的解析

        vim /etc/named.rfc1912.zones

添加如下字段

zone "douma.com" IN {
        type master;
        file "douma.com.zone";
};

创建douma.com.zone文件

    cd /var/named/
    vim douma.com.zone  

编辑添入信息

$TTL 1D
@       IN      SOA     dns1.douma.com. admin.douma.com.(
                                        2018060205   ;序列号
                                        1D                  ;刷新时间
                                        2H                  ;重试时间
                                        3D                  ;过期时间
                                        1H)                 ;否定答案的TTL值
                       NS     dns1
                       NS     dns2
dns1     IN      A       192.168.99.133
dns2     IN      A       192.168.99.134
@         IN      A       192.168.99.135
@         IN      A       192.168.99.136
www     IN      A       192.168.99.135
www     IN      A       192.168.99.136
*           IN      CNAME   www


修改文件权限

chown :named douma.com.zone
chmod 640 douma.com.zone


启动bind服务并且验证是否可以解析

    systemctl start named
    systemctl status named

    #dig命令在bind-utils包中,如果安装bind时候未绑定安装可以后续手动安装
    dig www.douma.com @192.168.99.133


正常解析
配置从服务器
??
从服务器192.168.99.134

编辑bind主配置文件

    vim /etc/named.conf

编辑域配置文件添加从服务器配置

vim /etc/named.rfc1912.zones

添加如下字段

zone "douma.com" IN {
        type slave;
        masters {192.168.99.133;};
        file "slaves/douma.com.zone";
};


这里不用手动创建douma.com.zone,在服务启动后会自动去主服务进行同步

启动服务

systemctl start named

在从服务器上验证是否能够解析

dig www.douma.com @192.168.99.134

搭建com服务器

??
com地址是192.168.99.132
编辑配置文件

vim /etc/named.conf


编辑named.rfc1912.zones添加解析信息

vim /etc/named.rfc1912.zones

#添加以下信息
zone "com" {
        type master;
        file "com.zone";
};

创建com.zone

    cd /var/named/
    vim com.zone 

添加对应解析信息

    $TTL 1D
@       IN      SOA     dns.com.        admin.com. (
                                        2018010201
                                        1D
                                        2H
                                        3D
                                        3H)
                      NS      dns1
douma           NS      dns2
douma           NS      dns3
dns1              A       192.168.99.132
dns2              A       192.168.99.133
dns3              A       192.168.99.134
    # 修改权限
    chown :named com.zone
    chmod 640 com.zone


启动服务并且验证是否可以查询

    systemctl start named
    dig www.douma.com @192.168.99.132

搭建根服务器

??
根服务器的IP地址192.168.99.131
编辑/etc/named.conf

        vim /etc/named.conf

由于的模拟根服务器,因此在它之上不能有其他的dns服务器,要注释掉配置文件最后的根域


创建根域定义

    vim /etc/named.rfc1912.zones

添加根域信息

    zone "." {
        type master;
        file "root.zone";
};

创建域文件

cd /var/named/
vim root.zone

编辑根解析库

$TTL 1D
@       IN      SOA     dns1.   admin. (
                                20180601
                                1D
                                2H
                                3D
                                1H)
                    NS      dns1
com             NS      dns2
dns1            A        192.168.99.131
dns2            A        192.168.99.132

修改文件权限

chown :named root.zone
chmod 640 root.zone 

启动服务并做验证

systemctl start named
dig www.douma.com @192.168.99.131

配置ISP域名缓存服务器

??
ISP地址192.168.99.130
编辑/etc/named.conf文件

    vim /etc/named.conf


由于是自己搭建的模拟DNS运行的系统,因此需要修改named.ca文件,将根服务器指向自己构建的根,同时由于仅仅是ISP的服务器,无需定义域,仅仅负责查询即可。
编辑named.ca文件

        vim /var/named/
        vim named.ca

启动服务并进行验证

systemctl start named
dig www.douma.com @192.168.99.130

Client端设置

??
客户端仅需要将DNS指向ISP服务器即可

vim /etc/resolv.conf
#添加dns信息
nameserver 192.168.99.130

验证是否可以解析

dig www.douma.com @192.168.99.130

使用curl命令请求web端

    curl www.douma.com

dns的解析是简单的轮询

总结

??
??虽然DNS的轮询也是一种负载均衡的方式,成本极低,但是其缺点同样明显,DNS作为简单轮询无法理解后端服务器的承载能力;轮询过程仅仅负责将请求转交,一旦转交的目标主机故障仍会转交,无法容错;要保证数据最新就要设置较小的刷新时间,但会造成额外的DNS流量开销;一旦某台服务器宕机,修改DNS设置后,仍需一段时间才能生效。

??DNS轮询受到各方的影响比较严重,并不能算一种很好的负载均衡技术

https://web.stanford.edu/~riepel/lbnamed/
在 named.conf 中可以设置 bind 的 round-robin 的给出结果的顺序:

options {
rrset-order { order random; };
};

rrset-order 支持三个参数:fixed, random, cyclic 。
fix 会将多个A记录按配置文件的顺序固定给出;
random 会随机给出;
cyclic 会循环给出。

原文地址:http://blog.51cto.com/11010461/2123639

时间: 2024-10-07 17:57:40

模拟构建DNS解析流程的相关文章

用户访问网页流程、DNS 解析流程

一.用户访问流程 二.DNS解析流程 DNS( Domain Name System)是"域名系统"的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于 TCP/IP 网络,它所提供的服务是用来将主机名和域名转换为 IP 地址的工作.俗话说,DNS 就是将网址转化为对外的 IP 地址. 第一步:浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果有,该解析过程将会结束.浏览器缓存域名也是有限制的,包括缓存的时间.大小,可以通过 TTL 属性来设置. 第二步:如果

简单理解DNS解析流程(一)

0x0 简单理解dns DNS服务器里存着一张表 表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一 浏览器访问某个域名,实际上是访问它的ip地址 所以浏览器需要知道域名对应的ip地址 如何知道? 向知道的人查询,也就是向dns服务器查询 0x1 dns解析流程 -> 以客户端浏览器访问 www.rootkit.org 域名为例,首先,它会去检查当前浏览器缓存是否有对应IP,如果有,就直接响应,如果没有,就继续往下找 -> 接着,操作系统会去检查自己的host文件,如果从中没找到对

DNS 解析流程

DNS( Domain Name System)是"域名系统"的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作.俗话说,DNS就是将网址转化为对外的IP地址. dns从用户访问到响应的整个流程 第一步:浏览器将会检查缓存中有没有这个域名对应的解析过的IP地址,如果有该解析过程将会结束.浏览器缓存域名也是有限制的,包括缓存的时间.大小,可以通过TTL属性来设置. 第二步:如果用户的浏览器中缓存中没

DNS解析流程

第一步:浏览器将会检查缓存中有没有这个域名对应的解析过的IP地址,如果有该解析过程将会结束.浏览器缓存域名也是有限制的,包括缓存的时间.大小,可以通过TTL属性来设置. 第二步:如果用户的浏览器中缓存中没有,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析. 第三步:如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析. 第四步:如果hosts与本地DNS解析器缓存都没

DNS解析流程原理(图例)

13台根服务器的dns: 1.root-servers.net198.41.0.4美国2.root-servers.net192.228.79.201美国(另支持IPv6)3.root-servers.net192.33.4.12法国4.root-servers.net128.8.10.90美国5.root-servers.net192.203.230.10美国6.root-servers.net192.5.5.241美国(另支持IPv6)7.root-servers.net192.112.36

被动信息收集1——DNS基础 + DNS解析工具 NSLOOKUP使用

被动信息收集 特点: 基于公开渠道 与目标不直接接触 避免留下一切痕迹 标准参考--OSINT: 美国军方 北大西洋公约组织 名词解释 DNS--Domain Name System 域名系统 因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53.在RFC文档中RFC 2181对DNS有规范说明,RF

DNS解析全过程

一直对DNS的解析概念很模糊,今日看到一篇关于DNS服务器的讲义,认为讲的很详细,特此整理: 什么是DNS DNS 全名为 DOMAIN NAME SYSTEM ,主要作用是把网站域名解析为对应的IP地址 这个域名与IP地址的对应关系叫做A记录,英文名叫 address record A记录是DNS最重要的功能,DNS服务器还有许多其他的功能,例如: 1)设置CNAME别名记录(之前没接触过,所以不知道是什么鬼,据说这个常被CDN加速服务商用到) 2)设置MX邮件记录,在购买或者搭建邮件服务器的

DNS解析原理:递归 && 迭代

DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询, 递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询. 先不说那么多,看两张图你应该就明白了. 递归: 迭代: 再介绍几个概念: 本地名称服务器 又称Local DNS, 可以是默认的运营商提供的Local DNS 或者自己设置的DNS. 下图是windows下默认获取的运营商Local DNS或者 自己设置的Local DNS 权威DNS 权威 DNS 由域名解析服务商建设,提供域名管理服务,维护域

DNS原理及解析流程

1,what is DNS? DNS 是domain name system 的英文缩写,中文名是域名系统,作为IP地址与域名之间相互转化的一个分布式数据库.可以理解成一个在ip地址与域名之间的一个翻译员. 2.DNS的工程流程是什么? 当我们在浏览器输入网页的时候不可能记住每一个网站的ip地址,而是输入某个网页的网页地址(域名地址),然后通过DNS将我们入职的域名地址转换为对应的ip地址传至服务端,而服务的处理完请求后返回一个ip地址然后再通过DNS转化成域名地址返回给浏览器,这是DNS的核心