zoukankan      html  css  js  c++  java
  • DNS介绍与安装使用

    DNS简介

    DNS是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP的53号端口。

    DNS服务的基本概念

    在使用DNS前需要了解一些和DNS相关的概念这样有助于更好的理解DNS原理和使用。

    域简单理解就是我们使用的域名,只是域名是有划分的,分为根域,顶级域等等,域的划分如下:

    我们平时浏览互联网使用的域名.com、.org等都是顶级域。

    FQDN:完全域名限定

    每一个域名在全球网络中都是唯一的,比如gudaoyufu.com.

    DNS服务器查询的类型

    1. 递归查询:
      递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
    2. 迭代查询:
      DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果
      为止。

    DNS查询过程

    画一张简化流程图:

    一次完整的解析过程:
    client ——> 本机hosts 文件 ——> local cache(浏览器缓存) ——> DNS server ——> server cache ——> iteration(迭代)

    DNS解析

    1. 正向解析:将域名转换成ip地址
    2. 反向解析:将ip地址转换成域名

    DNS解析返回的结果类型

    1. 肯定答案:查询的域存在,会被缓存下来。
    2. 否定答案:不存在查询的域名,因此不存在与其查询的域名对应的IP;会被缓存下来。
    3. 权威答案:所查询的域名的结果是由负责解析这个域的DNS服务器所返回的答案。
    4. 非权威答案:在缓存中查询的结果。

    DNS服务器类型

    • 主dns服务器
    • 从dns服务器
    • 缓存服务器

    主dns服务器:维护所负责解析的域内解析库服务器;解析库由管理员管理维护
    从dns服务器:从主dns服务器或其他从dns服务器那里同步解析库
    从服务器相关原理:

    序列号:解析库的版本号:前提:主服务器解析库内容发生变化,其序列递增
    刷新时间:从服务器从主服务器请求同步解析库的时间间隔
    重试时长:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔
    过期时长:从服务器始终联系不到主服务器时,多久时间后放弃从服务器角色,停止提供服务
    否定答案的TTL值:

    缓存服务器:接收互联网用户请求,不负责解析任何域,只提供代理解析工作,并将解析的结果存在本地,实现缓存功能
    主从之间的数据同步方式:区域传送
    全量传送:传送整个解析库
    增量递增:传递解析库变化的那部分内容

    资源记录(RR)的类型

    SOA:起始授权记录:一个区域解析库有且只能有一条SOA记录。且必须为区域解析库的第一条记录
    NS : 专用于表明当前区域的DNS服务器,指名DNS服务器
    A: 主机名到ip地址的解
    MX :邮件交换器,表明当前域内谁是邮件服务器
    CNAME : 别名记录
    PTR : IP ——> FQDN
    AAAA : FQDN ——> IPv6

    资源记录的语法

    SOA记录:name  [TTL]  IN  type  value
    注意:
    (1) name:当前区域的名字,例如“yufu.com”
    (2) @可用于引用当前区域的名字
    (3) value: 有多部分组成

    1, 当前区域的主DNS服务器的FQND,也可以使用当前区域的名字
    2,当前区域管理员的邮箱地址:但地址中不能使用@符号一般用 . 替换,例如:linux.gudaoyufu.com
    3,(主从服务器协调属性的定义以及否定的答案的统一的TTL)

    SOA的格式:

    $TTL 1D
    @       IN      SOA     ns1.yufu.com. amin.yufu.com (
                            2018051501   #序列号
                            1H                       #刷新时间
                            5M                       #重试时间
                            7D                       #过期时间
                            1D )             #定答案的TTL值
    

    NS语法:
    name:当前区域的名字 (可省略)
    value:当前区域的某DNS服务器的名字 eg:ns.yufu.com.(一个区域可以有多个NS记录)
    eg:

            IN      NS     ns1.yufu.com
            IN  NS     ns2.yufu.com
    

    A记录语法:
    name: 某主机的FQDN,例如:www.gudaoyufu.com.
    value: 主机名对应的IP 地址

    eg: 指定两台dns服务器的IP地址

    ns1     IN      A       192.168.214.128
    ns2     IN      A       192.168.214.187
    

    eg:指定www.yufu.com的IP地址

    www.yufu.com.   IN      A       192.168.214.135
    yufu.com.       IN      A       192.168.214.135
    

    MX语法:
    name: 当前区域的名字
    value: 当前区域的某邮件服务器(smtp服务器)的主机名 , 一个区域内,MX记录可有多个;
    eg:

    mx1     IN      A       192.168.214.189
    mx2     IN      A       192.168.214.190
    

    CNAME语法:
    CNAME:
    name : 别名的FQDN
    value: 真正名字的FQDN
    eg:

    web.gudaoyufu.com.     IN    CNAME  www.gudaoyufu.com
    

    PTR反向解析语法:
    name : IP,有特定格式,把ip地址反过来写;例如 1.2.3.4 要写作 4.3.2.1
    而且有特定后缀:in-addr.arpa;完整写法为 4.3.2.1.in-addr.arpa

    DNS服务程序与主要文件

    DNS的主服务程序叫BIND,安装即可,BIND服务的名称叫named,通过named进行服务的启动。

    安装BIND

    yum install bind -y
    

    启动

     systemctl start named
    

    查看端口

    [root@localhost ~]# ss -tnl
    State       Recv-Q Send-Q Local Address:Port        Peer Address:Port
    LISTEN      0      10     192.168.214.128:53          *:*
    LISTEN      0      10      127.0.0.1:53               *:*
    

    BIND主要配置文件

    /etc/named.conf  BIND主文件
    设置一般的name参数,指向该服务器使用的域数据库的信息源
    /etc/named.rfc1912.zones  区块设置文件
    /var/named/named.ca
    根域名配置服务器指向文件(不需要改动)
    /var/named/localhost.zone    localhost区正向域名解析文件
    用于将本地IP地址(127.0.0.1)转换为本地回送IP地址(127.0.0.1)
    /var/named/name.local  localhost区反向域名解析文件
    用于将localhost名字转换为本地回送IP地址(127.0.0.1)
    

    DNS配置实验

    配置一个DNS服务器,提供web地址解析,其他主机指向该服务器获得解析到的地址访问web服务,设置web服务的域名为www.yufu.com

    配置DNS
    编辑/etc/named.conf
    named.conf文件中内容注释使用//或/注释内容/
    每个段落后要以 ;结尾

    options {
    //      listen-on port 53 { 127.0.0.1; };     //可以不设置,代表全部接受
            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     { localhost; };   //可以不设置,代表全部接受
            allow-query     { any; };
                    recursion yes;                                  //将自己视为客户端的一种查询模式
    

    修改区域文件/etc/named.rfc.1912.zones添加区域解析库文件信息
    添加正向解析

    zone "yufu.com" IN {              #正向解析域名
            type master;                      #指明是DNS主区域
            file "gudaoyufu.com.zone";      #指定域名解析的区域配置文件名
    };
    

    添加反向解析

    zone "214.168.192.in-addr.arpa" IN {
            type master;
            file "192.168.214.128.zone";
    };
    

    编写正向解析库文件
    vim /var/named/gudaoyufu.com.zone

    $TTL 1D
    @       IN      SOA     ns1.yufu.com. amin.yufu.com (
                            2018051501
                            1H
                            5M
                            7D
                            1D )
    
    
            IN      NS      ns1.yufu.com.
            IN      NS      ns2.yufu.com.
            IN      MX 10   mx1
            IN      MX 20   mx2
    ns1     IN      A       192.168.214.128
    ns2     IN      A       192.168.214.187
    mx1     IN      A       192.168.214.189
    mx2     IN      A       192.168.214.190
    www.yufu.com.   IN      A       192.168.214.135
    yufu.com.       IN      A       192.168.214.135
    

    编写反向解析库文件
    注意:反向解析库文中的区域名称要反写并且加上固定后缀,编写方式见下面配置、
    vim /var/named/192.168.214.128.zone

    $TTL 1D
    $ORIGIN 214.168.192.in-addr.arpa.  ;反向区域的名字
    @       IN      SOA     ns1.yufu.com. admin.yufu.com. (
                            2018051501      #序列号
                            1H              #刷新时间
                            5M              #重试时间
                            7D              #过期时间
                            1D )            #否定答案时间
            IN      NS      ns1.yufu.com.   #定义ns1的dns的主机名
            IN      NS      ns2.yufu.com.   #定义ns2的dns的主机名
    128     IN      PTR     ns1.yufu.com.   #定义ns1主机的地址
    187     IN      PTR     ns2.yufu.com.   #定义ns2主机的地址
    189     IN      PTR     mx1.yufu.com.   #定义邮件服务mx1的地址
    190     IN      PTR     mx2.yufu.com.   #定义邮件服务mx2的地址
    135     IN      PTR     www.yufu.com.   #定义www.yufu.com的主机反向解析
    135     IN      PTR     yufu.com.       #定义yufu.com反向解析
    
    #反向解析配置文件
    #PTR:反向解析标识
    #记录的地址只写地址的最后一段的相对路径,因为在$ORIGIN 214.168.192.in-addr.arpa.
    #中会自动补全地址
    #反向解析中,除了NS定义dns主机服务外,其他记录mx,A等记录都用PTR
    

    DNS测试工具dig

    DNS服务配置好以后在本机使用工具测试配置是否正确,这里介绍一下查询工具dig
    Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具。
    Dig的源码是ISC BIND大包的一部分,但是大多编译和安装Bind的文档都不把它包括在内,但是在linux系统下,它的包名称叫bind-tools。yum安装即可

    使用选项:

    @<服务器地址>:指定进行域名解析的域名服务器;
    -b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
    -f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
    -P:指定域名服务器所使用端口号;
    -t<类型>:指定要查询的DNS数据类型;
    -x<IP地址>:执行逆向域名查询;
    -4:使用IPv4;
    -6:使用IPv6;
    -h:显示指令帮助信息。
    

    参数:

    主机:指定要查询域名主机;
    查询类型:指定DNS查询的类型;
    查询类:指定查询DNS的class;
    查询选项:指定查询选项。
    

    本地测试:通过本机查询www.yufu.com 的ip地址

    [root@localhost ~]# dig -t A www.yufu.com @192.168.214.128
    
    ;www.yufu.com.                  IN      A
    
    ;; ANSWER SECTION:
    www.yufu.com.           86400   IN      A       192.168.214.135
    
    ;; AUTHORITY SECTION:
    yufu.com.               86400   IN      NS      ns1.yufu.com.
    yufu.com.               86400   IN      NS      ns2.yufu.com.
    
    ;; ADDITIONAL SECTION:
    ns1.yufu.com.           86400   IN      A       192.168.214.128
    ns2.yufu.com.           86400   IN      A       192.168.214.187
    

    本地测试:通过本机查询192.168.214.128.135主机的域名

    [root@localhost ~]# dig -x 192.168.214.135 @192.168.214.128
    
    
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
    
    
    ;; QUESTION SECTION:
    ;135.214.168.192.in-addr.arpa.  IN      PTR
    
    ;; ANSWER SECTION:
    135.214.168.192.in-addr.arpa. 86400 IN  PTR     www.yufu.com.
    135.214.168.192.in-addr.arpa. 86400 IN  PTR     yufu.com.
    
    ;; AUTHORITY SECTION:
    214.168.192.in-addr.arpa. 86400 IN      NS      ns2.yufu.com.
    214.168.192.in-addr.arpa. 86400 IN      NS      ns1.yufu.com.
    
    ;; ADDITIONAL SECTION:
    ns1.yufu.com.           86400   IN      A       192.168.214.128
    ns2.yufu.com.           86400   IN      A       192.168.214.187
    

    Client服务测试

    部署好web服务(这里略过)
    客户端设置

    echo "nameserver 192.168.214.128" > /etc/resolv.conf

    [root@yufu ~]# cat /etc/resolv.conf
    nameserver 192.168.214.128
    

    测试访问

    [root@yufu ~]# curl http://www.yufu.com/index.html
    <html>
    <title>Welcome to nginx!</title>
    Welcome to nginx!
    this is test page
    </html>
    [root@yufu ~]# curl http://yufu.com/index.html
    <html>
    <title>Welcome to nginx!</title>
    Welcome to nginx!
    this is test page
    </html>
    
  • 相关阅读:
    tp5.1批量删除商品
    tp5.1 无限极分类前台展示
    jquery实现商品sku多属性选择(商品详情页)
    简单的权限管理php
    js的常用场景效果
    jquery 常用选择器基础语法学习
    js 注意事项使用误区
    js (单个的)点击式下拉菜单
    React中setState学习总结
    JavaScript面试核心考点(精华)
  • 原文地址:https://www.cnblogs.com/anay/p/9095682.html
Copyright © 2011-2022 走看看