zoukankan      html  css  js  c++  java
  • Linux DNS原理简介及配置

    Linux DNS原理简介及配置

    1. DNS简介
    2. DNS原理
    3. 域名解析的过程
    4. 资源记录
    5. DNS BIND安装配置

    一、简介

    一般来讲域名比IP地址更加的有含义、也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了。

    域名:www.baidu.com(也叫做FQDN:Full Qualified Domain Name, 完全限定域名,同时带有主机名和域名的名称)

    通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。

    TLD(top level domain)

    组织域:.com, .org, .net, .cc

    国家域: .cn, .tw, .hk, .iq, .ir, .jp

    反向域: IP-->FQDN 将IP地址转换成主机名,早期只能正向解析,后来引入了一个机制。指针;但是从IP转换成FQDN是另外一套数据库。

    DNS服务协议采用类似目录树的层次结构记录域名与IP地址的映射对应关系,形成一个分布式的数据库系统,上级仅知道其直接下级,下级只知道根的位置。结构模型:

        DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析反向解析

    正向解析:根据主机名(域名)查找对应的IP地址。

    反向解析:根据IP地址查找对应的主机名(域名)。

     

    二、原理

    Linux下nsswitch(network service switch)是一个通用框架,与各种类型存储交互的公共实现,实现名称解析服务。其中有库文件,libnss_files.so库文件就是实现查找文件时, 其应该调用的文件。其展现的就是一个配置文件,/etc/nssitch.conf,此配置文件中

    这个files就是通过libnss_files来查找/etc/hosts

    hosts可通过两种方式来查找:     files    dns

    file: /etc/hosts配置文件

    dns: DNS服务器

    系统中stub resolver:名称解析器,根据配置文件来查找对应的ip地址。

    ping www.itodo.com此过程就是先查找本地/etc/hosts文件,如果没有再查找dns服务器。

    hosts格式:

        IPADDR FQDN    Ailases

        192.168.100.1    www.ss.com     www

    三、域名解析的过程

        当应用过程需要将一个主机域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回。

        

    dns查询:

        递归查询:主机向本地域名服务器的查询一般都是采用递归查询,只发出一次请求。

        迭代查询:本地域名服务器向根域名服务器的查询的迭代查询,发出多次请求。

    以上简单理解来说,主机1访问主机2的域名a.zz.com,首先向本机域名服务器发起请求主机2的ip,本机没有,向根域名服务器查询,根返回消息说顶级域名服务器那里知道,本机又向顶级域名服务器查询,顶级域名服务器又返回消息说二级域名服务器那里有答案,本机又向二级域名查询,最后经过本机域名服务器的缓存之后,返回主机2的域名对应的ip地址。

    四、资源记录

    数据库中的每一个条目称作一个资源记录(Resource Record,RR)

    资源记录的格式:

    $TTL 600;

    NAME            [TTL]            IN            RRT            VALUE

    www.ss.com                        IN            A            1.1.1.1

    1.1.1.1                        IN            PTR            www.ss.com

    资源记录类型(RRT):

    SOA(start of authority)

        ZONE_NAME    TTL        IN    SOA        FQDN        ADMINISTRATOR_MAILBOX(

                                serial number 版本号

                                refresh    刷新时间

                                retry    重试时间

                                expire    过期时间

                                na ttl )    否定答案的ttl

    时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒

    邮箱格式:admin@ss.com -写为-> admin.ss.com

    @:也就是ZONE_NAME

    NS(Name Server): ZONE_NAME --> FQDN

        magedu.com.        600        IN        NS        ns1.magedu.com.

        ns1.magedu.com.    600        IN        A        1.1.1.2

        

    MX(Mail eXchanger): ZONE_NAME --> FQDN

        ZONE NAME    TTL        IN        MX pri        VALUE

        优先级:0-99,数字越小级别越高

            magedu.com.    600        IN        MX    10    mail.magedu.com.

            mail.magedu.com.    600        IN    A    1.1.1.3

    A(address):    FQDN-->IPv4    

    AAAA:FQDN-->IPv6

    PTR(pointer):IP-->FQDN

    CNAME(Canonical NAME): FQDN-->FQDN

        www2.magedu.com.        IN        CNAME        www.magedu.com.

    TXT:文本字符串

    DNS区域:

    正向区域文件

        magedu.com.        IN        SOA    

    www.maged.com.   IN    A    192.168.0.1

    简写为:

    www          IN    A    192.168.0.1

    反向区域文件

    0.168.192.in-addr.arpa.       IN    SOA    

    1.0.168.192.in-addr.arpa.      IN    PTR        www.magedu.com.

    简写为:

    1       IN       PTR       www.magedu.com.

    区域传送

        区域传送的类型:

        完全区域传送: axfr

        增量区域传送:ixfr

        

    区域类型:

        主区域:master

        从区域:slave

        提示区域:hint

        转发区域:forward

        

    五、DNS BIND安装配置

    DNS所用的最常用软件为BIND

    bind:

        

        /etc/named.conf

            BIND进程的工作属性

            区域的定义

        /etc/rndc.key

            rndc: Remote Name Domain Controller

            密钥文件

            配置信息:/etc/rndc.conf    

        /var/named/

            区域数据文件

    bind-chroot:为了提高系统安全新,把系统中的一个子目录作为bind运行时的目录。

        默认:named

            用户:named

            组:named        

        /var/named/chroot/

            etc/named.conf

            etc/rdnc.key

            sbin/named

            var/named/

    安装配置:

    1.安装bind,查看是否安装成功

     yum -y install bind bind-utils bind-chroot

     rpm –qa | grep "^bind"

    2.修改/etc/named.conf

     listen-on port 53 { any; };

    3.修改/etc/named.rfc1912.zones

    4.添加所需要的zone文件

     在/var/named目录下添加正向解析文件named.yan和反向解析文件named.222

    5.检查语法

     named-checkconf

     named-checkzone "区域名" 区域文件路径

    6.修改/etc/resolv,并启动服务。

    systemctl start named

    7.nslookup测试,或者使用dig命令。

     正向解析测试:

     反向解析测试:

    至此简单的配置完毕。

    少年不识愁滋味,爱上层楼,爱上层楼。
  • 相关阅读:
    java编程规范
    Servlet生命周期
    BBS
    Hibernate主键自增策略
    MyBatis举例以及连接数据库过程
    myBatis框架的配置部分
    持续集成
    2017-02-23 .NET Core Tools转向使用MSBuild项目格式
    记录表TABLE中 INDEX BY BINARY_INTEGER 的作用
    什么是 BIND 变量?
  • 原文地址:https://www.cnblogs.com/whych/p/9099015.html
Copyright © 2011-2022 走看看