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

原文地址:https://www.cnblogs.com/linuxMA/p/13259292.html