精华内容
下载资源
问答
  • Linux实现DNS服务

    2021-01-16 14:44:43
    1、DNS解析过程

    1、总结DNS解析过程

    1. 先查看浏览器缓存中是否有网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
    2. 如果没有,操作系统会先检查自己本地的hosts文件再检查本地DNS解析器缓存是否有网址映射关系,如果有调用,完成域名解析。
    3. 如果也没有,就会找本地DNS服务器。如果查询的域名包含在本地配置区域资源中,返回解析结果给客户机,完成域名解析,此解析具有权威性。如果查询的域名不由本地DNS服务器区域解析,但该服务器已经缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,但此解析不具有权威性。
    4. 如果还是解析失败,则会根据本地DNS服务器的设置(是否设置转发器)进行查询。(1)未使用转发模式,本地DNS服务器就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名是哪一个顶级域名服务器授权管理的,并将这个顶级服务器的IP返回给本地DNS服务器。本地DNS服务器收到IP信息后,就会找到这个顶级域名服务器,这台顶级域名服务器如果自己无法解析,就会找到一个管理二级域名服务器IP给本地DNS服务器。本地DNS服务器就会根据这个地址找到二级域名服务器,重复下来,直到找到这个域名对应的主机IP地址。(2)如果使用的是转发模式,本地DNS服务器就会把请求转发至上一级DNS服务器,由上一级DNS服务器进行解析,上一级服务器如果不能解析,继续找上上级或者根服务器,以此循环。最终把结果返回给本地DNS服务器,由此服务器返回给客户端。

    从客户端到本地DNS服务器是属于递归查询(用的是UDP),DNS服务器之间就是迭代查询(用的是TCP)

    2、实验要求

    配置DNS服务器,要求自定义DNS服务器能够解析openlab.com qq.com 域当中的所有主机。

    3、实验分析及过程

    1.关闭防火墙和seLinux

    2.挂载光盘到/mnt,并安装bind域名解析服务

    3.在指定的配置文件下进行配置

    4.在自定的文件中配置相关配置

    5.重启服务

    6.在客户端指定的配置文件下更改dns服务器地址

    7.在客户端是否能通过域名访问,几种测试方式

     

     

     

    展开全文
  • DNS原理及其解析过程 DNS:Domain name service 域名解析服务 FQDN:Full Qualified Domain Name,完全合格域名 TLD:Top level Domain 顶级域 组织域:.com、.org、.net、.cc 国家域:.cn、.tw、.hk、jp 反向域:IP...

    DNS原理及其解析过程

    DNS:Domain name service 域名解析服务
    FQDN:Full Qualified Domain Name,完全合格域名
    TLD:Top level Domain 顶级域
    组织域:.com、.org、.net、.cc
    国家域:.cn、.tw、.hk、jp
    反向域:IP —> FQDN
    反向:IP —> FQDN
    正向:FQDN —> IP

    为什么需要DNS解析域名为IP地址?

    网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。

    具体什么是DNS?

    DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
    在这里插入图片描述
    DNS域名称
    域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com
    完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表
    下图显示与主机称为 im 内 qq.com DNS 树的示例。 主机的 FQDN 是 im.qq.com
    DNS 域的名称层次结构
    在这里插入图片描述

    Dns服务的工作过程

    当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
    ● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
    ● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
    ● DNS域名的指定类别。
    对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。
    DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
    另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。
    DNS 查询的过程如下图所示。
    在这里插入图片描述
    1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

    2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

    3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

    4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

    5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。

    6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
    从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

    DNS的配置

    192.168.233.179 hadoop01.ftgov – DNS主机

    192.168.233.180 hadoop02.ftgov – DNS客户机

    192.168.233.181 hadoop03.ftgov – DNS客户机

    在DNS主机上

    安装软件

    安装bind命令
    yum -y install bind bind-utils bind-chroot
    bind详解:
    包名:bind
    
    进程:named
    
    协议:dns
    
    使用端口:53(tcp,udp)
    
    相关包:
    
    bind-chroot:将named进程的活动范围限定在chroot目录,保证安全性。
    
    bind-devel:与开发相关的头文件和库文件(编译安装bind时所需)
    
    bind-libs:bind服务器端和客户端都使用到的公共库文件
    
    bind-utils :  bind客户端工具
    

    修改/etc/named.conf 访问权限

    vi  /etc/named.conf
    

    在这里插入图片描述
    在这里插入图片描述
    修改 /etc/named.rfc1912.zones文件,加入正解和反解配置

    zone "ftgov" IN {      //当输入类似“ftgov”后缀如:hadoop01.ftgov时正解析
     
        type master;      //此为dns主机
     
        file "named.ftgov.com";  //解析文件将会读取 /var/named 目录下named.ftgov.com文件的域名与IP映射配置(文件稍后生成)
     
        allow-update { none; };
    };
    zone "233.168.233.in-addr.arpa" IN {   //当输入类似“192.168.233.xxx”时反解析,注意地址顺序
        type master; 
        file "named.192.168.233.zone";    //反解文件位于 /var/named 目录下named.192.168.233.zone的配置中(文件稍后生成)
        allow-update { none; };
     
    };
    

    生成以上配置需要用到的正解和反解文件

    打开目录 cd  /var/named
    生成文件 named.ftgov.com
    复制文件[root@hadoop01 named]# cp -p named.localhost named.ftgov.com
    						cp -p named.localhost named.192.168.233.zone 
    
    

    配置 named.ftgov.com
    在这里插入图片描述
    配置生成文件 named.192.168.233.zone
    在这里插入图片描述

    客户端操作(两台)

    vi   /etc/sysconfig/network-scripts/ifcfg-eths33  // 具体修改为自己当前使用的网卡名
    

    在这里插入图片描述
    重启客户端网络服务

    systemctl restart network
    
    

    启动DNS服务器(192.168.233.179)

    systemctl  start  named    //开启DNS服务
    ss -ntl  //查看是否开启  默认是53端口
    

    测试结果
    在这里插入图片描述
    另一种工具的(dig)用法
    dig命令:

    语法:
    dig -t 资源记录类型 名称 @server-ip
    dig -t NS baidu.com

    dig -x IP @server-ip:查询反向解析
    dig -x 192.168.233.180
    dig - t 资源记录类型 名称 +trace:追踪解析过程
    dig -t A hadoop02 +trace

    展开全文
  • Linux 中搭建DNS服务器详细教程

    千次阅读 2020-12-25 19:56:14
    DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库 主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。 从服务器:从主服务器中获得...

     

    基本说明:

    DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库

     

    主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。

    从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。

    缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。

    简单来说,主服务器是用于管理域名和IP地址对应关系的真正服务器,从服务器帮助主服务器“打下手”,分散部署在各个国家、省市或地区,以便让用户就近查询域名,从而减轻主服务器的负载压力。缓存服务器不太常用,一般部署在企业内网的网关位置,用于加速用户的域名查询请求。

     

     

     

    一、安装BING并确认软件服务运行状态

    1.安装DNS服务器软件bind(Berkeley Internet Name Domain)

         yum -y install bind

    在安装完BIND后,系统会多一个用户named。

     

    2.启动DNS服务

    systemctl start named.service

     

    3.查看named进程是否正常启动:

    4.DNS采用的UDP协议,监听53号端口,主从DNS间用TCP 53, 进一步检验named工作是否正常:

    netstat -an|grep :53

    5.防火墙开放TCP和UDP的53号端口:

    iptables -I INPUT -p tcp --dport 53 -j ACCEPT

    iptables -I INPUT -p udp --dport 53 -j ACCEPT

    firewall-config                     打开防火墙图形设置开启dns服务,将Configuration旁下拉勾选Permanent,然后勾选dns :

    然后点击Options下的Reload Firewalld重新加载防火墙

    firewall-cmd --list-all             查看是否修改成功,如图所示,dns服务已被防火墙允许:

     

    systemctl restart named       重新启动dns服务

     

     

    二、相关配置文件

    1.配置文件 服务器主要运行参数etc/named.conf

     

     

    ===================================

     

    [itsupport@BGK-DNS1 ~]$ cat /etc/named.conf

    //

    // named.conf

    //

    // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

    // server as a caching only nameserver (as a localhost DNS resolver only).

    //

    // See /usr/share/doc/bind*/sample/ for example named configuration files.

    //

    // See the BIND Administrator's Reference Manual (ARM) for details about the

    // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

     

    options {

            listen-on port 53 { 172.21.206.5; };

            #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";

            allow-query     { any; };

            forward first;
    
            forwarders {
    
                            114.114.114.114;
    
                            223.5.5.5;
    
                    };

    #--全局转发………………………………………………………………………………#这个参数只表示如果 forwarders list 为非空,默认为first值,服务器首先请求 forwarders list ,如果 forwarders list 中的DNS主机不应答,该主机将自己去找应答,如果设置值为only,服务器将只会请求 forwarders中的DNS主机

            dnssec-enable no;

            dnssec-validation no;

     

            /*

             - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.

             - If you are building a RECURSIVE (caching) DNS server, you need to enable

               recursion.

             - If your recursive DNS server has a public IP address, you MUST enable access

               control to limit queries to your legitimate users. Failing to do so will

               cause your server to become part of large scale DNS amplification

               attacks. Implementing BCP38 within your network would greatly

               reduce such attack surface

            */

            recursion yes;

     

            #dnssec-enable yes;

            #dnssec-validation yes;

     

            /* Path to ISC DLV key */

            bindkeys-file "/etc/named.iscdlv.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;

            };

    };

     

    zone "." IN {

            type hint;

            file "named.ca";

    };

    #/var/named/named.ca,此文件是根域,全球共有13台根域服务器...当 DNS 服务器在自己的数据库找不到所需的信息时, 一定会去找 . ,那 . 在什么地方呢,所以就得要有记录 . 位置的 zone 才行,这个记录 .的 zone 的类型,就被我们称为hint 类型,这几乎是每个 DNS 服务器都得要知道的 zone

    zone "hkt-bgk.com" {
    
            type forward;
    
            forwarders { 10.187.174.221; 10.187.174.222; };
    
    };
    
    
    
    zone "vip.sankuai.com" {
    
            type forward;
    
            forwarders { 10.10.10.10; };
    
    #       forwarders { 10.10.10.20; }; ##Backup
    
    };
    
    

    #区域转发优先级大于全局转发。。。。。。。。。。。。。。。。。。。。。。。。。。发

     

     

    include "/etc/named.rfc1912.zones";

    include "/etc/named.root.key";

     

    ===============================================

     

    检查语法并重启服务

    [root@DNS-Slave chroot]# named-checkconf  /var/named/chroot/etc/named.conf
    [root@DNS-Slave chroot]# systemctl restart named-chroot
    [root@DNS-Slave chroot]#

     

    2.配置辅助区域文件,主要指定要解析哪个域名/etc/named.rfc1912.zones

    bind服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名和IP地址对应关系的所在位置。在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息

     

    服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器。将域名解析为IP地址的正向解析参数和将IP地址解析为域名的反向解析参数分别如图13-3和图13-4所示。

    图13-3 正向解析参数

     

    ======================================================================================

    [itsupport@BGK-DNS1 ~]$ cat /etc/named.rfc1912.zones

    // named.rfc1912.zones:

    //

    // Provided by Red Hat caching-nameserver package

    //

    // ISC BIND named zone configuration for zones recommended by

    // RFC 1912 section 4.1 : localhost TLDs and address zones

    // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt

    // (c)2007 R W Franks

    //

    // See /usr/share/doc/bind*/sample/ for example named configuration files.

    //

     

    zone "localhost.localdomain" IN {

            type master;

            file "named.localhost";

            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 {

            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; };

    };

     

    zone "0.in-addr.arpa" IN {

            type master;

            file "named.empty";

            allow-update { none; };

    };

     

    zone "gssip.sh.sankuai.info" IN {

            type master;

            file "/var/named/gssip.sh.sankuai.info.zone";

    };

     

    zone "gssip.sjz.sankuai.info" IN {

            type master;

            file "/var/named/gssip.sjz.sankuai.info.zone";

    };

     

    zone "gssip.yz.sankuai.info" IN {

            type master;

            file "/var/named/gssip.yz.sankuai.info.zone";

    };

    ========================================================

    注意/var/named/下文件作用

    Data 

    dynamic 

     named.ca 

     named.empty 

     named.localhost正解模板文件

      named.loopback反解模板文件

      salaves

    这部分不影响总体配置,节省点篇幅,是有需要可私信我探讨

     

    3.配置数据文件,用来正向和反向的解析

     

    (1)/var/named/named.localhost

    $TTL 1D    # TTL设定,默认值为 86400
    @       IN SOA  @ rname.invalid. (
                                            0       ; serial    # 配置文件修改版本,格式:年、月、日加上修改次数
                                            1D      ; refresh    # 设置辅助 DNS 与主 DNS 进行同步的时间间隔·
                                           
    1H      ; retry    # 辅助 DNS 更新失败后,多久重试
                                            1W      ; expire    # 辅助 DNS 与主 DNS 同步失败后,多久清除对应记录
                                            3H )    ; minimum    # 默认最小 TTL 值,若之前没有设定 TTL 值则以此处为基准
            NS      @
            A      
    127.0.0.1
           AAAA    ::1

    (2)/var/named/named.loopback

    $TTL 1D
    @       IN SOA  @ rname
    .invalid. (
                                            0       ; serial
                                           
    1D      ; refresh
                                           
    1H      ; retry
                                           
    1W      ; expire
                                           
    3H )    ; minimum
            NS      @
            A      
    127.0.0.1
            AAAA    ::1
            PTR     localhost.

    ---------------------------------------------------------------------------------------------

    (3)参数说明

    如:添加一个gr.org的区域(zone),类型为主机(master,还有两种是slave和hint)

    文件就在option定义的目录下/var/named

    在该目录下创建gr.org.db文件

    创建该文件,并插入以下的内容

    [root@localhost root]# vi /var/named/gr.org.db

     

     

    TTL

    time to live 生存时间,默认为秒

    @

    表示相应的域名,表示一个域名定义的开始

    这里代表gr.org

    IN

    表示后面的数据使用的是INTERNET标准

    SOA

    表示授权开始

    ns.gr.org.

    该域的主域名服务器

    root.gr.org.

    管理员邮件地址(这里的邮件地址中的用.来代替常见的邮件地址的@.)

    20150317

    serial(d. adams)表示配置文件的修改版本,格式是年月日当日修改的次数,每次修改时都应该修改这个数字,

    要不然所做修改的不会更新到网上的其它DNS服务器的数据库上,即你所做的更新很可能对于不以你你的所配置

    的DNS服务器数据库上,即你所做的更新很可能对于不以你的所配置的DNS服务器为DNS服务器的客户端来说就

    不会反映出你的更新,也就对他们来说你更新是没意义的

    6H

    refresh,定义以单位(M分,H时,W周,默认是秒即不带单位)的刷新频率,即规定从域名服务器多长时间查

    询一个主服务器,以服务器的数据的是最新的

    30M

    retry,以30分钟的时间间隔重试,即当从服务器试图在主服务器上查询更新时,而连接失败了,则这个值规定

    了从服务器多长时间后重试

    1W

    expire,规定从服务器在向主服务器更新失败之后清除记录的时间

    15M

    minimum TTL,规定缓冲服务器不能与主服务器联系上的清除记录时间

    NS

    net server,表示该主机是域名服务器

    A

    address,定义了一条A记录,表示该主机名到IP地址的对应记录

    MX

    mail exchange,定义一条邮件记录

    CNAME

    定义了对应主机的一个别名

    PTR

    指一条反向域名解析PTR记录,类似A记录(PTR指针记录由IP地址提供商提供)

    -------------------------------------------------------------------------------------------------------------------------

     

    四、linuix就该这么学的几个实验

    13.2.1 正向解析实验

    在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。也就是说,当用户输入了一个域名后,bind服务程序会自动进行查找,并将匹配到的IP地址返给用户。这也是最常用的DNS工作模式。

    第1步:编辑区域配置文件。该文件中默认已经有了一些无关紧要的解析参数,旨在让用户有一个参考。我们可以将下面的参数添加到区域配置文件的最下面,当然,也可以将该文件中的原有信息全部清空,而只保留自己的域名解析信息:

    [root@linuxprobe ~]# vim /etc/named.rfc1912.zones
    zone "linuxprobe.com" IN {
    type master;
    file "linuxprobe.com.zone";
    allow-update {none;};
    };

    第2步:编辑数据配置文件。我们可以从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写数据配置文件中并保存。在复制时记得加上-a参数,这可以保留原始文件的所有者、所属组、权限属性等信息,以便让bind服务程序顺利读取文件内容:

    [root@linuxprobe ~]# cd /var/named/
    [root@linuxprobe named]# ls -al named.localhost
    -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
    [root@linuxprobe named]# cp -a named.localhost linuxprobe.com.zone

    编辑数据配置文件。在保存并退出后文件后记得重启named服务程序,让新的解析数据生效。考虑到正向解析文件中的参数较多,而且相对都比较重要,刘遄老师在每个参数后面都作了简要的说明。

    [root@linuxprobe named]# vim linuxprobe.com.zone
    [root@linuxprobe named]# systemctl restart named

    $TTL 1D

    #生存周期为1天

     

     

     

     

    @

    IN SOA

    linuxprobe.com.

    root.linuxprobe.com.

    (

     

     

    #授权信息开始:

    #DNS区域的地址

    #域名管理员的邮箱(不要用@符号)

     

     

     

     

     

     

    0;serial

    #更新序列号

     

     

     

     

    1D;refresh

    #更新时间

     

     

     

     

    1H;retry

    #重试延时

     

     

     

     

    1W;expire

    #失效时间

     

     

     

     

    3H;)minimum

    #无效解析记录的缓存时间

     

    NS

    ns.linuxprobe.com.

     

    #域名服务器记录

     

    ns

    IN A

    192.168.10.10

     

    #地址记录(ns.linuxprobe.com.)

     

     

    IN MX 10

    mail.linuxprobe.com.

     

    #邮箱交换记录

     

    mail

    IN A

    192.168.10.10

     

    #地址记录(mail.linuxprobe.com.)

     

    www

    IN A

    192.168.10.10

     

    #地址记录(www.linuxprobe.com.)

     

    bbs

    IN A

    192.168.10.20

     

    #地址记录(bbs.linuxprobe.com.)

     

    第3步:检验解析结果。为了检验解析结果,一定要先把Linux系统网卡中的DNS地址参数修改成本机IP地址,这样就可以使用由本机提供的DNS查询服务了。nslookup命令用于检测能否从DNS服务器中查询到域名与IP地址的解析记录,进而更准确地检验DNS服务器是否已经能够为用户提供服务。

    [root@linuxprobe ~]# systemctl restart network
    [root@linuxprobe ~]# nslookup
    > www.linuxprobe.com
    Server: 127.0.0.1
    Address: 127.0.0.1#53
    Name: www.linuxprobe.com
    Address: 192.168.10.10
    > bbs.linuxprobe.com
    Server: 127.0.0.1
    Address: 127.0.0.1#53
    Name: bbs.linuxprobe.com
    Address: 192.168.10.20

    13.2.2 反向解析实验

    在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。当购买虚拟主机时,可以使用这一功能验证虚拟主机提供商是否有严重的超售问题。

    第1步:编辑区域配置文件。在编辑该文件时,除了不要写错格式之外,还需要记住此处定义的数据配置文件名称,因为一会儿还需要在/var/named目录中建立与其对应的同名文件。反向解析是把IP地址解析成域名格式,因此在定义zone(区域)时应该要把IP地址反写,比如原来是192.168.10.0,反写后应该就是10.168.192,而且只需写出IP地址的网络位即可。把下列参数添加至正向解析参数的后面。

    [root@linuxprobe ~]# vim /etc/named.rfc1912.zones
    zone "linuxprobe.com" IN {
    type master;
    file "linuxprobe.com.zone";
    allow-update {none;};
    };
    zone "10.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.10.arpa";
    };

    第2步:编辑数据配置文件。首先从/var/named目录中复制一份反向解析的模板文件(named.loopback),然后把下面的参数填写到文件中。其中,IP地址仅需要写主机位,如图13-5所示。

    图13-5  反向解析文件中IP地址参数规范

    [root@linuxprobe named]# cp -a named.loopback 192.168.10.arpa
    [root@linuxprobe named]# vim 192.168.10.arpa
    [root@linuxprobe named]# systemctl restart named

    $TTL 1D

     

     

     

     

    @

    IN SOA

    linuxprobe.com.

    root.linuxprobe.com.

    (

     

     

     

     

    0;serial

     

     

     

     

    1D;refresh

     

     

     

     

    1H;retry

     

     

     

     

    1W;expire

     

     

     

     

    3H);minimum

     

    NS

    ns.linuxprobe.com.

     

     

    ns

    A

    192.168.10.10

     

     

    10

    PTR

    ns.linuxprobe.com.

    #PTR为指针记录,仅用于反向解析中。

     

    10

    PTR

    mail.linuxprobe.com.

     

     

    10

    PTR

    www.linuxprobe.com.

     

     

    20

    PTR

    bbs.linuxprobe.com.

     

     

    第3步:检验解析结果。在前面的正向解析实验中,已经把系统网卡中的DNS地址参数修改成了本机IP地址,因此可以直接使用nslookup命令来检验解析结果,仅需输入IP地址即可查询到对应的域名信息。

    [root@linuxprobe ~]# nslookup
    > 192.168.10.10
    Server: 127.0.0.1
    Address: 127.0.0.1#53
    10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
    10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
    10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.
    > 192.168.10.20
    Server: 127.0.0.1
    Address: 127.0.0.1#53
    20.10.168.192.in-addr.arpa name = bbs.linuxprobe.com.

    13.3 部署从服务器

    作为重要的互联网基础设施服务,保证DNS域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速且不间断的域名查询服务。在DNS域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率。

    在本实验中,主服务器与从服务器分别使用的操作系统和IP地址如表13-2所示。

    表13-2                     主服务器与从服务器分别使用的操作系统与IP地址信息

    主机名称

    操作系统

    IP地址

    主服务器

    RHEL 7

    192.168.10.10

    从服务器

    RHEL 7

    192.168.10.20

    第1步:在主服务器的区域配置文件中允许该从服务器的更新请求,即修改allow-update {允许更新区域信息的主机地址;};参数,然后重启主服务器的DNS服务程序。

    [root@linuxprobe ~]# vim /etc/named.rfc1912.zones
    zone "linuxprobe.com" IN {
    type master;
    file "linuxprobe.com.zone";
    allow-update { 192.168.10.20; };
    };
    zone "10.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.10.arpa";
    allow-update { 192.168.10.20; };
    };
    [root@linuxprobe ~]# systemctl restart named

    第2步:在从服务器中填写主服务器的IP地址与要抓取的区域信息,然后重启服务。注意此时的服务类型应该是slave(从),而不再是master(主)。masters参数后面应该为主服务器的IP地址,而且file参数后面定义的是同步数据配置文件后要保存到的位置,稍后可以在该目录内看到同步的文件。

    [root@linuxprobe ~]# vim /etc/named.rfc1912.zones
    zone "linuxprobe.com" IN {
    type slave;
    masters { 192.168.10.10; };
    file "slaves/linuxprobe.com.zone";
    };
    zone "10.168.192.in-addr.arpa" IN {
    type slave;
    masters { 192.168.10.10; };
    file "slaves/192.168.10.arpa";
    };
    [root@linuxprobe ~]# systemctl restart named

    第3步:检验解析结果。当从服务器的DNS服务程序在重启后,一般就已经自动从主服务器上同步了数据配置文件,而且该文件默认会放置在区域配置文件中所定义的目录位置中。随后修改从服务器的网络参数,把DNS地址参数修改成192.168.10.20,这样即可使用从服务器自身提供的DNS域名解析服务。最后就可以使用nslookup命令顺利看到解析结果了。

    [root@linuxprobe ~]# cd /var/named/slaves
    [root@linuxprobe slaves]# ls
    192.168.10.arpa linuxprobe.com.zone
    [root@linuxprobe slaves]# nslookup
    > www.linuxprobe.com
    Server: 192.168.10.20
    Address: 192.168.10.20#53
    Name: www.linuxprobe.com
    Address: 192.168.10.10
    > 192.168.10.10
    Server: 192.168.10.20
    Address: 192.168.10.20#53
    10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
    10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
    10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.

    13.4 安全的加密传输

    前文反复提及,域名解析服务是互联网基础设施中重要的一环,几乎所有的网络应用都依赖于DNS才能正常运行。如果DNS服务发生故障,那么即便Web网站或电子邮件系统服务等都正常运行,用户也无法找到并使用它们了。

    互联网中的绝大多数DNS服务器(超过95%)都是基于BIND域名解析服务搭建的,而bind服务程序为了提供安全的解析服务,已经对TSIG(RFC 2845)加密机制提供了支持。TSIG主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。

    接下来的实验依然使用了表13-2中的两台服务器。

    书接上回。前面在从服务器上配妥bind服务程序并重启后,即可看到从主服务器中获取到的数据配置文件。

    主机名称

    操作系统

    IP地址

    主服务器

    RHEL 7

    192.168.10.10

    从服务器

    RHEL 7

    192.168.10.20

    [root@linuxprobe ~]# ls -al /var/named/slaves/
    total 12
    drwxrwx---. 2 named named 54 Jun 7 16:02 .
    drwxr-x---. 6 root named 4096 Jun 7 15:58 ..
    -rw-r--r--. 1 named named 432 Jun 7 16:02 192.168.10.arpa
    -rw-r--r--. 1 named named 439 Jun 7 16:02 linuxprobe.com.zone
    [root@linuxprobe ~]# rm -rf /var/named/slaves/*

    第1步:在主服务器中生成密钥。dnssec-keygen命令用于生成安全的DNS服务密钥,其格式为“dnssec-keygen [参数]”,常用的参数以及作用如表13-3所示。

    表13-3                                        dnssec-keygen命令的常用参数

    参数

    作用

    -a

    指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等

    -b

    密钥长度(HMAC-MD5的密钥长度在1~512位之间)

    -n

    密钥的类型(HOST表示与主机相关)

    使用下述命令生成一个主机名称为master-slave的128位HMAC-MD5算法的密钥文件。在执行该命令后默认会在当前目录中生成公钥和私钥文件,我们需要把私钥文件中Key参数后面的值记录下来,一会儿要将其写入传输配置文件中。

    [root@linuxprobe ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
    Kmaster-slave.+157+46845
    [root@linuxprobe ~]# ls -al Kmaster-slave.+157+46845.*
    -rw-------. 1 root root 56 Jun 7 16:06 Kmaster-slave.+157+46845.key
    -rw-------. 1 root root 165 Jun 7 16:06 Kmaster-slave.+157+46845.private
    [root@linuxprobe ~]# cat Kmaster-slave.+157+46845.private
    Private-key-format: v1.3
    Algorithm: 157 (HMAC_MD5)
    Key: 1XEEL3tG5DNLOw+1WHfE3Q==
    Bits: AAA=
    Created: 20170607080621
    Publish: 20170607080621
    Activate: 20170607080621

    第2步:在主服务器中创建密钥验证文件。进入bind服务程序用于保存配置文件的目录,把刚刚生成的密钥名称、加密算法和私钥加密字符串按照下面格式写入到tansfer.key传输配置文件中。为了安全起见,我们需要将文件的所属组修改成named,并将文件权限设置得要小一点,然后把该文件做一个硬链接到/etc目录中。

    [root@linuxprobe ~]# cd /var/named/chroot/etc/
    [root@linuxprobe etc]# vim transfer.key
    key "master-slave" {
    algorithm hmac-md5;
    secret "1XEEL3tG5DNLOw+1WHfE3Q==";
    };
    [root@linuxprobe etc]# chown root:named transfer.key
    [root@linuxprobe etc]# chmod 640 transfer.key
    [root@linuxprobe etc]# ln transfer.key /etc/transfer.key

    第3步:开启并加载Bind服务的密钥验证功能。首先需要在主服务器的主配置文件中加载密钥验证文件,然后进行设置,使得只允许带有master-slave密钥认证的DNS服务器同步数据配置文件:

    [root@linuxprobe ~]# vim /etc/named.conf
     1 //
     2 // named.conf
     3 //
     4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
     5 // server as a caching only nameserver (as a localhost DNS resolver only).
     6 //
     7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
     8 //
     9 include "/etc/transfer.key";
     10 options {
     11 listen-on port 53 { any; };
     12 listen-on-v6 port 53 { ::1; };
     13 directory "/var/named";
     14 dump-file "/var/named/data/cache_dump.db";
     15 statistics-file "/var/named/data/named_stats.txt";
     16 memstatistics-file "/var/named/data/named_mem_stats.txt";
     17 allow-query { any; };
     18 allow-transfer { key master-slave; };
    ………………省略部分输出信息………………
    [root@linuxprobe ~]# systemctl restart named

    至此,DNS主服务器的TSIG密钥加密传输功能就已经配置完成。此时清空DNS从服务器同步目录中所有的数据配置文件,然后再次重启bind服务程序,这时就已经不能像刚才那样自动获取到数据配置文件了。

    [root@linuxprobe ~]# rm -rf /var/named/slaves/*
    [root@linuxprobe ~]# systemctl restart named
    [root@linuxprobe ~]# ls  /var/named/slaves/

    第4步:配置从服务器,使其支持密钥验证。配置DNS从服务器和主服务器的方法大致相同,都需要在bind服务程序的配置文件目录中创建密钥认证文件,并设置相应的权限,然后把该文件做一个硬链接到/etc目录中。

    [root@linuxprobe ~]# cd /var/named/chroot/etc
    [root@linuxprobe etc]# vim transfer.key
    key "master-slave" {
    algorithm hmac-md5;
    secret "1XEEL3tG5DNLOw+1WHfE3Q==";
    };
    [root@linuxprobe etc]# chown root:named transfer.key
    [root@linuxprobe etc]# chmod 640 transfer.key
    [root@linuxprobe etc]# ln transfer.key /etc/transfer.key

    第5步:开启并加载从服务器的密钥验证功能。这一步的操作步骤也同样是在主配置文件中加载密钥认证文件,然后按照指定格式写上主服务器的IP地址和密钥名称。注意,密钥名称等参数位置不要太靠前,大约在第43行比较合适,否则bind服务程序会因为没有加载完预设参数而报错:

    [root@linuxprobe etc]# vim /etc/named.conf
     1 //
     2 // named.conf
     3 //
     4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
     5 // server as a caching only nameserver (as a localhost DNS resolver only).
     6 //
     7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
     8 //
     9 include "/etc/transfer.key";
     10 options {
     11 listen-on port 53 { 127.0.0.1; };
     12 listen-on-v6 port 53 { ::1; };
     13 directory "/var/named";
     14 dump-file "/var/named/data/cache_dump.db";
     15 statistics-file "/var/named/data/named_stats.txt";
     16 memstatistics-file "/var/named/data/named_mem_stats.txt";
     17 allow-query { localhost; };
     18
     19 /*
     20 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
     21 - If you are building a RECURSIVE (caching) DNS server, you need to enable
     22 recursion.
     23 - If your recursive DNS server has a public IP address, you MUST enable access
     24 control to limit queries to your legitimate users. Failing to do so will
     25 cause your server to become part of large scale DNS amplification
     26 attacks. Implementing BCP38 within your network would greatly
     27 reduce such attack surface
     28 */
     29 recursion yes;
     30
     31 dnssec-enable yes;
     32 dnssec-validation yes;
     33 dnssec-lookaside auto;
     34
     35 /* Path to ISC DLV key */
     36 bindkeys-file "/etc/named.iscdlv.key";
     37
     38 managed-keys-directory "/var/named/dynamic";
     39
     40 pid-file "/run/named/named.pid";
     41 session-keyfile "/run/named/session.key";
     42 };
     43 server 192.168.10.10
     44 {
     45 keys { master-slave; };
     46 };
     47 logging {
     48 channel default_debug {
     49 file "data/named.run";
     50 severity dynamic;
     51 };
     52 };
     53
     54 zone "." IN {
     55 type hint;
     56 file "named.ca";
     57 };
     58
     59 include "/etc/named.rfc1912.zones";
     60 include "/etc/named.root.key";
     61

    第6步:DNS从服务器同步域名区域数据。现在,两台服务器的bind服务程序都已经配置妥当,并匹配到了相同的密钥认证文件。接下来在从服务器上重启bind服务程序,可以发现又能顺利地同步到数据配置文件了。

    [root@linuxprobe ~]# systemctl restart named
    [root@linuxprobe ~]# ls /var/named/slaves/
     192.168.10.arpa  linuxprobe.com.zone

    出现问题?大胆提问!

    因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

    Linux技术交流请加A群:560843(),B群:340829(推荐),C群:463590(推荐),点此查看全国群

    *本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

    13.5 部署缓存服务器

    DNS缓存服务器(Caching DNS Server)是一种不负责域名数据维护的DNS服务器。简单来说,缓存服务器就是把用户经常使用到的域名与IP地址的解析记录保存在主机本地,从而提升下次解析的效率。DNS缓存服务器一般用于经常访问某些固定站点而且对这些网站的访问速度有较高要求的企业内网中,但实际的应用并不广泛。而且,缓存服务器是否可以成功解析还与指定的上级DNS服务器的允许策略有关,因此当前仅需了解即可。

    第1步:配置系统的双网卡参数。前面讲到,缓存服务器一般用于企业内网,旨在降低内网用户查询DNS的时间消耗。因此,为了更加贴近真实的网络环境,实现外网查询功能,我们需要在缓存服务器中再添加一块网卡,并按照表13-4所示的信息来配置出两台Linux虚拟机系统。而且,还需要在虚拟机软件中将新添加的网卡设置为“桥接模式”,然后设置成与物理设备相同的网络参数(此处需要大家按照物理设备真实的网络参数来配置,图13-6所示为以DHCP方式获取IP地址与网关等信息,重启网络服务后的效果如图13-7所示)。

    表13-4                               用于配置Linux虚拟机系统所需的参数信息

     

    主机名称

    操作系统

    IP地址

    缓存服务器

    RHEL 7

    网卡(外网):根据物理设备的网络参数进行配置(通过DHCP或手动方式指定IP地址与网关等信息)

     

     

    网卡(内网):192.168.10.10

    客户端

    RHEL 7

    192.168.10.20

     

    图13-6  以DHCP方式获取网络参数

    图13-7  查看网卡的工作状态

    第2步:在bind服务程序的主配置文件中添加缓存转发参数。在大约第17行处添加一行参数“forwarders { 上级DNS服务器地址; };”,上级DNS服务器地址指的是获取数据配置文件的服务器。考虑到查询速度、稳定性、安全性等因素,刘遄老师在这里使用的是北京市公共DNS服务器的地址210.73.64.1。如果大家也使用该地址,请先测试是否可以ping通,以免导致DNS域名解析失败。

    [root@linuxprobe ~]# vim /etc/named.conf
    1 //
    2 // named.conf
    3 //
    4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
    5 // server as a caching only nameserver (as a localhost DNS resolver only).
    6 //
    7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
    8 //
    9 options {
    10 listen-on port 53 { any; };
    11 listen-on-v6 port 53 { ::1; };
    12 directory "/var/named";
    13 dump-file "/var/named/data/cache_dump.db";
    14 statistics-file "/var/named/data/named_stats.txt";
    15 memstatistics-file "/var/named/data/named_mem_stats.txt";
    16 allow-query { any; };
    17 forwarders { 210.73.64.1; };
    ………………省略部分输出信息………………
    [root@linuxprobe ~]# systemctl restart named

    第3步:重启DNS服务,验证成果。把客户端主机的DNS服务器地址参数修改为DNS缓存服务器的IP地址192.168.10.10,如图13-8所示。这样即可让客户端使用本地DNS缓存服务器提供的域名查询解析服务。

    图13-8  设置客户端主机的DNS服务器地址参数

    在将客户端主机的网络参数设置妥当后重启网络服务,即可使用nslookup命令来验证实验结果(如果解析失败,请读者留意是否是上级DNS服务器选择的问题)。其中,Server参数为域名解析记录提供的服务器地址,因此可见是由本地DNS缓存服务器提供的解析内容。

    [root@linuxprobe ~]# nslookup
    > www.linuxprobe.com
    Server: 192.168.10.10
    Address: 192.168.10.10#53

    Non-authoritative answer:
    Name: www.linuxprobe.com
    Address: 113.207.76.73
    Name: www.linuxprobe.com
    Address: 116.211.121.154
    > 8.8.8.8
    Server: 192.168.10.10
    Address: 192.168.10.10#53

    Non-authoritative answer:
    8.8.8.8.in-addr.arpa name = google-public-dns-a.google.com.
    Authoritative answers can be found from:
    in-addr.arpa nameserver = f.in-addr-servers.arpa.
    in-addr.arpa nameserver = b.in-addr-servers.arpa.
    in-addr.arpa nameserver = a.in-addr-servers.arpa.
    in-addr.arpa nameserver = e.in-addr-servers.arpa.
    in-addr.arpa nameserver = d.in-addr-servers.arpa.
    in-addr.arpa nameserver = c.in-addr-servers.arpa.
    a.in-addr-servers.arpa internet address = 199.212.0.73
    a.in-addr-servers.arpa has AAAA address 2001:500:13::73
    b.in-addr-servers.arpa internet address = 199.253.183.183
    b.in-addr-servers.arpa has AAAA address 2001:500:87::87
    c.in-addr-servers.arpa internet address = 196.216.169.10
    c.in-addr-servers.arpa has AAAA address 2001:43f8:110::10
    d.in-addr-servers.arpa internet address = 200.10.60.53
    d.in-addr-servers.arpa has AAAA address 2001:13c7:7010::53
    e.in-addr-servers.arpa internet address = 203.119.86.101
    e.in-addr-servers.arpa has AAAA address 2001:dd8:6::101
    f.in-addr-servers.arpa internet address = 193.0.9.1
    f.in-addr-servers.arpa has AAAA address 2001:67c:e0::1

     

    来自 <https://www.linuxprobe.com/chapter-13.html>

     

     

     

     

    五、分离解析技术

    现在,喜欢看我们这本《Linux就该这么学》的海外读者越来越多,如果继续把本书配套的网站服务器(https://www.linuxprobe.com)架设在北京市的机房内,则海外读者的访问速度势必会很慢。可如果把服务器架设在美国那边的机房,也将增大国内读者的访问难度。

    为了满足海内外读者的需求,外加刘遄老师不差钱,于是可以购买多台服务器并分别部署在全球各地,然后再使用DNS服务的分离解析功能,即可让位于不同地理范围内的读者通过访问相同的网址,而从不同的服务器获取到相同的数据。例如,我们可以按照表13-5所示,分别为处于北京的DNS服务器和处于美国的DNS服务器分配不同的IP地址,然后让国内读者在访问时自动匹配到北京的服务器,而让海外读者自动匹配到美国的服务器,如图13-9所示。

    表13-5                                      不同主机的操作系统与IP地址情况

    主机名称

    操作系统

    IP地址

    DNS服务器

    RHEL 7

    北京网络:122.71.115.10

     

     

    美国网络:106.185.25.10

    北京用户

    Windows 7

    122.71.115.1

    海外用户

    Windows 7

    106.185.25.1

     

    图13-9  DNS分离解析技术

    为了解决海外读者访问https://www.linuxprobe.com时的速度问题,刘遄老师已经在美国机房购买并架设好了相应的网站服务器,接下来需要手动部署DNS服务器并实现分离解析功能,以便让不同地理区域的读者在访问相同的域名时,能解析出不同的IP地址。

    建议大家将虚拟机还原到初始状态,并重新安装bind服务程序,以免多个实验之间相互产生冲突。

    第1步:修改bind服务程序的主配置文件,把第11行的监听端口与第17行的允许查询主机修改为any。由于配置的DNS分离解析功能与DNS根服务器配置参数有冲突,所以需要把第51~54行的根域信息删除。

    [root@linuxprobe ~]# vim /etc/named.conf
    ………………省略部分输出信息………………
     44 logging {
     45 channel default_debug {
     46 file "data/named.run";
     47 severity dynamic;
     48 };
     49 };
     50
     51 zone "." IN {
     52 type hint;
     53 file "named.ca";
     54 };
     55
     56 include "/etc/named.rfc1912.zones";
     57 include "/etc/named.root.key";
     58
    ………………省略部分输出信息………………

    第2步:编辑区域配置文件。把区域配置文件中原有的数据清空,然后按照以下格式写入参数。首先使用acl参数分别定义两个变量名称(china与american),当下面需要匹配IP地址时只需写入变量名称即可,这样不仅容易阅读识别,而且也利于修改维护。这里的难点是理解view参数的作用。它的作用是通过判断用户的IP地址是中国的还是美国的,然后去分别加载不同的数据配置文件(linuxprobe.com.china或linuxprobe.com.american)。这样,当把相应的IP地址分别写入到数据配置文件后,即可实现DNS的分离解析功能。这样一来,当中国的用户访问linuxprobe.com域名时,便会按照linuxprobe.com.china数据配置文件内的IP地址找到对应的服务器。

    [root@linuxprobe ~]# vim /etc/named.rfc1912.zones
    1 acl "china" { 122.71.115.0/24; };
    2 acl "american" { 106.185.25.0/24;};
    3 view "china"{
    4 match-clients { "china"; };
    5 zone "linuxprobe.com" {
    6 type master;
    7 file "linuxprobe.com.china";
    8 };
    9 };
    10 view "american" {
    11 match-clients { "american"; };
    12 zone "linuxprobe.com" {
    13 type master;
    14 file "linuxprobe.com.american";
    15 };
    16 };

    第3步:建立数据配置文件。分别通过模板文件创建出两份不同名称的区域数据文件,其名称应与上面区域配置文件中的参数相对应。

    [root@linuxprobe ~]# cd /var/named
    [root@linuxprobe named]# cp -a named.localhost linuxprobe.com.china
    [root@linuxprobe named]# cp -a named.localhost linuxprobe.com.american
    [root@linuxprobe named]# vim linuxprobe.com.china

    $TTL 1D

    #生存周期为1天

     

     

     

     

    @

    IN SOA

    linuxprobe.com.

    root.linuxprobe.com.

    (

     

     

    #授权信息开始:

    #DNS区域的地址

    #域名管理员的邮箱(不要用@符号)

     

     

     

     

     

     

    0;serial

    #更新序列号

     

     

     

     

    1D;refresh

    #更新时间

     

     

     

     

    1H;retry

    #重试延时

     

     

     

     

    1W;expire

    #失效时间

     

     

     

     

    3H;)minimum

    #无效解析记录的缓存时间

     

    NS

    ns.linuxprobe.com.

     

    #域名服务器记录

     

    ns

    IN A

    122.71.115.10

     

    #地址记录(ns.linuxprobe.com.)

     

    www

    IN A

    122.71.115.15

     

    #地址记录(www.linuxprobe.com.)

     

    [root@linuxprobe named]# vim linuxprobe.com.american

    $TTL 1D

    #生存周期为1天

     

     

     

     

    @

    IN SOA

    linuxprobe.com.

    root.linuxprobe.com.

    (

     

     

    #授权信息开始:

    #DNS区域的地址

    #域名管理员的邮箱(不要用@符号)

     

     

     

     

     

     

    0;serial

    #更新序列号

     

     

     

     

    1D;refresh

    #更新时间

     

     

     

     

    1H;retry

    #重试延时

     

     

     

     

    1W;expire

    #失效时间

     

     

     

     

    3H;)minimum

    #无效解析记录的缓存时间

     

    NS

    ns.linuxprobe.com.

     

    #域名服务器记录

     

    ns

    IN A

    106.185.25.10

     

    #地址记录(ns.linuxprobe.com.)

     

    www

    IN A

    106.185.25.15

     

    #地址记录(www.linuxprobe.com.)

     

    第4步:重新启动named服务程序,验证结果。将客户端主机(Windows系统或Linux系统均可)的IP地址分别设置为122.71.115.1与106.185.25.1,将DNS地址分别设置为服务器主机的两个IP地址。这样,当尝试使用nslookup命令解析域名时就能清晰地看到解析结果,分别如图13-10与图13-11所示。

    图13-10   模拟中国用户的域名解析操作

    图13-11  模拟美国用户的域名解析

     

    来自 <https://www.linuxprobe.com/chapter-13.html>

     

     

     

    六、解析反馈设置(给予不同ip用户不同答案)

    ###(3)解析反馈设置(给予不同ip用户不同答案)

    1.cd /var/named/                      切换到/var/named/目录下

    2.cp -p hk.com hk.com.net       复制生成hk.com.net文件

     

     

    3.vim /hk.com.net                     编辑文件如图所示:

    4.cp -p /etc/named.rfc1912.zones /etc/named.rfc1916.zones   复制产生一个新的文件/etc/named.rfc1916.zones

    5.vim /etc/named.rfc1916.zones  编辑文件如图所示:

    6.vim /etc/named.conf           编辑文件如图所示,给予不同ip用户不同答案,将文件中51到58行注释掉:

     

     

     

    然后编辑内容59到80行,如图所示,只有172.25.254.21能够看到/etc/named.rfc1912.zones文件中解析出来的ip,其他ip用户可以看到

    /etc/named.rfc1916.zones文件中解析出来的ip地址:

    7.systemctl restart named       重启服务,让修改生效

     

    8.测试 

     

    在ip为172.25.254.21的主机上编辑文件vim /etc/resolv.conf,将本机ip作为172.25.254.21的主机的dns:

     

     

    在ip为172.25.254.21的主机上访问 www.hk.com,成功解析出来ip,与之前文件中一致

     

    本机自己访问 www.hk.com  和ip为172.25.254.21所看到解析出来的ip不同,说明配置成功:

    • forwarders { 114.114.114.114; } ;
    • forward only ;
    • allow-query { any; };
    • dump-file, statistics-file, memstatistics-file
    • directory “/var/named”;
    • listen-on port 53 { any; };
    展开全文
  • 注:此文章只是为了做笔记,方便以后查阅,内容大部分只是...(一)DNS协议的概念 DNS —> Domain Name System —> 域名系统的英文缩写;它所提供的服务是用来将主机名和域名转换为IP地址的工作。 (二)域...

    注:此文章只是为了做笔记,方便以后查阅,内容大部分只是摘录,具体内容可以通过https://blog.csdn.net/baidu_37964071/article/details/80500825了解

    (一)DNS协议的概念

       DNS —> Domain Name System —> 域名系统的英文缩写;它所提供的服务是用来将主机名和域名转换为IP地址的工作。

    (二)域名解析过程

      1、在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

      2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

      3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,会找本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

      4、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(http://qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找http://qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。

      5、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

    简单来说就是按照—》

        1、浏览器缓存:当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);

      2、系统缓存:当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;

      3、路由器缓存:当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;

      4、ISP(互联网服务提供商)DNS缓存:当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;

      5、根域名服务器:当以上均未完成,则进入根服务器进行查询。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器;

      6、顶级域名服务器:顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器;

      7、主域名服务器:主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;

    (三)了解递归查询和迭代查询

       从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

       递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
       迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。

      递归就是把一件事情交给别人,如果事情没有办完,哪怕已经办了很多,都不要把结果告诉我,我要的是你的最终结果,而不是中间结果;如果你没办完,请你找别人办完。迭代则是我交给你一件事,你能办多少就告诉我你办了多少,然后剩下的事情就由我来

    (四)了解host文件

        Hosts是系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从host文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。

    参考文章:

    https://blog.csdn.net/baidu_37964071/article/details/80500825

    展开全文
  • Linux中搭建DNS服务器

    万次阅读 多人点赞 2018-09-18 11:04:32
    目录 ...DNS(Domain Name Service)域名解析服务,就是将域名和 ip 之间做相应的转换,利用 TCP 和 UDP 的53号端口DNS系统作用: 正向解析:根据域名查找对应的ip地址 反向解析:根据ip地址查...
  • linux系统服务DNS详解过程及实例

    千次阅读 2019-05-26 18:38:37
    DNS解析详解一.  什么是DNS     网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”...
  • linuxdns配置详细步骤

    万次阅读 2016-07-04 08:55:32
    DNS的配置步骤 一、配置静态IP地址: #vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.198.0.5 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 #/...
  • Linux 命令面试题

    万次阅读 多人点赞 2019-07-24 09:40:04
    Linux面试题: 1.Linux常用系统安全命令 sudo // 超级用户 su // 用于切换当前用户身份到其他身份,变更时需输入所要变更的用户账号与密码。 chmod // 用来变更文件或目录的权限 setfacl // 设置文件访问控制列表 2....
  • 我们实现简单的dns服务器配置,实现域名解析。 一、安装bind软件 安装命令:yum install bind 查看安装:rpm –qa | grep bind 相关介绍: bind的启动脚本位于/etc/rc.d/init.d/named 主要的文件路径: 二、设置...
  • 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...
  • Linux DNS域名解析

    2020-01-17 22:29:38
    DNS系统的作用 正向解析:根据主机名称(域名)查找对应的IP地址 反向解析:根据IP地址查找对应的主机域名 缓存域名服务器(高速缓存服务器) 提高重复查询的速度,节省互联网的网络带宽,适用于公司人员多,访问...
  • linux 下的DNS服务配置

    千次阅读 2019-05-22 18:15:59
    DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的...
  • 文章目录前言:一、BIND域名服务基础1.1 DNS系统的作用1.2 DNS系统类型二、使用BIND构建域名服务器2.1 BIND安装文件2.2 主配置文件2.2 区域数据配置文件的特殊应用三、使用BIND构建域名服务器(实验)总结: ...
  • 的防火墙要对所有的dns查询进行监控检查过滤丢弃...必然导致缓慢的dns查询... 尤其是国外的网站...慢死... 思路如下 1.通过tcpdump命令抓取所有dns查询的53端口udp的数据包 [code="shell"]sudo ...
  • Linux实用教程(第三版)

    万次阅读 多人点赞 2019-08-27 22:55:59
    第一章 Linux系统初步了解 本章内容 1.1 Linux系统简介 1.2 Linux系统的特点和组成 1.3 Linux版本介绍 1.4 Red Hat Linux系统概述 1.1 Linux系统简介 1.1.1 什么是Linux 1.1.2 Linux系统的产生 1.1.3 Linux...
  • linux命令大全

    千次阅读 2015-12-24 08:44:14
    Linux命令大全完整版 目 录 目 录... I 1. linux系统管理命令... 1 adduser1 chfn(change finger information)1 chsh(change shell)1 date. 2 exit3 finger4 free. 5 fwhois5 gitps(gnu ...
  • Linux系统服务之DNS域名解析服务

    千次阅读 2019-05-16 22:24:09
    什么是DNS? 域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。DNS,即Domain Name System,域比如名服务器,实现域名和IP地址对应的解析。将www.baidu.com 转换成某个IP地址,或者将某个IP映射成...
  • Linux--DNS域名解析,理论+实操(BIND域名服务基础(DNS系统的类型和作用,BIND的安装和配置文件),DNS域名解析实验前言一:BIND域名服务基础1.1:DNS系统的作用及类型1.1.1:DNS系统的作用1.1.2:DNS系统的类型1.2...
  • DNS DNS产生的背景 在Internet网中连接着数量众多的主机,要让这些主机进行通信,更多情况下使用IP得知来标识计算机,主机在互联网上靠IP地址进行位置标识。但是这种纯数字的表示方式不便于人的记忆,因此提出了主机...
  • 前端面试题

    万次阅读 多人点赞 2019-08-08 11:49:01
    去掉数组中重复的数字 方法一; 81 阶乘函数; 82 window.location.search() 返回的是什么? 83 window.location.hash 返回的是什么? 83 window.location.reload() 作用? 83 、javascript 中的垃圾回收...
  • 软件测试面试题汇总

    万次阅读 多人点赞 2018-09-27 12:31:09
    转载自: ... 软件测试面试题汇总 测试技术面试题 ...........................................................................................................
  • 一、DNS的基本知识  我们都知道,网络通信中,数据链路等使用的地址是MAC地址。网络层使用的是IP地址,传输层使用的地址是端口号,它们各有各的识别方式。而和用户关系最密切的就是IP地址,每个入网的(不论是...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    C#基础教程-c#实例教程,适合初学者。 第一章 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。...
  • CentOS8 部署DNS服务器

    千次阅读 2020-08-19 16:25:10
    部署域名解析服务器DNS简介bind服务器程序编辑bind主配置文件编辑bind区域配置文件部署DNS主服务器正向解析编辑区域配置文件编辑数据配置文件反向解析编辑区域配置文件编辑数据配置文件部署DNS从服务器设置主服务器...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对...
  • 一、简单介绍 1、DNS系统类型 ... 提高重复查询的速度 节省互联网的网络带宽 适用于公司人员多,访问流量大 主域名服务器: 特定 DNS 区域的官方服务器,具有唯一性 负责维护该区域内所有域名 -&g...
  • DNS服务架构

    千次阅读 2019-11-16 17:37:19
    DNS客户端:192.168.32.6/24 本地DNS服务器(只缓存):192.168.32.8/24 转发目标DNS服务器:192.168.32.18/24 根DNS服务器:192.168.32.28/24 org域DNS服务器:192.168.32.38/24 likai.org域主DNS服务器:192.168....
  • 一、域名服务基础 www--->为主机名 ... ...根域 全球只有13台服务器 ...3.找dns服务器 ...4.dns服务器查看缓存 ...5.dns服务器逐级访问根域 、顶级域。。。。。 查询方式: 1.迭代查询 2.递归查询...
  • 将域名查询结果缓存到本地,提高重复查询时的速度 主域名服务器 特定 DNS 区域的官方服务器,具有唯一性 负责维护该区域内所有域名 -> IP 地址的映射记录 从域名服务器 也称为辅助域名服务器 其维护的域名 -&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,150
精华内容 7,660
关键字:

linux检查dns重复

linux 订阅