码迷,mamicode.com
首页 > 其他好文 > 详细

dns相关内容

时间:2018-02-19 20:00:00      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:hat   aaa   client   back   测试命令   互联网   127.0.0.1   主机   dom   

dns基本工作原理
dns: domain name service
dns udp/53 tcp/53
udp 用于解析 tcp 用于区域传送

         由域名服务器与域名解析器组成  用于域名和ip的相互转换
     dns:分布式 倒置的树状结构
                    最上方为根域 根域服务器世界一共有13台
                        根域服务器下有多个组织服务器 如      .com .org .edu .net 等 也有如表示国家的域服务器 .cn .us等等 这些域名称为顶级域 或者为 一级域
                            一级域下又有诸多二级域 
                                二级域下又可以有诸多三级域 ...
     dns服务器的类型
                1.主dns服务器
                2.从dns服务器
                3.唯缓存dns服务器
                4.转发器

原理:互联网主机通信都是通过ip,域名只不过是提供一个更易记的渠道

    客户端发起dns请求流程:

        client --> /etc/hosts --> local cache --> DNS server(recursive 递归查询) --> dns server local cache --> lterative(迭代查询) -->

    客户端请求域名解析 首先查看/etc/hosts 文件中是否有解析的内容 若无在查询缓存中时否还有上次解析的记录 若无则去查找 指定的dns服务器 (一般来说指定的dns服务器为唯缓存dns服务器)
    指定的dns服务器的缓存中若无相关缓存 则去找其他dns服务器(查找方式为自顶向下) 如 刚开始从根开始查找指定的域名 如查找 www.gaoleng.com
        1. 我们指派的dns服务器 去找根 根会告诉我们指派的dns 他不知道我们所说的域名是哪个ip 但是.com他知道 你应该去找.com查找 并告诉我们 .com的地址
        2. 我们指派的dns服务器又回去 找.com .com说 “我也不知道 你说的域名的 ip地址到底是多少 但是baidu.com应该知道 我跟你说他的ip是多少把 ”
        3. 接着dns服务器又会去找 baidu.com的dns服务器 我们所要查找的域名 确实是在baidu.com域中 baidu.com的dns服务器会说 “你要找的域名 我确实知道他的 ip是..  ” 
        4. 指派的dns服务器 会缓存这一信息 并且 将该域名对应的ip 返回给客户端 客户端 也会缓存这一信息 这样在缓存未到期之前 再次访问www.baidu.com 就不会再去找dns服务器 而是直接在缓存中取得

        客户端 只收取最终结果 其余工作都有指派的dns服务器完成

        递归查询:客户端请求一次 就可以得到最终的结果

                客户端不支持迭代查询 所以依靠唯缓存服务器来帮助查询

        迭代查询:服务器多次发送查找请求 多次返回

dig 命令查看dns搜寻过程

dig  www.yahoo.com +trace

    ~]# dig www.yahoo.com +trace

                ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.5 <<>> www.yahoo.com +trace
                ;; global options: +cmd
                .           5   IN  NS  e.root-servers.net.
                .           5   IN  NS  m.root-servers.net.
                .           5   IN  NS  l.root-servers.net.
                .           5   IN  NS  g.root-servers.net.
                .           5   IN  NS  c.root-servers.net.
                .           5   IN  NS  k.root-servers.net.
                .           5   IN  NS  j.root-servers.net.
                .           5   IN  NS  h.root-servers.net.
                .           5   IN  NS  d.root-servers.net.
                .           5   IN  NS  i.root-servers.net.
                .           5   IN  NS  b.root-servers.net.
                .           5   IN  NS  f.root-servers.net.
                .           5   IN  NS  a.root-servers.net.
                ;; Received 494 bytes from 192.168.117.2#53(192.168.117.2) in 228 ms

                com.            172800  IN  NS  e.gtld-servers.net.
                com.            172800  IN  NS  b.gtld-servers.net.
                com.            172800  IN  NS  j.gtld-servers.net.
                com.            172800  IN  NS  m.gtld-servers.net.
                com.            172800  IN  NS  i.gtld-servers.net.
                com.            172800  IN  NS  f.gtld-servers.net.
                com.            172800  IN  NS  a.gtld-servers.net.
                com.            172800  IN  NS  g.gtld-servers.net.
                com.            172800  IN  NS  h.gtld-servers.net.
                com.            172800  IN  NS  l.gtld-servers.net.
                com.            172800  IN  NS  k.gtld-servers.net.
                com.            172800  IN  NS  c.gtld-servers.net.
                com.            172800  IN  NS  d.gtld-servers.net.
                ;; Received 507 bytes from 198.41.0.4#53(198.41.0.4) in 481 ms

                yahoo.com.      172800  IN  NS  ns1.yahoo.com.
                yahoo.com.      172800  IN  NS  ns5.yahoo.com.
                yahoo.com.      172800  IN  NS  ns2.yahoo.com.
                yahoo.com.      172800  IN  NS  ns3.yahoo.com.
                yahoo.com.      172800  IN  NS  ns4.yahoo.com.
                ;; Received 285 bytes from 192.31.80.30#53(192.31.80.30) in 304 ms

                www.yahoo.com.      1800    IN  CNAME   atsv2-fp.wg1.b.yahoo.com.
                wg1.b.yahoo.com.    172800  IN  NS  yf2.yahoo.com.
                wg1.b.yahoo.com.    172800  IN  NS  yf4.a1.b.yahoo.net.
                wg1.b.yahoo.com.    172800  IN  NS  yf3.a1.b.yahoo.net.
                wg1.b.yahoo.com.    172800  IN  NS  yf1.yahoo.com.
                ;; Received 178 bytes from 68.142.255.16#53(68.142.255.16) in 311 ms

dns 解析答案

    1.肯定答案 : 肯定 有的域名解析答案
    2.否定答案 : 请求不存在等原因导致的 无法返回结果  

        注意 :(肯定答案和否定答案在dns服务器中都会有缓存 本地没有的答案即为否定答案 这样每次请求不存在的主机就不用让主机所在区域的dns服务器每次都响应 占用资源)

    3.权威答案 :由主机所在dns服务器解析出的直接得到的答案 
    4.非权威答案 : 不是由主机所在dns服务器解析返回的答案 而是从其他dns服务器缓存中获取的答案

区域解析库
资源记录:resource record (RR)
记录类型 SOA NS PTR A AAAA CNAME MX

SOA: 起始授权记录 一个解析库只能有一个 soa记录 并且 soa记录要在第一条
NS:专门表明当前区域的dns服务器
CNAME: 别名记录
MX: 邮件交换器
PTR: 反向解析 IP --> FQDN 
A:FQDN --> IP
AAAA: FQDN -->IPv6

    注意 :1. TTL可以全局继承
           2. @可用于表示当前区域的名字
           3. 同一个名字可以通过多个记录 定义不同的值 此时dns服务器会以轮询的方式响应
           4. 同一个值也可以定义不同的名字 通过不同的名字指向同一个值 仅表示通过不同的名字可以找到一个主机而已     

SOA:
    name :当前区域名称如 gaoleng.com
    value : 多个部分组成
        1.当前区域的dns服务器的FQDN或者当前区域名称 可用@简写
        2.当前管理员的邮箱地址,但地址中不可有@符号 一般用. 号代替 如 admin.gaoleng.com
        3.主服务器协调属性的定义 以及否定答案的TTL
    例:
        daniu.com.      IN      SOA     dns.daniu.com.  root.daniu.com. (2017120902 1H 15M 1W 1D)

NS:
    name : 当前区域名
    value : 当前区域名的 dns服务器名称 如 “ns1.gaoleng.com”

    例如:
            @    IN      NS      ns1.gaoleng.com

CNAME :
    name : 别名FQDN
    value : 正式的FQDN

    例如:
        web.gaoleng.com IN CNAME www.gaoleng.com

PTR :
    name:ip 的特定格式 如 1.2.3.4 要写成 4.3.2.1 并且加上后缀.in-addr.arpa.

    例:4.3.2.1 IN PTR ns1.gaoleng.com.

A :
    name: 某主机的FQDN
    value:主机对应的ip
    例如:
        www.gaoleng.com     IN      A       192.168.117.131   ---------------------
                            IN      A       192.168.117.130   ---------------------    (注意第三条 轮询 )
        *.gaoleng.com       IN      A       192.168.117.131  ----------------------------------------------------(泛域名解析 避免用户写错主机名而给错误答案 )

AAAA : 
    name: 某主机的FQDN
    value:主机对应的ipv6

MX :
    name:当前区域名
    value:当前区域名的服务器(smtp服务器)的主机名
            一个区域内MX记录可有多个,但每个记录前都应该有一个数字(0-99表示其优先级) 数越小表示其优先级越高
    例如:
            @       IN      MX 10   mx1.gaoleng.com

bind

主配置文件 /etc/named.conf /etc.named.rfc1912.zones /etc/rndc.key
解析库文件 /var/named/ZONE_NAME.zone

注意 : 
    (1). 一台物理服务器 可以同时给多个区域提供解析
    (2). 必须要有根区域文件
    (3). 应该至少有两个(如果包括ipv6 应该更多) 实现localhost 和本地回环地址 127.0.0.1 的解析库

rndc : 默认与bind 安装在同一主机 只能通过127.0.0.1 连接named进程 监听在 953/tcp端口

主配置文件
    全局配置    option{}
    日志子系统配置 logging{}
    区域定义:本机能为哪些zone进行解析 就要定义哪些zone
        zone "ZONE_NAME.ZONE" IN {}

    注意 : 任何服务程序 想要能过通过网络与其他主机访问 至少要监听在一个能与外部主机通信的ip上 
                option中默认指定的监听地址为回环地址

缓存名称服务器 
        只需要监听在一个外部地址上即可

主dns服务器
    1.定义zone区域

        zone"ZONE_NAME.zone"  IN {
                type {master|slave|hind|forword} ;
                file "..." ;
        };

    2.定义解析库
        定义内容 如  $TTL $ORIGIN (可加可不加 用于省略当前区域名字 ) 在SOA中一般不省略当前区域名字 或FQDN 在后面省略时要注意 省略后不可有点
                                                                        如 ns1.gaoleng.com 不可为写 ns1. 应写成 ns1 ;加 oridin时 用法 如 $ORIGIN gaoleng.com 
        资源记录 

    注意 : 定义完之后一般 将写的文件的 权限定为 640 其他人不可读 并且设置 named为文件的属组 因为named程序 是由named用户引导 在读取配置文件 时若为其他人 无法读取文件
            chmod 640 zone_name                                             chown :named zone_name

测试命令:
    dig命令
        dig [-t type ] name [@server] [query option]

            指定资源类型  域名  指定临时dns服务器 不加则为/etc/resolv.conf定义的dns 后接可加选项
    查询选项 
        +[no] trace :跟踪解析过程
        +[no] recurse :进行递归解析

    测试反向dns解析
        dig -x ip @server

    模拟区域传送  
            区域传送:
                      1. 全量传送 : 传送整个解析库
                      2. 增量传送 : 传送解析库变化的部分
            dig -t axfr zone_name @server
        如
            dig -t axfr gaoleng.com @192.168.117.129

    host 命令

        host [-t type] name server

    nslookup 命令
        nslookup [-option] [name|-] [sercer]
        nslookup 
            >server 指定dns服务器
            >set q=rr_type 设定类型
            >NAME 要查询的域名

检查区域文件和解析库文件格式是否正确

        检查区域
    1. named-checkconf 
        检查解析库文件
    2.named-checkzone "解析库名ZONE_NAME" 解析库文件名
        如 named-checkzone "gaoleng.com" gaoleng.com.zone

    测试时建议将dnssec设置成no 不然对一些测试实施会有影响

反向区域:
    区域名为网络地址的反写 后接.in-addr.arpa.
        192.168.117 ---> 117.168.192.in-addr.arpa.

    1.定义区域

            zone "ZONE_NAME" IN {   
                type {master|slave|forword};
                file"ip.zone";
            };

        例如

            zone "117.168.192.in-addr.arpa" IN {
                     type master;
                     file "192.168.117.zone";
             };

    2.区域解析库文件

        注意:反向解析库不需要 MX A AAAA 

        示例
            $TTL 1D
            $ORIGIN 117.168.192.in-addr.arpa.
            @       IN SOA  ns1.gaoleng.com.        root.gaoleng.com ( 2018020501 1D 1H 1W 1D )
                    IN NS   ns1.gaoleng.com.
                    IN NS   ns2.gaoleng.com.
            131     IN PTR ns1.gaoleng.com.
            129     IN PTR ns2.gaoleng.com.
            129     IN PTR mx1.gaoleng.com.
            131     IN PTR www.gaoleng.com.
                    IN PTR gaoleng.com.

主从复制:
1.从服务器应该为一台独立的服务器
2.主服务器的区域解析库必须有一条NS记录是指向从服务器 --- IN ns2.gaoleng.com ns2 IN A 192.168.117.131
3.从服务器只需要定义区域 而无需提供 解析库文件 库文件应该放置于/var/named/slaves目录中
4.主服务器允许进行做区域传送
5.主从服务器 时间应该同步 可通过ntp进行
6.bind 程序的版本应该一致 若不一致 应该主服务器版本低 从服务器版本高

从服务器

只需要 定义区域
        zone "ZONE_NAME" IN {
            type slave;
            masters{master_ip ;};
            file "slaves/ZONE_NAME.ZONE";
        };

rndc:

rndc COMMAND 
    COMMAND:
        reload:重载主配置文件和区域解析库文件
        reload zone:重载区域解析库文件
        status:查看bind状态信息
        retransfer zone:手动启动传送过程,而不管序列号是否增加
        notify zone :重新对区域传送发起通知
        querylog : 开启或关闭查询日志
        trace:传递debug级别
        trace LEVEL :设定debug级别

子域授权

1. 在父区域中定义子区域

    shuai.gaoleng.com   IN      NS      ns1.shuai.gaoleng.com
                        IN      NS      ns2.shuai.gaoleng.com
    ns1.shuai.gaoleng.com       IN      A       192.168.117.131
    ns2.shuai.gaoleng.com       IN      A       192.168.117.132

2. 在相应主机上定义子区域解析库文件

    $TTL 1d
    $ORIGIN shuai.gaoleng.com.

    @   IN  SOA ns1.shuai.gaoleng.com.  admin.shuai.gaoleng.com. ( 2018020601 1H 5M 1W 1D )
        IN  NS  ns1
        IN  NS  ns2
    ns1 IN  A   192.168.117.131
    ns2 IN  A   192.168.117.132
    www IN  A   192.168.117.129

定义转发服务器

注意:1.被指定的转发服务器需要为请求做递归,否则转发请求不进行
      2.forward中 first和only first 表示若转发的服务器 不允许查询时 那自己还会去做查询操作 only表示 若转发的服务器不允许查询时 那自己也就放弃查询
      3.在进行子域或转发测试时关闭dnssec 否则有的操作进行不了

1.全局定义 

    options{
        forward first|only;
        forwarders {FORWARD_DNS_IP;};  
    };

2.区域转发

    zone "ZONE_NAME" IN {
            type forward;
            forword first|only;
            forwarders {FORWARD_DNS_IP;}; 
    };

bind 的安全相关配置

acl:将一个或多个地址归并为一个集合;并通过统一的一个名字调用

    acl ACL_NAME {
            ip;
            net/per;
    };

示例:
acl slaves{
192.168.117.129;
192.168.117.131;
127.0.0.1;
};
以后调用salves相当于调用里面的ip

bind的4个内置acl
none:没有一个主机
any:任意主机
local:本机
localnet:本机的ip和掩码运算后的网络地址

注意:acl只能先定义后调用 其一般定义在options前面部分

访问控制指令

allow-query{}:允许查询的主机,白名单
allow-transfer{}:允许区域传送的主机
allow-resursion{}:允许递归的主机           如 allow-resursion{ slaves;}; 在zone中不能定义
allow-update:允许更新区域数据库中的内容,关闭才安全

示例
zone "gaoleng.com" IN {
type master;
file "gaoleng.com";
allow-transfer{slaves;};
allow-update{none;};
};

view视图

    用于将不同地方客户端的请求 解析到其客户端所在区域的服务器上 如 将上海用户访问此域名 将其解析到伤害的服务器上 这样响应的速度快

    一个bind服务器可定义多个view 每个view可以定义多个zone

    每个view用来匹配一组客户端

    多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件

    格式:
        view VIEW_NAME {
            match-clients{};
        };

    注意:
            1.一旦启用了view,所有的zone都只能定义在view中
            2.仅有必要在匹配到允许递归请求的客户端所在的view定义根区域
            3.客户端请求到达时,是自上而下检查每个view所服务的客户端列表

    示例:

        view localht{
            match-clients{mynet;};

        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 "gaoleng.com" IN {
            type master;
            file "gaoleng.com";
        };

        zone "." IN {
                type hint;
                file "named.ca";
        };

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

        };

        view ext {
            match-clients{any;};
        zone"gaoleng.com" IN    {
            type master;
            file"gaoleng.com.ex.zone";
        };
        };

dns相关内容

标签:hat   aaa   client   back   测试命令   互联网   127.0.0.1   主机   dom   

原文地址:http://blog.51cto.com/13453496/2071893

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!