zoukankan      html  css  js  c++  java
  • BIND_9.16.3(DNS)部署安装测试

    1.简介

    域名系统(英文:Domain Name System,缩写:DNS)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址 即解决的是IP地址和域名的映射问题。

    DNS是多层命名服务器构成的分布式数据库,属于应用层协议,DNS使用TCP和UDP端口53。

    当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符,是Internet的核心功能。

    DNS系统是由各式各样的DNS软件所驱动的,包括:

    • BIND(Berkeley Internet Name Domain),这是应用最广的DNS软件.
    • DJBDNS(Dan J Bernstein's DNS implementation)
    • MaraDNS
    • NSD(Name Server Daemon)
    • PowerDNS

    2.请求方式

    迭代查询:LocalDNS服务器只告诉客户机另外一台DNS服务器的地址,让客户机自己去循环查询结果。

    递归查询:委托给LocalDNS服务器去查询,LocalDNS服务器直接返回结果给客户机,一般DNS解析都是用递归查询的方法。

    3.域名解析过程

    • 先检查浏览器的缓存 看有没有对应解析过的ip
    • 查看本地的hosts文件
    • 向本地指向的dns服务器 发起域名解析请求 看看有没有缓存
    • 没有的话就向根dns服务器发起请求
    • 根服务器回返回给顶级域名服务器的地址
    • 本地服务器去向顶级域名服务器请求
    • 顶级域名解析服务器会返回注册的域名服务器
    • 本地服务器再去向注册的域名服务器发起域名解析请求
    • 返回解析出来的ip
    • 本地域名服务器再返回给客户端

    4.DNS资源记录

    DNS 区域采用资源记录的形式存储信息。每条资源记录均具有一个类型 , 表明其保留的数据类型。 

    • A : 名称至 IPv4 地址 
    • AAAA : 名称至 IPv6 地址 
    • CNAME : 名称至 ”规范名称 “ ( 包含 A/AAAA 记录的另一个名称
    • PTR : IPv4/IPv6 地址至名称 
    • MX : 用于名称的邮件交换器 ( 向何处发送其电子邮件
    • NS :域名的名称服务器 
    • SOA:“授权起始”, DNS 区域的信息 ( 管理信息 )

     SOA详解:

    $ORIGIN .

    $TTL 3600       ; 1 hour

    txt.com                 IN SOA  ns.txt.com. mail.txt.com. (

                                    2          ; serial

                                    28800      ; refresh (8 hours)

                                    3600       ; retry (1 hour)

                                    604800     ; expire (1 week)

                                    1800       ; minimum (30 minutes)

     )

    Serial

    数值Serial代表这个Zone的序列号,作用:Slave DNS判断是否从Master DNS获取新数据,每次Zone文件更新,都需要修改Serial数位. RFC19122.2建议的格式为YYYYMMDDnn其nn为修订号;表示在某年(YYYY)、月(MM)、日(DD)进行了第几次(nn)修改

    Refresh

    数值Refresh设置Slave DNS多长时间与Master DNS进行核对Serial核对,目前bindnotify参数可以设置每次Master DNS更新都会主动通知Slave DNS更新,Refresh参数主要用于notify参数关闭时

    Retry

     数值Retry设置当Slave DNS试图获取Master DNS Serial时,如果Master DNS未响应,多长时间重新进行检查。

    Expire

     数值Expire将决定Slave DNS在没有Master DNS的情况下权威的提供域名解析服务的时间长短。

    Minimum

    8.2版本之前,由于没有独立的STTL令,所以通过SOA最后一个字段来实现,但由于BIND. 8.2后出现了STTL 指令,该部分功能就不再由SOA的最后一个字段来负责,STTL全权负责.SOA的最后一个字段专门负责negative answer  (negative caching)

    5.DNS排错

    它显示来自 DNS 查找的详细信息 , 其中包括为什么查询失败

    • NOERROR : 查询成功 
    • NXDOMAIN : DNS 服务器提示不存在这样的名称 
    • SERVFAIL : DNS 服务器停机或 DNSSEC 响应验证失败 
    • REFUSED : DNS 服务器拒绝回答 ( 也许是出于访问控制原因 )

    6.源码方式安装

     本文章所使用的系统环境为 Centos 7.5 操作系统,安装的是bind-9.16.3版本

    6.1创建非特权用户named

    [root@localhost ~]# cat /etc/group //查看是否存在named组
    [root@localhost ~]# groupadd -g 53 named
    [root@localhost ~]# cat /etc/passwd //查看是否存在named用户
    [root@localhost ~]# useradd -M -s /sbin/nologin -g named named

    6.2安装依赖包

    [root@localhost ~]#  yum -y install libcap libcap-devel libuv libuv-devel openssl-devel

    6.3上传安装包并检查安装包信息

    [root@localhost ~]# ls
    anaconda-ks.cfg   bind-9.16.3.tar.xz  initial-setup-ks.cfg   epel-release-latest-7.noarch.rpm

    [root@localhost ~]# md5sum bind-9.16.3.tar.xz
    2b207d5699d7acb0a2e997b7cd53d9c2 bind-9.16.3.tar.xz

    为了确保BIND将构建dnssec-keymgr,以root用户身份安装python模块:

    [root@localhost ~]# yum -y install python36 python36-devel
    [root@localhost ~]# pip3 install ply -i https://mirrors.aliyun.com/pypi/simple/

    6.4解压安装包

    [root@localhost ~]# tar xf bind-9.16.3.tar.xz

    6.5进入到解压文件中进行配置编译

    [root@localhost ~]# cd bind-9.16.3/

    [root@localhost bind-9.16.3]# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named --localstatedir=/var --with-libtool --disable-chroot --disable-static
    [root@localhost bind-9.16.3]# echo $?
    0
    [root@localhost bind-9.16.3]# make && make install
    [root@localhost bind-9.16.3]# echo $?
    0

    6.6安装完成之后配置rndc和named.conf主配置文件

    [root@localhost ~]# cd /usr/local/bind9/sbin/
    [root@localhost sbin]# ./rndc-confgen > /etc/named/rndc.conf
    [root@localhost ~]# cd /etc/named/
    [root@localhost named]# tail -10 rndc.conf | head -9 | sed -e s/# //g > named.conf
    [root@localhost ~]# vim /etc/named/named.conf
    options {
    directory "/var/named";
    pid-file "/var/named/named.pid";
    dump-file "/var/named/cache_dunmp.db";
    statistics-file "/var/named/named_stats.txt";
    version none;
    hostname none;
    recursion yes;
    allow-query { any; };
    listen-on port 53 { any; };
    querylog yes;
    max-cache-size 0M;
    };
    logging {
    channel query_syslog { syslog local3; severity info; print-time yes; };
    channel query_log {
    file "/var/dnslog/query.log" versions 5 size 500m;
    print-time yes;
    severity info;
    };
    category queries { query_log;};
    channel general_log {
    file "/var/dnslog/general_log" versions 5 size 500m;
    print-time yes;
    print-category yes;
    print-severity yes;
    severity info;
    };
    category default { general_log; };
    category general { general_log; };
    };

    创建域名记录存放的目录并修改权限

    [root@localhost ~]# mkdir -p /var/named
    [root@localhost ~]# chown root:named /var/named/
    [root@localhost ~]# chmod 770 /var/named/

    创建DNS日志存放目录并修改权限

    [root@localhost ~]# mkdir -p /var/dnslog
    [root@localhost ~]# chown root:named /var/dnslog/
    [root@localhost ~]# chmod 770 /var/dnslog/

    修改配置文件的权限

    [root@localhost ~]# chmod 640 /etc/named/*
    [root@localhost ~]# chown root:named /etc/named/*

    使用named用户启动服务并查看是否成功

    [root@localhost ~]# /usr/local/bind9/sbin/named -4u named -c /etc/named/named.conf
    [root@localhost ~]# ps xua |grep bind
    rpc 679 0.0 0.0 69220 1056 ? Ss 13:25 0:00 /sbin/rpcbind -w
    named 59934 0.0 0.8 236140 15212 ? Ssl 16:15 0:00 /usr/local/bind9/sbin/named -4u named -c /etc/named/named.conf
    root 60043 0.0 0.0 112724 972 pts/0 R+ 16:26 0:00 grep --color=auto bind

  • 相关阅读:
    安装DCOS,关于docker异常引发的调查
    搭建DNS服务器-bind
    DNSmasq
    桥接以及Mercury MW54R中继
    docker异常处理
    vmware的双网卡以及Pro的注册码
    ssh免密登录
    系统原生文件MD5值获取
    mysql数据库要按当天、昨天、前七日、近三十天、季度、年查询
    dirname(__FILE__) 介绍
  • 原文地址:https://www.cnblogs.com/linuxMA/p/13259292.html
Copyright © 2011-2022 走看看