码迷,mamicode.com
首页 > 其他好文 > 详细

DNS服务器 - Bind

时间:2020-05-15 15:28:11      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:同步数据   any   ons   一段   架构   客户机   ns3   集中   internet   

简介

DNS的出现及演变

    网络出现的早期是使用 IP 地址进行通信. 那时就几台主机通信. 但是随着接入网络主机的增多.这种数字表示的地址非常不便于记忆, UNIX 上就出现了建立一个叫做  hosts 的文件(Linux 和 Windows 也继承保留了这个文件). 这个文件中记录着主机名称和 IP 地址的对应表. 这样只要输入主机名,系统就会去加载Hosts 文件并查找对应关系. 找到对应的 IP ,就可以访问这个 IP 的主机了.

   但是后来主机的急速增加.无法保证所有人都能拿到统一的最新的 Hosts 文件,就出现了文件服务器上集中存放 Hosts 文件,以提供下载使用. 互联网规模进一步扩大,这种方式也不堪重负. 而且把所有地址解析记录形成的文件都同步到所有客户机似乎也不是一个好办法,这个时候 DNS 系统出现了,随着 解析规模继续扩大, DNS系统也在不断的演化. 直到现今的多层架构体系.

DNS概述

    DNS (Domain Name System 域名系统) , 因特网上作为域名和 IP 地址相互映射的一个分布式数据库. 能够使用户更方便的访问互联网. 而不用去记住能够被访问机器直接读取的 IP 数串,通过主机名,最终得到该主机名对应的 IP 地址的过程叫做域名解析(或主机名解析). DNS 协议运行在 UDP 协议之上. 使用端口号 53.

    DNS 的分布式数据库是以域名为索引的, 每个域名实际上就是一棵很大的的逆向树路径. 这棵逆向树称为域名空间(domain name space).树最大深度不得超过127层.树中每个节点都有一个可以长达63个字符的文本标号.

技术图片

 

 

DNS域名解析过程

  首先, 客户端现在本地缓存中查找有没有域名缓存,如果没有, 客户端发出 DNS 请求翻译 IP 地址或主机名. DNS 服务器收到客户端请求后:

    1) 检查 DNS 服务器的缓存, 若查到请求的地址或者名字, 即像客户端发出应答信息.

    2) 若没有查找,则在数据库中查找, 若查到请求的地址或者名字, 即像客户机发出应答信息.

    3) 若没有查到, 则将请求发送给根域 DNS 服务器,并依序从根域查找顶级域名, 由顶级查找二级域, 二级域查找三级, 直至找到要解析的地址或者名字, 即像客户机所在网络的 DNS 服务器发出应答信息, DNS 服务器收到应答后先在缓存中存储,然后将解析结果发给客户机.

    4) 若没有找到,则返回错误信息.

DNS的分类

  主 DNS 服务器: 就是一台存储着原始资料的 DNS 服务器.

  从 DNS 服务器: 使用自动更新方式从主 DNS 服务器同步数据的 DNS 服务器.也成辅助 DNS 服务器.

  缓存服务器: 不负责本地解析, 返佣递归方式转发客户机查询请求. 并返回结果给客户机的 DNS 服务器, 同事缓存查询回来的结果, 也叫递归服务器.

  转发器: 这台 DNS 服务器发现非本机负责查询请求时, 不在想根域发起请求, 而是直接转发给指定的一台或者多台服务器,自身并不缓存查询结果.

DNS中记录类型

SOA
可以理解为一段为自己dns做备注说明的文本,一般与ns一致
比如:dns.laonanhai.com sa.laonanhai.com
示例:
a.shifen.com.        579    IN    SOA    dns.baidu.com. sa.baidu.com.  (     
                      1408010001 ; serial number     
                      5 ; refresh 5s     
                      5 ; retry 5s     
                      86400 ; expire 1d     
                      3600 ;min TTL 1h     
)
NS
域的授权名称服务器

NSDName:DNS的FQDN
 baidu.com.        64899    IN    NS    ns2.baidu.com.     
baidu.com.        64899    IN    NS    ns4.baidu.com.     
baidu.com.        64899    IN    NS    dns.baidu.com.     
baidu.com.        64899    IN    NS    ns7.baidu.com.     
baidu.com.        64899    IN    NS    ns3.baidu.com.
MX
域的邮件交换器,要跟着一个优先级值,越小越高
baidu.com.        7200    IN    MX    20 jpmx.baidu.com.
baidu.com.        7200    IN    MX    20 mx50.baidu.com.
baidu.com.        7200    IN    MX    10 mx.n.shifen.com.
baidu.com.        7200    IN    MX    20 mx1.baidu.com.
A
IPV4主机地址
AAAA
IPV6主机地址
PTR
解析IP的指针,反向记录
CNAME
权威(正式)名称,定义别名记录
www.baidu.com.        1154    IN    CNAME    www.a.shifen.com.

DNS命名规范

  1. 26个英文字母.
  2. 0-9 是个数字.
  3. "-" (英文中的连接符号).
  4. 最多63字节长度.

DIG,NSLOOKUP,HOST的介绍

HOST

  host 命令也是大多系统,软件库调用的解析命令.

[root@test1 ~]# host baidu.com
baidu.com has address 39.156.69.79
baidu.com has address 220.181.38.148
baidu.com mail is handled by 20 jpmx.baidu.com.
baidu.com mail is handled by 20 mx50.baidu.com.
baidu.com mail is handled by 10 mx.maillb.baidu.com.
baidu.com mail is handled by 20 mx1.baidu.com.
baidu.com mail is handled by 15 mx.n.shifen.com.

NSLOOKUP

  nslookup 能够反映出是哪个 dnsserver 返回的结果.

[root@test1 ~]# nslookup baidu.com
Server:		172.16.0.2
Address:	172.16.0.2#53

Non-authoritative answer:
Name:	baidu.com
Address: 39.156.69.79
Name:	baidu.com
Address: 220.181.38.148

DIG

  dig 返回整个解析的过程详细路径.类似 traceroute

[root@test1 ~]# dig baidu.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.2 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1525
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 512
;; QUESTION SECTION:
;baidu.com.			IN	A

;; ANSWER SECTION:
baidu.com.		5	IN	A	220.181.38.148
baidu.com.		5	IN	A	39.156.69.79

;; Query time: 26 msec
;; SERVER: 172.16.0.2#53(172.16.0.2)
;; WHEN: 五 5月 15 10:32:42 CST 2020
;; MSG SIZE  rcvd: 70

bind9

  Bind 是一款开放源码的 DNS 服务器软件, Bind 由美国加州大学 Berkeley 分校开发和维护的, 全名为 Berkeley Internet Name Domain 它是目前世界上使用最为广泛的 DNS.

单机部署 bind9

1. 软件安装

yum install bind-utils bind bind-devel bind-chroot

2. 修改配置文件

[root@test1 ~]# cat /etc/named.conf 
options {
  version "1.1.1";                                                 #版本
  listen-on port 53 { 172.16.0.111; };                           #监听53端口所有地址
  directory "/var/named/chroot/etc/";                              #存放A记录
  pid-file "/run/named/named.pid";                                 #pid文件

  allow-query { any; };                                            #允许所有IP像我发起请求
  Dump-file "/var/named/chroot/var/log/binddump.db";  
  Statistics-file "/var/named/chroot/var/log/named_stats";         #状态页
  zone-statistics yes;                                             #启用zone状态
  memstatistics-file "log/mem_stats";                              #内存状态
  empty-zones-enable no;                                           #是不是支持空zone
  forwarders {114.114.114.114;8.8.8.8; };                          #转发dns
};

key "rndc-key" {                                                   #dns日常管理
        algorithm hmac-md5;
        secret "Eqw4hClGExUWeDkKBX/pBg==";
};

controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
 };

logging {                                                               #错误日志
  channel warning {  
    file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;  #保留十份日志每>份日志10m
    severity warning;                                                   #日志级别
    print-category yes;  
    print-severity yes;
    print-time yes;
  };
  channel general_dns {                                                 #访问日志
    file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    warning;
  };
  category queries {
    general_dns;
  };
};

include "/var/named/chroot/etc/view.conf";

2. 编辑秘钥文件

[root@test1 ~]# cat /etc/rndc.key 
key "rndc-key" {
        algorithm hmac-md5;
        secret "Eqw4hClGExUWeDkKBX/pBg==";
};

# 生成秘钥文件命令
# rndc-confgen -r /dev/urandom -a

3. 配置 rndc 文件

    rndc(Remote Name Domain Controllerr)是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭、重载、刷新缓存、增加删除zone等操作。  
    使用rndc可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效。

[root@test1 ~]# cat /etc/rndc.conf 
key "rndc-key" {
        algorithm hmac-md5;
        secret "Eqw4hClGExUWeDkKBX/pBg==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};

4. 配置 view  视图

[root@test1 ~]# cat /var/named/chroot/etc/view.conf 
view "View" {
  zone "devops.com" {
        type    master;
        file    "devops.com.zone";
        allow-transfer {
                172.16.0.111;       
        };
        notify  yes;
        also-notify {
                172.16.0.111;
        };
  };
};

5. 配置 zone 解析

[root@test1 ~]# cat /var/named/chroot/etc/devops.com.zone 
$ORIGIN .
$TTL 3600       ; 1 hour
devops.com                  IN SOA  op.devops.com. dns.devops.com. (
                                2000       ; serial
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes)
                                86400      ; expire (1 day)
                                3600       ; minimum (1 hour)
                                )
                        NS      op.devops.com.
$ORIGIN devops.com.
www                 A       1.2.3.4
op                  A       1.2.3.4

6. 修改目录权限及启动

chown -R named.named /run/named/
chown -R named.named /var/named/
systemctl start named

  

 

DNS服务器 - Bind

标签:同步数据   any   ons   一段   架构   客户机   ns3   集中   internet   

原文地址:https://www.cnblogs.com/yanshicheng/p/12890515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!