DNS and BIND

DNS and BIND

名称解析:把一种代号转换成为另一种代号的功能
是应用程序基于某个搜索键在指定的数据库查询,查询到对应的键以后,对应键被找出来的过程!
passwd —《nsswith》/etc/nsswith.conf

注意:查询的时候用到的是UDP的53,主从复制走的是tcp(但是也用到udp)

DNS: Domain Name Service,协议(C/S, 53/udp, 53/tcp);应用层协议;
BIND:Bekerley Internat Name Domain, ISC (www.isc.org)

TCP: 面向连接的协议;
UDP: User Datagram Protocol,无连接协议

本地名称解析配置文件:hosts

/etc/hosts
%WINDOWS%/system32/drivers/etc/hosts
    1.1.1.1 www.magedu.com
    1.2.2.2 www.apple.com

这个就导致,一个机器要想知道地址会要很大的一个文件!为了解决这个问题,就把这种集中起来做成一个集中的存储!就有了DNS!

DNS域名分类

1、 根域
2、 一级域名:Top Level Domain: tld
com, edu, mil, gov, net, org, int,
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域 .in-addr.arpa

3、二级域名  (magedu)

4、 三级域名   (www、ftp等)
最多127级域名

 ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理

5.DNS域名结构
DNS and BIND

DNS解析

DNS查询类型:
递归查询

 递归查询:只发起一次请求,最终能得到答案

迭代查询

迭代:发起一次请求,不一定得到答案

DNS and BIND

名称服务器:域内负责解析本域内的名称的主机;
       根服务器:13组服务器

解析类型:
       Name –> IP
       IP –> Name

注意:正反向解析是两个不同的名称空间,是两棵不同的解析树;

DNS服务器的类型:

  • 主DNS服务器

  • 辅助DNS服务器

  • 缓存DNS服务器(一般企业里用为了转发)

  • 转发器

两种同步方式push(主服务器向从服务器推送)、pull(从服务器定期从主中拉出数据)

主DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理维护;
从DNS服务器:从主DNS服务器或其它的从DNS服务器那里“复制”(区域传递)一份解析库;
        序列号:解析库的版本号;前提:主服务器解析库内容发生变化,其序列递增;
        刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;
        重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;
        过期时长:从服务器始终联系不到主服务器时,多久多后放弃从服务器角度,停止提供服务;

“通知”机制:主服务器解析库发生变化时,会主动通知从服务器

注意主的能更改 从的只能复制 当备份,改了主 的以后要同步数据库(该版本号)  要不从不能同步

区域传输

区域传输:

完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容

Domain: Fully Qualified Domain Name

正向:FQDN –> IP
反向: IP –> FQDN

负责本地域名的正向和反向解析库:

正向区域
反向区域

DNS解析

一次完整的查询请求经过的流程:

  Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

解析答案:

  • 肯定答案:

  • 否定答案:请求的条目不存在等原因导致无法返回结果

  • 权威答案:查到的最后记录的确有的

  • 非权威答案:别的记录中转发的


资源记录

区域解析库:由众多RR组成:

数据库每一个条叫一个资源记录(Resource Record),资源记录有类型 ,用于表示资源的功能

资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX

  • SOA:Start Of Authority,起始授权

  • NS:Name Server,域名服务器

  • MX:mail eXchanger:邮件交换器

  • A:Address,(FQDN–>IP)

  • PTR: PoiTeR,(IP–>FQDN)

  • AAAA:Address,FQDN–>IPv6

  • CNAME:Canonical Name,正式名称(别名记录)

DNS:FQDN –> IP

资源记录定义的格式:

语法:name [TTL] IN  rr_type  value
注意:
(1) TTL可从全局继承
(2) @可用于引用当前区域的名字
(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

SOA:

name: 当前区域的名字,例如“magedu.com.”;
value: 有多部分组成
    (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
    (2) 录前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com;
    (3) (主从服务协调属性的定义以及否定的答案的统一的TTL)

例如:
    magedu.com.     86400     IN     SOA     ns.magedu.com.(这里是主dns)     nsadmin.magedu.com.     (
                2015042201  ;序列号
                2H          ;刷新时间
                10M            ;重试时间
                1W            ;过期时间
                1D            ;否定答案的TTL值
        )

NS:

name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.;
注意:一个区域可以有多个NS记录;

例如:
magedu.com.        IN         NS      ns1.magedu.com.
magedu.com.        IN         NS      ns2.magedu.com.

注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略;
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录;

MX:

name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名;
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高;

例如:
magedu.com.        IN      MX  10  mx1.magedu.com.
                IN         MX  20 mx2.magedu.com.

注意:
    (1) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录;

A:

name: 某主机的FQDN,例如www.magedu.com.
value: 主机名对应主机的IP地址;

例如:
www.magedu.com.        IN      A     1.1.1.1
www.magedu.com.        IN      A      1.1.1.2
mx1.magedu.com.        IN      A   1.1.1.3
mx2.magedu.com.        IN      A   1.1.1.3

$GENERATE 1-254 HOST$(这个可以改成想要的) A 1.2.3.$
(一次定义多个A记录 ---- HOST1-254)

*.magedu.com.  IN  A  5.5.5.5
(解决了 wwww.mageedu.com 三级域名多写的只能解析)
magedu.com. IN  A 6.6.6.6
(解决了不写 www 也能访问)



注意后边三个:
$GENERATE
*.magedu.com.          IN     A      1.1.1.4
magedu.com.            IN     A   1.1.1.4

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;

AAAA:

name: FQDN
value: IPv6

PTR:

name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addra.arpa.
            value: FQDN

例如:
4.3.2.1.in-addr.arpa.     IN     PTR     www.magedu.com.
简写成:
4      IN  PTR     www.magedu.com.

注意:网络地址及后缀可省略;主机地址依然需要反着写

CNAME(别名记录):

    name: 别名的FQDN
    value: 正工名字的FQDN;

例如:
web.magedu.com.     IN      CNAME      www.magedu.com.

互联网域名

域名注册:
代理商:万网, 新网;godaddy

注册完成以后,想自己用专用服务来解析
管理后台:把NS记录指向的服务器名称,和A记录指向
的服务器地址


BIND的安装配置:

dns服务,程序包名bind,程序名named

程序包:
    bind:提供服务
    bind-libs:提供库文件    
    bind-utils:测试服务

    bind-chroot: /var/named/chroot/

    /var/named 放的是区域数据库文件

服务脚本和名称:/etc/rc.d/init.d/named,unbound.service

主配置文件:

  • /etc/named.conf,

  • /etc/named.rfc1912.zones,

  • /etc/rndc.key

  • /etc/unbound/unbound.conf

解析库文件:/var/named/ZONE_NAME.ZONE

注意:

(1) 一台物理服务器可同时为多个区域提供解析;
(2) 必须要有根区域文件;named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost
和本地回环地址的解析库

rndc: remote name domain controller,
默认与bind安装在同一主机,且只能通过127.0.0.1连接
named进程
提供辅助性的管理功能;953/tcp

DNS配置与安装

  1. 安装bind

  2. 设置为开机启动 chkconfig named on(centos 6)、systemctl enable named (centos 7)并启动试试

  3. 配置区域数据库及相关文件!
    /etc/named.conf (此文件是全局配置文件)

主配置文件:/etc/named.conf

全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone;

zone "ZONE_NAME" IN {};

注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上

缓存名称服务器的配置:
监听外部地址即可;
dnssec: 建议关闭dnssec,设为no


例:

套路:

主DNS名称服务器:
(1) 在主配置文件中定义区域
    zone "ZONE_NAME" IN {
        type {master|slave|hint|forward};
        file "ZONE_NAME.zone";
        };
(2) 定义区域解析库文件
    出现的内容:
    宏定义;
    资源记录;
主配置文件语法检查:
    named-checkconf
 解析库文件语法检查:
    named-checkzone "magedu.com" /var/named/magedu.com.zone
加载配置文件
 rndc status|reload ;service named reload

一、主DNS名称服务器 正向区域:

1、安装bind包,启动服务
2、创建zone信息
vi /etc/named.conf

 listen-on port 53 { localhost; };
 allow-query {any;};

3、在主配置文件中定义区域(vim named.rfc1912.zones或者在主配置文件中加)

zone "ZONE_NAME" IN {
        type {master|slave|hint|forward};
        file "ZONE_NAME.zone";
};

zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
};

4.配置区域数据库文件(vim /var/named/magedu.com.zone)

$TTL 86400
magedu.com.   IN  SOA ns1.magedu.com.  admin.magedu.com. (2016092601   1D  10M 1W 1H )
magedu.com.   IN  NS ns1
magedu.com.   IN  NS ns2
ns1     IN      A   10.1.252.213
ns2     IN      A   10.1.252.210
websrv   IN    A  10.1.252.213
websrv  IN   A 10.1.252.210
www  IN CNAME  websrv
@       IN  MX 10 mailsrv
mailsrv IN  A 10.1.252.210
$GENERATE 1-9  server$ IN A   1.1.1.6$
*       IN  A 10.1.252.213
@       IN A 10.1.252.213

5、更改数据库文件的权限

chgrp named magedu.com.zone
chmod 640 magedu.com.zone

6、主配置文件语法检查:

named-checkconf

解析库文件语法检查:

named-checkzone "magedu.com   /var/named/magedu.com.zone

7、重新加载配置文件

rndc status|reload
service named reload


二、从服务器配置

1、应该为一台独立的名称服务器
2、主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
4、主服务器得允许从服务器作区域传送
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的版本应该保持一致;否则,应该从高,主低

从服务器配置步骤

1、装包,启服务
2、更改配置文件 vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query {any;};
allow-transfer {从IP;}; 主服务器
allow-transfer {none;}; 从服务器
(000)更改主的配置文件,使之加上从服务器的记录

@    IN    NS  ns2
ns2    IN    A    10.1.252.21

3、改vim /etc/named.rfc1912.zones  注意这里建的空间要与主空间的名字要一致

格式

zone "ZONE_NAME" IN {
    type slave;
    masters { MASTER_IP; };//这里写的是主DNS服务器的地址
    file "slaves/ZONE_NAME.zone";//从服务器的文件单独保存在 /var/named/slave 目录内,/后边随便起个名就行没要求
};

例:

zone "qzx.com" IN {
        type slave;
        masters {10.1.253.73;};
        file "slaves/qzx.com.slave";
};

rndc reload

传送成功;也可以看日志/var/log/messages;走的是TCP端口但是也需要UDP协议                            
DNS and BIND

4、权限限制 named.conf

访问控制的指令:
allow-query {}: 允许查询的主机;白名单;
allow-transfer {}:允许区域传送的主机;白名单
allow-recursion {}: 允许递归的主机,建议全局使用
allow-update {}: 允许更新区域数据库中的内容

例:为了安全起见只让固定的从主机能同步,从主机不允许让别的主机同步

在主的DNS配置文件中加上

     allow-transfer {10.1.253.73;};//允许区域传送的主机;白名单 括号内写上IP地址

在从的DNS配置文件中加上

    allow-transfer {none;};

三、反向区域:

区域名称:网络地址反写.in-addr.arpa. 172.16.100. –> 100.16.172.in-addr.arpa.

(1) 定义区域

zone "ZONE_NAME" IN {
            type {master|slave|forward};
            file "网络地址.zone"
        };

例
zone "1.10.in-addr.arpa" IN {
            type    master;
            file    "10.1.zone";
        };

(2) 区域解析库文件
注意:不需要MX和A,以及AAAA记录;以PTR记录为主;

示例:

$TTL 86400
@  IN   SOA   ns1.qzx.com.  admin.magedu.com. (
                    2016092901
                     1H
                     5M
                     7D
                     1D )
        IN      NS      ns1.qzx.com.
73.253  IN      PTR     ns1.qzx.com.
73.253  IN      PTR     www.qzx.com.
1.100   IN      PTR     ftp.qzx.com.

(3)、语法检查

[root@localhost named]# named-checkconf 
[root@localhost named]# named-checkzone "1.10.in-addr.arpa" 10.1.zone

(4)重读配置文件

[root@localhost named]# rndc reload
server reload successful

测试命令讲解

测试命令dig

dig [-t type] name [@SERVER] [query options]
dig只用于测试dns系统,不会查询hosts文件进行解析

查询选项:
+[no]trace:跟踪解析过程 : dig +trace magedu.com
+[no]recurse:进行递归解析

测试反向解析:
dig -x IP = dig –t ptr reverseip.in-addr.arpa

模拟区域传送:
dig -t axfr ZONE_NAME @SERVER
dig -t axfr magedu.com @10.10.10.11
dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
dig  -t NS . @a.root-servers.net

host

host [-t type] name [SERVER]
host –t NS magedu.com @172.16.0.1
host –t soa magedu.com
host –t mx magedu.com
host –t axfr magedu.com
host  1.2.3.4

nslookup命令:

nslookup [-option] [name | -] [server]

• 交互式模式:
nslookup>
server IP: 指明使用哪个DNS server进行查询
set q=RR_TYPE: 指明查询的资源记录类型
NAME: 要查询的名称

测试:改客户端主机 vim  /etc/resolv.conf

配置文件的重新加载

rndc命令

rndc:
rndc –> rndc (953/tcp)
rndc COMMAND

COMMAND:

  • reload: 重载主配置文件和区域解析库文件

  • reload zone: 重载区域解析库文件

  • retransfer zone: 手动启动区域传送过程,而不管序列号是增加

  • notify zone: 重新对区域传送发通知

  • reconfig: 重载主配置文件

  • querylog: 开启或关闭查询日志文件/var/log/message(默认不记录查询,打开后每查询一次就记录一次)

  • trace: 递增debug一个级别

  • trace LEVEL: 指定使用的级别

  • notrace:将调试级别设置为 0

  • flush:清空DNS服务器的所有缓存记录

  • status :查询状态


bind中ACL

bind中基础的安全相关的配置:

acl: 把一个或多个地址归并为一个集合,并通过一个统一的名
称调用
格式:

acl acl_name {
        ip;
        net/prelen;
        ……
    };

示例:

acl mynet {
        172.16.0.0/16;
        10.10.10.10;
        };

bind有四个内置的acl:

  • none: 没有一个主机

  • any: 任意主机

  • localhost: 本机

  • localnet: 本机的IP同掩码运算后得到的网络地址

注意:只能先定义,后使用;因此一般定义在配置文件中,处于options的前面

访问控制

访问控制的指令:

allow-query {}: 允许查询的主机;白名单;
allow-transfer {}:允许区域传送的主机;白名单
allow-recursion {}: 允许递归的主机,建议全局使用
allow-update {}: 允许更新区域数据库中的内容

子域

子域授权:分布式数据库
正向解析区域子域方法:
定义一个子区域:

实现了在mgedu.com这个DNS中查找他的子域study.magedu.com的DNS

即在主DNS中添加子域的名称及地址

例想要添加子域study.mage.com

study    IN    NS    ns1.study.magedu.com.
ns1.study    IN    A    10.1.0.111
例2,在magedu.com中添加子域 ops、fin
ops.magedu.com.  IN  NS  ns1.ops.magedu.com.
ops.magedu.com.  IN  NS ns2.ops.magedu.com.
ns1.ops.magedu.com.  IN  A  1.1.1.1
ns2.ops.magedu.com.  IN  A  1.1.1.2
fin.magedu.com.  IN  NS  ns1.fin.magedu.com.
fin.magedu.com.  IN  NS  ns2.fin.magedu.com.
ns1.fin.magedu.com.  IN  A  3.1.1.1
ns2.fin.magedu.com.  IN  A  3.1.1.2

注意:关闭dnssec功能:
dnssec-enable no;
dnssec-validation no
这两项是DNS安全的功能要 no掉 注释也不行,默认yes

原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/53407

(0)
qzxqzx
上一篇 2016-10-21
下一篇 2016-10-21

相关推荐

  • Hadoop Hive sql语法详解

    Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需 要的内容,这套SQL 简称Hive SQL,使不熟悉mapredu…

    Linux干货 2015-04-13
  • iptables介绍和使用

    iptables/netfilter:    Packets Filter Firewall:          包过滤型防火墙:  Firewall:隔离工具,工作于主机或网络的边缘处,对经由的报文根据预先定义的规则(识别标准)进行检测,对于能够被规则匹配到的报文实行…

    Linux干货 2017-04-29
  • 企业面试题

    要求: 将一下数据进行排序(字母部分已小到大排序) 101.37.8.249 wz417-419/wz119-125/wz7-16/wz571/wz544/wz1-6101.37.21.19 wz545/wz453-456/wz441-444116.62.4.21 wz106-118/wz514-516/wz581/wz190-199/wz572101.37…

    Linux干货 2017-06-27
  • grep,find

    显示当前系统上root、fedora、user用户的默认shell: 2.找出/etc/rc.d/init.d/functions文中单词后跟一组小括号的行 3.使用echo命令输出一个绝对路径,使用grep取出其基名: 4.找出ifconfig命令结果中的1-255之间的数字 5.写一个模式,匹配合理的ip地址 6.写一个模式,匹配出邮箱地址 7.查找/v…

    Linux干货 2016-11-27
  • VIM入门及进阶

    什么是VIM?     VIM类似于Vi编辑器, 它是一个功能强大、可高度定制的文本编辑器, 是一个纯粹的自由软件。注意:vi和vim不完全相同 为什么要使用VIM?     相信大多数人接触Linux时使用的第一个文本编辑器都不是VIM,很多人看到VIM复杂的命令操作就望而祛步…

    系统运维 2016-03-04
  • 【】

         

    Linux干货 2016-10-30