BIND

作者: dreamscd | 来源:发表于2019-06-04 16:51 被阅读0次

DNS

Domain Name System

什么是域名:

    是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,作用是帮助人类记忆主机,
如果都使用ip人类是无法记忆的
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称

由来

    计算机之间的网络通信是使用ip来标记主机的
    当只有几台主机一起联网时,可以使用ip地址来进行访问
    当主机数量到达几十上百时,人们无法记忆众多的ip,于是出现了hosts文件
        windows     X:\Windows\System32\drivers\etc\hosts
        linux       /etc/hosts
        格式:
        127.0.0.1       localhost
        ::1             localhost
    hosts文件是在一个文件中记录主机域名和对应ip条目来实现域名到ip的转换
    但hosts文件是每个主机各自的维护的,无法做到实时更新、更改,当网络大爆发时,
    一天接入几百台上千台主机时,根本无法这项工作
    当网络大爆发时,hosts已经无法进行维护,IANA就在互联网上提供了服务器来专门解决域名到ip映射,
    这就是DNS服务器
    当前互联网DNS系统:
        互联网上的主机不计其数,如果只靠IANA来完成域名解析的话,维护的工作太大,而且延时问题,等等
        最后他们设计一个套巧妙的解决方案: 这就是一种 倒树状结构 方式来实际域名解析
        根                               .
        顶级域名(TLD)       .com.     .net.   .org.  [...]
        注册的域名       taobao.com.      baidu.com.     apache.org [...]
    根:
        全球有 13台IPv4根 + 25台IPv6根 这是写死的
            a.root-servers.net. 518400  IN  A   198.41.0.4
        这些根服务器并不负责具体域名的解析,只是记录了tld顶级域名服务器的IP地址,
        tld服务器中记录了例如 taobao.com.这个域 的对应dns服务器IP地址,如此一级
        一级传递直到找到目标的解析结果

        要注册域名需在IANA的外派机构或代理商处申请,付费,他会在.com等顶级域名dns服务器中添加相应的解析条目。

DNS服务器的分类:

(1) 主DNS服务器
    负责一个或者多个域的直接解析的dns服务器,可配置更改
(2) 从DNS服务器
    和主一样,负责一个或者多个域的直接解析的dns服务器,
    但不可直接配置更改,resource recode(资源条目)都是从主DNS服务同步而来
(3) 缓存DNS服务器
    不直接负责域的解析,而是接收到客户端请求后,负责帮客户端去递归回请求结果
    例如: 电信的61.139.2.69
(4) 转发DNS服务器
    a) 无条件转发:转发所有针对非本机负责解析的区域的请求;
    b) 条件转发:仅转发对特定区域的请求(即转发域);

DNS查询的类型:

(1)递归查询
    一次请求,取到请求结果
(2)迭代查询
    重复请求,最后得到结果
如我们将一个www.abc.com的dns请求发给--->营运商提供的dns服务器A,
        {
            营运商的dns服务器上如果没有缓存结果,
            A--->根,根返回一个tld服务器的地址,
            A--->tld服务器,tld服务器返回一个abc.com.的dns服务器地址
            A--->abc.com.的dns服务器,abc.com.的dns服务器返回www.abc.com的地址
        }
营运商的dns服务器A将结果返回给---->我们
在这一次查询中,
我们是递归(发一个请求,就返回了结果)
而营运商的dns服务器则是迭代(多次请求,最后取得结果)

DNS的解析分类:

正向解析:
    域名--->IP
反向解析:
    IP---->域名

DNS的资源记录:

name    [TTL]   IN      TYPE    record-specific-data
@: 表示当前域
SOA: (Start of Authority)叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器
    @   IN  SOA     ns.abc.com.  admin.abc.dom. ( ;DNS记录文件所在的主机位置,管理员联系邮箱
        1            ; serial number 
        3600         ; refresh   [1h] 
        600          ; retry     [10m] 
        86400        ; expire    [1d] 
        3600 )       ; min TTL   [1h]
NS: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录
    @   IN  NS      ns.abc.com.
MX: 建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根据邮箱服务商提供的MX记录填写此记录
    @   IN  MX      mail.abc.com.
A: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录
    ns      IN      A       192.168.1.253
    mail    IN      A       192.168.1.252
    www     IN      A       192.168.1.254
CNAME: 如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录。这个域名一般是主机服务商提供的一个域名
    ftp     IN  CNAME   www
AAAA: 将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录

DNS的实现:

bind: Berkeley Internet Name Domain
由 isc (Internet Systems Consortium) https://www.isc.org/ 维护的开源软件

bind的二进制文件
    named - Internet domain name server
    named-checkconf - named configuration file syntax checking tool
    named-checkzone - checks the syntax and integrity of a zone file.
        usage: named-checkzone zonename resourcefilename
    rndc - name server control utility
        是一个bind的远程管理工具,但一般都只是本地运行
    rndc-confgen
        rndc管理工具的key生成工具
主配置文件:
    /etc/named.conf
        named.conf - configuration file for named
    /etc/named.rfc1912.zones
        所有管理域的定义文件,是named.conf的补充
    /etc/rndc.conf
============================================================================================
        named.conf说明:
            acl caiwu {
                192.168.1.1;
                192.168.2.0/24;
            };
            options{
                    listen-on port 53 { 127.0.0.1; };服务绑定的ip和端口
                    directory       "/var/named";工作目录
                    allow-query     { localhost; };为谁提供查询
                    recursion yes;是否为客户端迭归
                    allow-transfer { address_match_element; ... };谁可以作为从服务器传送域配置
                    dnssec-enable no;       关于dns的安全,关闭
                    dnssec-validation no;   关于dns的安全,关闭
            }

        named.rfc1912.zone中的域定义:
            zone "localhost" IN {
                    type master;
                    file "named.localhost";
                    allow-update { none; };
            };
        /var/named/named.localhost,资源记录文件定义:
            $TTL 1D                                         ; 统一定义缓存时长      
            @       IN SOA  @ rname.invalid. (
                                                    0       ; serial    版本号
                                                    1D      ; refresh   从服务器刷新时长
                                                    1H      ; retry     从服务器重试时长
                                                    1W      ; expire    从服务器失效时长
                                                    3H )    ; minimum   否定答案缓存时长
                    NS      @
                    A       127.0.0.1
                    AAAA    ::1

        serial  标记当前资源记录的修改,每次修改手动加1
        refresh 从服务器间隔多长时间到主服务器同步
        retry   从服务器如果同步失败,多长时间重试
        expire  从服务器一直联系不到主服务器,多长时间关闭自己的dns服务
        minimum 如果一个查询,没有记录,给出否定答案,对方缓存否定答案的时间(也就是说,对方这个时间内不会再进行这个查询)

安装

yum install bind -y

配置 (注意 防火墙)

a) /etc/named.conf
    1. 监听端口、ip
        listen-on port 53 { ip; }; 如果监听所有ip就注释这一行
    2. 工作路径
        directory   "/var/named"; 资源记录等文件的存放位置
    3. 允许谁在本服务器查询
        allow-query { ; }; localhost,any,acl...
    4. 如果不是本服务器负责的域,是否到根上去递归 
        recursion yes;
b) /etc/named.rfc1912.zones
    1. 添加一个域
    例:
        zone "abc.com"  IN {
            type master;
            file "abc.com.zone";
            allow-update { none; };
            allow-transfer { 从服务器ip; }; 如果有从服务器,这时要允许其传送主服务器的资源记录
            ;如果是从服务器
            type slave;
            masters [port] { ip [port]; }; 配置主服务器的ip
            masterfile-format text; 说明类型为txet,否则从服务器收到的文件为data,不是txt文件
            notify yes; 版本更新后发通知
            also-notify { 10.36.17.101;}; 从服务器ip
            file "slaves/abc.com.zone.slave"; 配置从服务器的配置文件路径,需指定到slave目录下
                                            ; named才有写权限,注:不用提供资源记录文件
        };
    注解:
        type ( master | slave | hint | forward );
            master: 主服务器
            slave:  从服务器
            hint:   根
            forward:转发服务器
        file "filename;"
            定义当前域的资源记录文件,相对路径(相对于配置文件中的directory)
        allow-update { none; }; 允许谁动态更新资源记录文件,none:只能手动更新
c) /var/named目录下创建资源记录文件
        如果是rpm安装
            cp named.localhost abc.com.zone ;修改之
        ===========================================
        $TTL 1D
        @       IN  SOA     ns.abc.com admin.abc.com. (
                                                        1   ;serial
                                                        1D  ;refresh
                                                        1H  ;retry
                                                        1W  ;expire
                                                        3H );minimum
                NS  ns.abc.com
                NS  ns1.abc.com; slave
        ns      A   10.36.17.100
        ns1     A   10.36.17.101; slave
        www     A   10.36.19.102
d) 修改abc.com.zone 的属组为named; named是named用户运行的,没有权限读取这个文件
        chown :named abc.com.zone 
e) 重载配置文件
    rndc reload
    测试
    dig -t A www.abc.com @ 10.36.17.100
        ;; ANSWER SECTION:
        www.abc.com.        86400   IN  A   10.36.19.102

反向解析:

和正向一样,可参考 
/etc/named.rfc1912.zone
zone "36.10.in-addr.arpa" IN {
    type master;
    file "10.36.in-addr.zone";
    allow-update { none; };
}; 
/etc/named/10.36.in-addr.zone
$TTL 1D
@       IN SOA  ns.abc.com. admin.abc.com.  (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.abc.com.
        A       10.36.17.100
100.17  PTR     ns.abc.com.                                                                                                                               
101.17  PTR     ns1.abc.com.
102.19  PTR     www.abc.com.

注意:
    格式:如解析10.36.0.0 这个区域,zone定义中要写作:
        36.10.in-addr.arpa; 反向写

DNS 工具

rndc:

    是bind的远程管理工具,named服务开启后,会开启一个tcp/953端口,默认只接受本地管理,也应该本地管理
    rndc [-b address] [-s server] [-p port] [-V] command
    常用命令(command)
    reload:             重载配置文件
    status:             查看named状态
    flush:              清空所有的服务器缓存  
    retransfer zone:    传送某一区域,并不检查版本号
    notify zone:        重新对某一区域传送发通知

host:

    host hostname [server]
    eg.
        host www.abc.com 10.36.17.101

nslookup:

    交互式的工具
    常用
    >server 10.36.17.101 ;设置dns服务器
    >set type=ns         ;设置查询类型
    >www.baidu.com       ;要查询的主机

dig:

    dig [q-type] host [@server] [d-opt]
        q-type: is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a] (Use ixfr=version for type ixfr)
        d-opt:  
            +noall +answer      不显示多余的信息,只显示answer结果
            +[no]trace          跟踪从根开始的查询过程
        -x addr 逆向查询(将地址映射到名称)
            dig -x 10.36.19.102 @10.36.17.100
        dig ns baidu.com @10.36.17.101 +noall +answer

编译安装:

准备用户

/usr/sbin/groupadd -g 25 -r named 
/usr/sbin/useradd  -u 25 -r -N -M -g named -s /bin/false -d /var/named -c Named named 

安装依赖包,下载,安装

yum install openssl-devel libcap-devel
wget https://downloads.isc.org/isc/bind9/9.14.2/bind-9.14.2.tar.gz
tar -xf bind-9.14.2.tar.gz
./configure --prefix=PREFIX --sysconfdir=DIR --localstatedir=DIR
./configure --prefix=/usr/local/bind-9.14.2 --sysconfdir=/etc/named --localstatedir=/var
make && make install

配置

cd /usr/local/
ln -s bind-9.14.2/ ./named
vim /etc/profile.d/named.sh
    export PATH=/usr/local/named/sbin:/usr/local/named/bin:$PATH
. /etc/profile.d/named.sh

cd /etc/named/
rndc-confgen > rndc.conf
vim named.conf
    :r! cat rndc.conf
    删除rndc部分,去除named部分的注释
    再添加
    options{
            listen-on port 53 { 10.36.17.101; };
            directory "/var/named";
            allow-query { any; };
            recursion yes;
    };


    zone "." IN {
            type hint;
            file "named.ca";
    };
    zone "localhost" IN {
            type master;
            file "named.localhost";
            allow-update { none; };
    };

    zone "localhost.localdomain" IN {
            type master;
            file "named.localhost";
            allow-update { none; };
    };

/var/named/named.localhost
    $TTL 1D                                                                                                                                                   
    @       IN SOA  @ rname.invalid. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      @
            A       127.0.0.1
            AAAA    ::1

dig +bufsize=1200 +norec @a.root-servers.net > /var/named/named.ca

设置权限

自建的文件都改
    属组named
    权限640
    *.key要为644
    managed-keys.*文件要使用 named:named 
chmod 640 /etc/named/* /var/named/*
chmod 644 /etc/named/*.key /var/named/*.key
chown :named /etc/named/* /var/named/*

启动服务(注意防火墙)

    named -4u named
          -4: 只使用ipv4
          -u: 使用的用户
     启动后,就可使用rndc来控制named

相关:
Administrator Reference Manual
ftp://ftp.isc.org/isc/bind9/9.14.2/ ;版本相关下载
ftp://ftp.isc.org/isc/bind9/9.14.2/doc/arm/ ;管理员参考手册

相关文章

网友评论

      本文标题:BIND

      本文链接:https://www.haomeiwen.com/subject/fqrrxctx.html