zoukankan      html  css  js  c++  java
  • DNS解析原理与Bind部署DNS服务

    DNS是什么?

    DNS(Domain Name System,域名系统)是互联网上最核心的带层级的分布式系统,它负责把域名转换为IP地址、反查IP到域名的反向解析以及宣告邮件路由等信息,使得基于域名提供服务称为可能,例如网站访问、邮件服务等。

    DNS解析原理

    DNS系统由两部分组成,一是Resolver解析器,作为DNS请求的客户端,负责从DNS记录中解析出IP或别名等信息;二是NS域名服务器,提供域名解析服务,例如Bind。

    DNS服务器分为三类:一是权威域名服务器,用于解析域名或使用NS记录进行授权;二是缓存域名服务器,用于递归查询并缓存DNS记录;三是转发域名服务器,仅用于转发DNS请求给指定的上级域名服务器。

    DNS记录类型

    1.A记录:指定域名对应IP的记录

    2.PTR记录:指定IP对应域名的记录

    3.MX记录:邮件交换记录,也叫邮件路由记录,指向邮件服务器的IP

    4.CNAME记录:别名记录,用于指向另一个域名

    5.NS记录:域名服务器记录,指定该域名由哪个DNS服务器来解析

    Bind部署DNS域名解析

    Bind是什么?

    BIND伯克利互联网域名服务(Berkeley Internet Name Domain)是一款全球互联网使用最广泛、能够提供安全可靠、快捷高效的域名解析的服务程序。

    安装Bind服务程序

    [root@localhost ~]# yum install -y bind-chroot
    

     修改主配置文件

    [root@localhost ~]# vim /etc/named.conf 
    
     12 options {
     13         listen-on port 53 { any; };  //监听53端口所有来源信息
     14         listen-on-v6 port 53 { ::1; };
     15         directory       "/var/named";
     16         dump-file       "/var/named/data/cache_dump.db";
     17         statistics-file "/var/named/data/named_stats.txt";
     18         memstatistics-file "/var/named/data/named_mem_stats.txt";
     19         allow-query     { any; };   //允许所有来源访问
    

    正向解析:由域名到IP

    配置区域文件

    [root@localhost ~]# vim /etc/named.rfc1912.zones 
    
     zone "test.com" IN{
     
     type master;         //服务器类型:主服务器
     file "test.com.zone";  // 数据文件名称
     allow-update {none;};   // 是否允许从服务器更新解析数据
     
     };
    

     配置域名解析文件

    [root@localhost ~]# cd /var/named
    [root@localhost named]# cp -a named.localhost test.com.zone
    [root@localhost named]# vim test.com.zone 
    
     $TTL 1D
     @       IN SOA  test.com. root.test.com. (
                                             0       ; serial
                                             1D      ; refresh
                                             1H      ; retry
                                             1W      ; expire
                                             3H )    ; minimum
             NS      ns.test.com.          //域名服务器记录:表示该域名由哪台DNS进行解析
     ns      IN A    192.168.41.10
             
             IN MX 10 mail.test.com.       //邮箱交换记录,用于邮件系统解析
     mail    IN A    192.168.41.10
     
     www     IN A    192.168.41.10        //地址记录,表明三级域名www.test.com 对应的解析地址
     bbs     IN A    192.168.41.10
    

     重启服务,进行测试

     [root@localhost named]# systemctl restart named
     [root@localhost named]# systemctl enable named
     [root@localhost ~]# nslookup  //常用解析器
     > www.test.com
     Server:		192.168.41.10
     Address:	192.168.41.10#53
     
     Name:	www.test.com
     Address: 192.168.41.10
     > bbs.test.com
     Server:		192.168.41.10
     Address:	192.168.41.10#53
     
     Name:	bbs.test.com
     Address: 192.168.41.10
     > 

    #测试前记得修改DNS或者直接在/etc/resolve.conf中添加

    反向解析:由IP到域名

    配置区域文件

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

    配置反向解析文件

    [root@localhost ~]# cd /var/named
    [root@localhost named]# cp -a named.loopback 192.168.41.arpa
    [root@localhost named]# vim 192.168.41.arpa 
     
     $TTL 1D
     @       IN SOA  test.com. root.test.com. (
                                             0       ; serial
                                             1D      ; refresh
                                             1H      ; retry
                                             1W      ; expire
                                             3H )    ; minimum
             NS      ns.test.com.
     ns      A       192.168.41.10
     10      PTR     ns.test.com.
     10      PTR     mail.test.com.
     10      PTR     www.test.com.
     20      PTR     bbs.test.com.
    

     重启服务,进行测试

     [root@localhost named]# systemctl restart named
     [root@localhost named]# nslookup
     > 192.168.41.10
     Server:		192.168.41.10
     Address:	192.168.41.10#53
     
     10.41.168.192.in-addr.arpa	name = www.test.com.
     10.41.168.192.in-addr.arpa	name = ns.test.com.
     10.41.168.192.in-addr.arpa	name = mail.test.com.
     > 192.168.41.20
     Server:		192.168.41.10
     Address:	192.168.41.10#53
     
     20.41.168.192.in-addr.arpa	name = bbs.test.com.
     > 
    

    部署从服务器

    配置主服务器区域文件

    [root@localhost named]# vim /etc/named.rfc1912.zones 
    
     zone "test.com" IN{
    
     type master;
     file "test.com.zone";
     allow-update {192.168.41.30;};   //允许从服务器更新
     
     };
     
     zone "41.168.192.in-addr.arpa" IN{
     
     type master;
     file "192.168.41.arpa";
     allow-update {192.168.41.30;};
     
     };
    

     配置从服务器区域文件

    [root@localhost ~]# vim /etc/named.rfc1912.zones 
     
     zone "test.com" IN{
    
     type slave;          //服务器类型:从服务器
     masters {192.168.41.10;};  //主服务器IP
     file "slaves/test.com.zone";  //同步的文件保存的地址
     
     };
     
     zone "41.168.192.in-addr.arpa" IN{
     
     type slave;
     masters {192.168.41.10;};
     file "slaves/192.168.41.arpa";
     
     };
    

     重启服务,进行测试

     [root@localhost slaves]# cd /var/named/slaves/
     [root@localhost slaves]# systemctl restart named
     [root@localhost slaves]# ls
     192.168.41.arpa  test.com.zone		// 主服务器数据文件已经同步过来了
     [root@localhost slaves]# nslookup	
     > www.test.com
     Server:		192.168.41.30
     Address:	192.168.41.30#53
     
     Name:	www.test.com
     Address: 192.168.41.10
     > bbs.test.com
     Server:		192.168.41.30
     Address:	192.168.41.30#53
     
     Name:	bbs.test.com
     Address: 192.168.41.10
     > 192.168.41.10
     Server:		192.168.41.30
     Address:	192.168.41.30#53
     
     10.41.168.192.in-addr.arpa	name = www.test.com.
     10.41.168.192.in-addr.arpa	name = mail.test.com.
     10.41.168.192.in-addr.arpa	name = ns.test.com.
     > 

    #测试前记得修改DNS或者直接在/etc/resolve.conf中添加
    #同步之前记得设置或关闭主服务器防火墙,主从服务器都要重启named服务

     几点说明

    1./etc/resolve.conf是设置DNS的文件,解析器需要读取该文件请求DNS服务。

    2.当网卡重启时,/etc/resolve.conf文件内的设置将会被网卡配置文件中的DNS设置覆盖,所以如果希望DNS设置永久生效,则要在网卡配置文件中配置DNS;如果只是临时修改或添加DNS,则直接配置/etc/resolve.conf文件即可。

    3.Bind服务默认开启递归查询功能,所以既是缓存域名服务器,又是权威域名服务器。如果仅作为权威服务器用于域名解析,则可以关闭递归查询功能;

    vim /etc/named.conf
    options {
            listen-on port 53 { any; };
            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; };
            recursion no;          // 关闭递归查询功能
    
            dnssec-enable yes;
            dnssec-validation yes;
    

     4.DNS服务器中存放着全球13组根域名服务器的NS记录,保存在域名解析文件named.ca中。

    vim /etc/named.conf
    
    zone "." IN {
            type hint;
            file "named.ca";
    };
    
    vim /var/named/named.ca 
    
    ; formerly NS.INTERNIC.NET
    ;
    .                        3600000      NS    A.ROOT-SERVERS.NET.
    A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
    A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:ba3e::2:30
    ;
    ; FORMERLY NS1.ISI.EDU
    ;
    .                        3600000      NS    B.ROOT-SERVERS.NET.
    B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
    B.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:84::b
    ;
    ; FORMERLY C.PSI.NET
    ;
    .                        3600000      NS    C.ROOT-SERVERS.NET.
    C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
    C.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2::c
    "/var/named/named.ca" 92L, 3289C     
    ... ...
    
  • 相关阅读:
    CVE-2020-14882&14883weblogic未授权命令执行漏洞复现
    不学点《近世代数》怎么学好现代密码学
    Android 7.0应用之间共享文件
    在.NET Core 中收集数据的几种方式
    浅析 TensorFlow Runtime 技术
    Linux — 进程管理
    【爬虫】爬取淮安信息职业学校(苏电院)的新闻网 python
    【爬虫】获取Github仓库提交纪录历史的脚本 python
    React入门学习笔记
    test
  • 原文地址:https://www.cnblogs.com/Peter2014/p/7561597.html
Copyright © 2011-2022 走看看