zoukankan      html  css  js  c++  java
  • dns

    DNS:域名解析服务器。基于BIND。分布式数据库,上级仅知道其直接下级,下级只知道根的位置。

    主机名:www.baidu.com
    域名:baidu.com
    FQDN:www.baidu.com.,加上点

    组织域:.com  .org  .net  .cc
    国家域:.cn  .tw  .hk  
    反向域:

    /etc/hosts:最早的hostname对应ip的文件
    /etc/resolv.conf:运营商的dns服务器ip记录
    /etc/nsswitch.conf:这个文件是来决定先使用hosts还是resolv的设置

    hosts:  file dns
    #代表先用hosts再用运营商的
    

    两种查询方式
      递归:只发出一次请求,一级一级的查找,一级一级的返回。主机指定的DNS必须可以为主机递归。
      迭代:发出多次请求,第一级挨个去查找,最后一级直接返回。根不为任何人递归,迭代方式。

    两种解析方式
      正向:FQDN->ip     www.baidu.com ->ip:202.108.22.5
      反向:ip->FQDN     202.108.22.5->www.baidu.com

    工作内容
      接受本地客户端查询请求(递归)
      接受外部客户端查询请求权威答案
        肯定答案:TTL
        否定答案:TTL
      接受外部客户端查询请求非权威答案

    工作模式
      主DNS服务器:数据修改
      从DNS服务器:请求数据同步
      缓存DNS服务器:
      转发器:

    区域传送类型
      完全区域传送:axfr
      增量区域传送:ixfr
    区域类型
      主区域:master
      从区域:slave,负责从主dns同步数据库,并提供查询
      提示区域:hint,当服务器不知道某个主机名在哪的时候就得去找根,hint就是根的地址zone
      转发区域:forward,也就是缓存DNS服务器

      

    资源记录格式
    DOMAIN  [TTL]  IN  RRtype  RRvalue
    DOAMIN:待查数据,FQDN,记得加上后面的点
    TTL:客户端查询到记录后的有效时间
    IN:固定关键词
    ★RRtype:资源记录类型,下面有写
    RRvalue:对应的值

    例:
    www.abc.com.    IN  A   1.1.1.1
    1.1.1.1     IN  PTR  www.abc.com.

    正向区域资源记录类型
    SOA(start of authority):起始授权记录,就是管理这个域的重要参数,放在首行
    格式  ZONENAME  TTL  IN  SOA  MASTERFQDN  ADMINISTRATOR_MAILBOX (
                    serialnumber  
                    refresh
                    retry
                    expire
                    nagativeTTL  )
      MASTERFQDN:该区域内主DNS名称
      ADMINISTRATOR_MAILBOX:管理员的邮箱,邮箱格式:admin@abc.com写成admin.abc.com
      serialnumber:代表数据库的新旧,判断是否需要下载。通常使用日期,大小不能超过2^32,也就是4294967296
      refresh:跟新频率,每个多长时间slave去向master请求数据
      retry:当更新时由于某些原因导致失败,尝试更新时间,如果更新成功,时间会恢复成refresh
      expire:如果一直更新失败,达到这个时间,就不会在更新了,等待管理员处理
      nagativeTTL:如果这个数据的zone文件中,RR记录没有标明有效时间,就以这个时间为主。

      时间单位:M(分钟),H(小时),D(天),W(周),默认为秒
        refresh>=retry*2
        refresh+retry<expire
        expire>=retry*10
        expire>=7天  
    例   
    abc.com.  600  IN  SOA  ns.abc.com.  admin.abc.com  (
                      1
                      1H
                      5M
                      1W
                      1D  )
    NS(name server):ZONE NAME->FQDN  权威DNS服务器

      abc.com.  IN  NS  ns.abc.com.
      ns.abc.com.  IN  A  1.1.1.1
    MX(mail exchanger):ZONE NAME->FQDN  邮件服务器,当有邮件发送给到这个区域时,直接转发到这个邮件服务器上

    邮件服务器定义格式。有一个优先级,防止邮件服务器挂掉之后邮件无法接收。范围是0-99,数值越低越优先。而且必须对应A记录存在
      
    ZONENAME  TTL  IN  MX  PRI  VALUE

      abc.com.  600  IN  MX  10  mail.abc.com.
      mail.abc.com.  600  IN  A  1.1.1.1
      
    A(address):FQDN->ipv4  从主机名到ipv4
    AAAA(address):FQDN->ipv6  从主机名到ipv6
    PTR(pointer):ip->FQDN  从ip到主机名
    CNAME(canonical name):FQDN1->FQDN2  2的别名是1,多用在ip常变化的场景

    向区域资源记录类型
    反解ip要把ip倒着写并且加上.in-addr.arpa.,要加上点

      1.168.192.in-addr.arpa.  IN  SOA..........
      1.1.168.192.in-addr.arpa.  IN  PTR  www.a.com.

     

     

     

    host 主机名:解析这个地址
      -a:显示这个主机的详细信息

    nslookup 主机名:解析这个地址
    nslookup:不加任何参数,可以进入特殊的查询模式
      set type=any:列出所有的信息正解方面配置文件
      set type=mx:列出邮件服务器信息
    dig 主机名:解析这个地址
    dig 主机名 @DNSserver:用指定的dns服务器解析这个地址
    dig +trace 主机名:从根开始解析这个地址
    dig -t type 主机名:指定数据类型解析
        a 主机名:正解
        ns 域名:域名解析
    dig -x 主机名:查询反向解析  

    BIND
      /etc/named.conf:主配置文件
      /etc/sysconfig/named:是否启动chroot及额外的参数,这个文件控制
      /etc/rndc.key:密钥文件
      /etc/rndc.conf:配置文件
      /var/named/:区域数据文件,数据库文件默认路径
      /var/run/named/:程序启动后默认放置pid的位置
      /etc/rc.d/init.d/named:服务脚本,service named configtest检查语法错误

    [root@localhost ~]# yum list installed | grep ^bind
    bind.x86_64                          #主程序
    bind-chroot.x86_64                   #把bind程序关在家里
    bind-libs.x86_64                       #库文件
    bind-utils.x86_64                      #客户端查找主机名的相关命令
    

     缓存DNS服务器

    1.dns缓存服务器,只把客户端的请求丢给上层服务器,上层服务器返回结果后,将对应关系缓存下来。
    2.设置之前,需要关掉selinux,放开防火墙相应端口。
    3.缓存器只需要设置下面这些就可以,之后systemctl start named开启,之后测试就行了
    4.启动是成功还是失败可以看下/var/log/message文件

    由于只是缓存器,所以不需要数据库文件,更改这一个文件就可以了。

    [root@localhost ~]# cat /etc/named.conf
    #默认情况下这个文件会读取/etc/named.rfc1912.zones区域文件
    options {
    	listen-on port 53 { any; };   #在哪个地址上监听端口
    	listen-on-v6 port 53 { ::1; };    #ipv6监听端口
    	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 yes;     #将自己视为客户端的一种查询方式
            forward only;    #只把客户端的查询交给上层
    	forwarders {      #上层DNS有哪些,可以写多个,分号结尾
    		8.8.8.8;
    };
    

     MasterDNS服务器

    1.架设这种服务器需要授权,也就是说也就是自个内网可以使用
    2.主配置文件仍然是/etc/named.conf  
    3.每一个正反解文件都需要一个文件,这个文件名需要与/etc/named.conf相关项匹配
    4.dns不能查询时会想根请求
    5.一个文件对应一个zoon解析
    6.邮件资源记录不要忘记加上优先级
    7.启动是否成功在/var/log/message文件中查看
    8.涉及到的四个文件是
      /etc/named.conf   
      /var/named/正解文件     
      /var/named/反解文件   
      /var/named/named.ca

    先要修改主文件配置 

    [root@localhost named]# cat /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 yes;      #这上面一段都是一样的,需要把forward only去掉
    	allow-transfer	{ none;  };   #是否允许其他服务器下载数据库,还没配置slave。所以不允许
    };
    zone "." IN {                    #这个就是不知道怎么做时候去找根
    	type hint;
    	file "named.ca";       #这个文件bind有提供,就在/var/named/named.ca
    };
    zone "a.com" IN {              #要正解的区域
    	type master;
    	file "named.a.com";    #这个文件需要等会新建,名字需要匹配
    };
    zone "0.168.192.in-addr.arpa" IN {     #反解区域,名字格式固定
    	type master;
    	file "named.192.168.0";      #这个文件名也需要匹配
    };
    

     之后编辑对应的正解文件

    [root@localhost named]# cat /var/named/named.a.com
    $TTL 600          #这一行是设定默认的TTL值
    @	IN SOA	dns1.a.com.	1.qq.com. (
    					1
    					3H
    					15M
    					1W
    					1D
    )
    #固定格式,@代表由主文件传过来的域也就是a.com.
    @	IN	NS	dns1.a.com.   #NS记录
    dns1.a.com.	IN	A	192.168.0.104   #NS的A记录
    @	IN	MX	1	mail.a.com.       #MX记录,邮件服务器前一定要加上优先级
    www.a.com.	IN	A	192.168.0.105      #这些就是相对应的A记录
    aaa.a.com.	IN	CNAME	www.a.com.
    ftp  IN	A	192.168.0.106    #写成这样会自动补成ftp.a.com.
    

     编辑反解文件

    [root@localhost named]# cat /var/named/named.192.168.0
    $TTL 600     #默认TTL
    @	IN	SOA	dns1.a.com	2697466566.qq.com. (
    					1
    					3H
    					15M
    					1W
    					1D
    )
    @	IN	NS	dns1.a.com.    #@就是0.169.192.in-arrd.arpa
    104	IN	PTR	dns1.a.com.    #这样写会补成104.0.168.192.in-addr.arpa.
    105	IN 	PTR	www.a.com.
    105	IN	PTR	aaa.a.com.
    106	IN	PTR	ftp.a.om.
    

     SlaveDNS服务器

    1.注意事项同上
    2.slave服务器不需要编写数据库文件,它的文件从master传过来
    3.master主配置文件/etc/named.conf需要配置相关选项
    4.master数据库文件/var/named/name.正反解文件 需要配置相关选项
    5.涉及到的4个文件分别是
          master的   /etc/named.conf
          master的   /var/named/正解文件
          master的   /var/named/反解文件
          slave的     /etc/named.conf

    master的主配置文件

    [root@localhost ~]# cat /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 yes;
    	allow-transfer	{ none;  };
    };
    zone "." IN {
    	type hint;
    	file "named.ca";
    };                                            #这上面都一样
    zone "a.com" IN {
    	type master;
    	file "named.a.com";
    	allow-transfer { 192.168.0.104;  };   #允许讲这个区域的数据库传送给谁
    };
    zone "0.168.192.in-addr.arpa" IN {
    	type master;
    	file "named.192.168.0";
    	allow-transfer { 192.168.0.104;  };    #同上
    };
    

     master的正解文件

    [root@localhost ~]# cat /var/named/named.a.com
    $TTL 600
    @	IN SOA	dns1.a.com.	2697466566.qq.com. (
    					1
    					3H
    					15M
    					1W
    					1D
    )
    @	IN	NS	dns1.a.com.
    dns1.a.com.	IN	A	192.168.0.105
    @	IN	NS	dns2.a.com.                  #增加一个NS记录及正向解析
    dns2.a.com.	IN	A	192.168.0.104
    
    @	IN	MX	1	mail.a.com.
    www.a.com.	IN	A	192.168.0.200
    aaa.a.com.	IN	CNAME	www.a.com.
    
    ftp	IN	A	192.168.0.201
    

     master的反解文件

    [root@localhost ~]# cat /var/named/named.192.168.0
    $TTL 600
    @	IN	SOA	dns1.a.com	2697466566.qq.com. (
    					1
    					3H
    					15M
    					1W
    					1D
    )
    @	IN	NS	dns1.a.com.
    @	IN	NS	dns2.a.com.      #增加一个NS记录及反向解析
    105	IN	PTR	dns1.a.com.
    104	IN 	PTR	dns2.a.com.
    200	IN	PTR	aaa.a.com.
    201	IN	PTR	ftp.a.om.
    

    slave的主配置文件

    [root@localhost ~]# cat /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 yes;
            allow-transfer  { none;  };
    };
    zone "." IN {
    	type hint;
    	file "named.ca";
    };                                       #这上面都是一样的
    zone "a.com" IN  {
    	type slave;
    	file "slaves/named.a.com";              #在/var/named下有slaves的文件夹
                                                   #对应填写接收数据的文件名
    	masters   { 192.168.0.105;  };         #这个地方需要填写master 的地址
    };
    zone "0.168.192.in-addr.arpa" IN {
    	type slave;
    	file "slaves/named.192.168.0";    #同上
    	masters { 192.168.0.105;  };            #填写master地址
    };
            
    

    VIEW  负载均衡  

    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    hash
    DatabaseLibrary -数据库操作
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-22: ordinal not in range(128)
    robotframework_酷我音乐_That Girl
    robotframework_百度登陆
    12306_车票预定_修改日期
    基础知识:索引和分片
    基础知识:字符串
    基础知识: 常用数据类型分类 及 数值
    c++拷贝构造函数
  • 原文地址:https://www.cnblogs.com/forlive/p/9033610.html
Copyright © 2011-2022 走看看