DNS  :  工作在应用层

DNS 作用 :  完成域名到IP的解析过程  FQDN --> IP

例如  :  www.ifeng.com  -->  123.103.122.24

DNS 查询方式:

1. 迭代查询

由DNS服务器通过层层查询得到结果的过程称为迭代查询

2. 递归查询

客户机向服务器请求,返回结果的过程称为递归查询

DNS 工作过程:

1. 客户机通过自身host 文件 及 DNS 缓存查找解析记录;

2. 客户机将解析请求发送给指定的 DNS 服务器,例:114.114.114.114

3. DNS服务器通过层层查找得到解析地址

4. DNS服务器将得到的解析地址缓存到自身DNS cache中 ,并发送给客户机

5. 客户将结果放入DNS cache ,并使用

DNS 服务器资源解析记录类型:

SOA   : 起始解析记录,写在区域解析库文件的第一行

NS     : ns 解析记录 ,可以有多个

MX    :  邮件交换器解析记录

A       :  正向解析

AAAA :  正向解析(IPV6)

PTR   :  反向解析

CNAME  : 别名解析

资源解析记录库配置格式:

name      [TTL]      IN     RR_TYPE    value

SOA :     1. 当前区域的名称

2. 当前区域管理员的邮箱地址

3. 配置与从属服务器协商内容

协商内容: 序列号 (从服务器通过序列号的变更从主服务器更新资源库,如初始序列号为1,每更新一次资源库加1);

刷新间隔: 从服务器多久从主服务器更新资源库;

                 重传间隔 : 从服务器无法从主服务器更新资源库后,重试时间间隔;

                    过期时间 : 从服务器无法联系主服务器多久之后放弃从主服务器同步数据,并停止服务;

                 否定答案的缓存时常: 客户机获取否定答案(无法解析)后,将该答案缓存在本机的时常

示例:  ifeng.com.    86400    IN   SOA   ifeng.com.     admin.ifeng.com.   (

10;serial   (定义序列号)

2H;refresh    (定义刷新间隔)

                         20M;retry    (定义重传间隔)

                       1W;expire    (定义过期时间)

                          1D;negative answer ttl     (定义否定答案的缓存时常)

注:在解析库中@表示DNS主机区域名,因此邮件中的@用.代替,为 admin.ifeng.com

NS   :   name  : 区域名称     (一个区域中可以有多个NS记录)

value  :  区域内某DNS服务器的名称

示例;

ifeng.com.   86400   IN   NS   ns1.ifeng.com.

  MX  :   name :  区域名称  (一个区域内可以有多个MX记录, value之前用优先级标识,1~99,越低越优先)

value  :  区域内邮件交换器的名称

示例:

ifeng.com.   86400   IN   MX   mx1.ifeng.com.

  A    :  name  : 某 FQDN ,  例如 www.ifeng.com

value : FQDN 对应的 ip 地址

示例:

www.ifeng.com.    86400   IN   A   192.168.1.1

  AAAA :   name : 某 FQDN

value  : FQDN对应的 IPV6地址

  PTR  : name:IP地址,有特定格式,反过来写,加特定后缀:   例如:ip为 1.2.3.4 的记录应该写为 4.3.2.1.in-addr-arpa.

value  : FQDN

示例:

      4.3.2.1.in-addr-arpa.   IN   PTR   web.ifeng.com

  CNAME  : name: FQDN格式的名字

       value : FQDN  格式的正式名字

      示例:

          web.ifeng.com   IN   CNAME   www.ifeng.com

 

                 

注意:  NS,MX  等记录的value为fqdn,该fqdn应该有一个A记录

实战:  配置一个正向解析 DNS 服务器:

(1) 安装 DNS 服务程序

yum install bind    (主DNS程序)

yum instal bind-utils  (DNS程序辅助工具)

(2) 修改主配置文件及添加解析区域;

  vim /etc/named.conf

  option {

listen-on port 53 { 192.168.8.16; };     (监听地址为服务器网卡外网地址)

。。。

allow-query     { any; };                            (允许请求改为  any )

};

dnssec-enable no;
          dnssec-validation no;             (关闭DNS校验)

保存退出

vim /etc/named.rfc1912.zones      (在文件尾部添加解析区域)

  zone "ifeng.com" IN {                      (此处以区域 ifeng.com 为例)
  type master;
  file "ifeng.com.zone";            (定义区域解析库文件名)
  };

保存退出

(3)  添加资源解析库文件及修改DNS

  cd /var/named/

vim ifeng.com.zone        (文件名与区域中定义文件名一致)

  $TTL 1D             (在新文件中写以下内容,@会自动替换为区域名称,此处自动替换为 ifeng.com)
  @    IN    SOA    ns1.ifeng.com.   admin.ifeng.com (
        10
        2H
        10M
        1W
        1D
        )
  @   IN    NS    ns1.ifeng.com.                  (ns解析记录)
  @   IN   MX   10 mx1.ifeng.com.               (邮件交换器解析记录)
  ns1.ifeng.com.   IN    A    192.168.8.16
  mx1.ifeng.com.    IN    A   192.168.8.17              
  www.ifeng.com.   IN   A    192.168.8.16     (正向解析记录  FQDN --> IP)
  bbs.ifeng.com.   IN   A    192.168.8.17     (正向解析记录)

保存退出

vim /etc/resolv.conf

nameserver 192.168.8.16   (将DNS修改为服务器自身IP地址)

保存退出

(4) 修改文件权限 ,确保文件不被其用户修改

chgrp named /var/named/ifeng.com.zone

chmod o= /var/named/ifeng.com.zone

(5) 重载配置文件 及启动服务

systemctl start named

systemctl enable named

rndc reload     (重载配置文件)

systemctl reload named    (重载配置文件)

(6)  测试

dig -t A www.ifeng.com

   dig  -t A www.baidu.com

(修改其他主机DNS指向服务器端,测试是否可以递归解析)

实战: 配置反向 DNS 解析区域

(1)  添加反向解析区域

vim /etc/named.rfc1912.zones

  zone "8.168.192.in-addr.arpa" IN {           ( ip 解析区域为反向,此处需要解析区域为 192.168.8.1~254 ,则区域名称为 8.168.192.in-addr.arpa)
  type master;
  file "192.168.8.in-addr-arpa.zone";          (定义区域解析库文件名)
  };

(2)  添加反向解析区域库文件

cd /var/named/

vim 192.168.8.in-addr-arpa.zone

  $TTL 3600
  $ORIGIN 8.168.192.in-addr.arpa.        (表示自动补全内容,如下输入16 通过自动补全为 16.8.168.192.in-addr.arpa. ) 
  @   IN   SOA   ns1.ifeng.com    admin.ifeng.com (
        10
        2H
        10M
        1W
        1D
        )
  @   IN   NS   ns1.ifeng.com.
  16    IN   PTR    www.ifeng.com.
  17   IN    PTR    mx1.ifeng.com.
  18   IN    PTR    bbs.ifeng.com.
  16    IN    PTR    ns1.ifeng.com.

保存退出

(3)  检查配置文件 :

named-checkconf      (检查主配置文件)

named-checkzone 8.168.192.in-addr.arpa  /var/named/192.168.8.in-addr-arpa.zone  (检查区域配置文件)

(4) 修改文件权限

  chgrp named /var/named/ifeng.com.zone

chmod o= /var/named/ifeng.com.zone

(5) 重载 配置文件

   rndc reload

systemctl reload named

(6)  测试

dig -x 192.168.8.17

实战: 主从服务器配置

从服务器配置;

(1) 安装DNS服务程序;

  yum install bind

    yum install bind-utils

(2) 添加解析区域及修改主配置文件

vim /etc/named.rfc1912.zones

在文件尾部添加以下行:

  zone "ifeng.com" IN {
  type slave;                                   (定义区域类型为 slave,从服务器)
  file "slaves/ifeng.com.zone";           (定义区域解析库文件路径,无需创建,从主服务器同步)
  masters { 192.168.8.16; };                (定义主服务器地址)
  };

 保存退出

  vim /etc/named.conf

  options {
  listen-on port 53 { 192.168.8.17; };          (修改监控Ip地址为从服务器外网卡地址)
  listen-on-v6 port 53 { ::1; };
  directory "/var/named";
  dump-file "/var/named/data/cache_dump.db";
  statistics-file "/var/named/data/named_stats.txt";
  memstatistics-file "/var/named/data/named_mem_stats.txt";
  allow-query { any; };        (允许DNS请求,any为所有

  recursion yes;      (是否为客户机进行递归查询,此处为允许,  no 为不进行递归查询)

  dnssec-enable no;           (关闭dnssec ,DNS校验)
  dnssec-validation no;

保存退出

(3) 启动named服务并重载配置文件

systemctl start named

rndc reload

systemctl status named   (查看服务状态)

主服务器配置

(1) 添加从服务器ns记录

vim /var/named/ifeng.com.zone    (修改主资源解析库文件)

@    IN   NS   ns2.ifeng.com       (添加从服务器ns2记录)

ns2.ifeng.com   IN  A    192.168.8.17          (添加从服务器正向解析记录)

(2)  重载配置文件  (主,从服务器都需重载)

rndc reload   

(3) 测试从服务器

dig -t A www.ifeng.com @192.168.8.17

实战: 子域委派配置

(1) 主DNS服务器配置

vim /var/named/ifeng.com.zone    (编辑正向解析库文件)

添加行:

   ops.ifeng.com.  IN      NS      ns1.ops.ifeng.com.     (添加子域ns解析记录)

      ns1.ops.ifeng.com.      IN      A       192.168.8.18      (添加子域A记录)

保存退出  (注:序列号加1,重载配置文件)

(2)   委派服务器配置

(2.1)        安装bind ,bind-utils  及修改主配置文件

yum install bind   yum install bind-utils

vim /etc/named.conf

listen-on port 53 { 192.168.8.18; 127.0.0.1; };            (设置监听地址为外网地址)

allow-query     { any; };           (允许所有请求)

      dnssec-enable no;              (关闭DNS 校验)

       dnssec-validation no;

保存退出

(2.2) 添加解析区域,及区域配置文件

vim /etc/named.rfc1912.zones

文件尾部添加行:

  zone "ops.ifeng.com" IN {
  type master;
  file "ops.ifeng.com.zone";
  };

保存退出

vim  /var/named/ops.ifeng.com.zone  (编辑新解析库文件)

  $TTL 3600
  $ORIGIN ops.ifeng.com.
  @    IN    SOA   ns1.ops.ifeng.com   admin.ops.ifeng.com (
    10
    2H
    10M
    1W
    1D
    )
  @   IN    NS   ns1.ops.ifeng.com.
  ns1   IN    A    192.168.8.18
  www   IN  A 1  92.168.8.17
  bbs   IN   A    192.168.8.18
  max    IN   A   192.168.8.16

保存退出

(2.3) 检查文件及启动程序重载配置文件

named-checkconf

   named-checkzone ops.ifeng.com   /var/named/ops.ifeng.com.zone

systemctl start named

    rndc reload

(2.4)   测试

dig -t A www.ops.ifeng.com

实战:定义转发域:

  (1)区域转发,只把对某个区域的请求转发给指定的服务器
  zone "ZONE_NAME" IN {
  type forward;
  forward {first|only}
  forwarders { server_ip; };
  };

  first : 首先转发;转发器不响应时自行去迭代查询;
  only : 只转发
  server_ip 可以有多个

  示例: /etc/named.rfc1912.zones
  zone "ifeng.com" IN {
  type forward;
  forward only
  forwarders { 172.16.100.67; };
  };

(2)全局转发,只要不是自己服务器定义的区域请求都转发给指定的服务器

  /etc/named.conf

  option {

  添加行:

  forwarders { 172.16.199.67; }; (只要自己无法解析,通通转发)
  };

实战:DNS  acl   配置:

访问控制指令:
  allow-query {} :允许查询的主机(白名单)
  allow-transfer {} :允许向哪些区域做区域传送;默认为向所有主机;应该配置仅允许从服务器
  allow-recursion {} :允许哪些主机通过本主机递归查询
  allow-update {} ;DDNS ,允许动态更新区域数据库文件中内容;(一般不允许更新)

  BIND 有四个内置的alc
  none :没有一个主机
  any : 任意主机
  local : 本机
  localnet :本机所在的ip所属的网络;

示例 : 定义 acl ,仅允许指定的主机查询

vim  /etc/named.conf

添加行:

acl   control {

192.168.8.0/24;                (设置允许网段

};

option    {

...

allow-query  {  control; };      (修改改行,调用 acl控制)

};

保存退出

测试: 仅允许 192.168.8.0/24 网段进行解析请求)

DNS and Bind的更多相关文章

  1. 移植DNS服务bind

    移植DNS服务bind 标签: makefile工作linuxbuildgcc工具 先写用于DNS的bind. 一. 移植环境 1 .硬件环境: Host : X86 PC Target : MPC8 ...

  2. DNS之BIND使用小结(Forward转发)

    之前详细介绍了DNS及其在linux下的部署过程,今天再说下DNS的BIND高级特性-forwarder转发功能.比如下面一个案例:1)已经在测试环境下部署了两台内网DNS环境,DNS的zone域名为 ...

  3. 【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)

    环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example. ...

  4. centos6.5环境DNS-本地DNS服务器bind的搭建

    centos6.5环境DNS-本地DNS服务器bind的搭建 域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库, ...

  5. Linux运维实战之DNS(bind)服务器的安装与配置

    转自http://sweetpotato.blog.51cto.com/533893/1598225 上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要 ...

  6. DNS和Bind配置指南

    /////////////////////////////目录//////////////////////////////////////一.DNS原理相关二.使用bind搭建最简单的DNS服务器三. ...

  7. DNS和BIND

    https://www.jianshu.com/p/296b2c7ea76f DNS和BIND 毛利卷卷发关注 0.482018.07.25 10:33:44字数 4,919阅读 4,909 DNS ...

  8. (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.conf、/var/named)设置实现和解释

    2015年3月24更新 添加了要加的配置域名解析器(否则会找不到域名)     一.创建该实验的的模型   配置完gate虚拟机的两张网卡后,就启动gate的转发 [root@localhost ro ...

  9. 【Linux】DNS服务-BIND基础配置(二)

    BIND简介 现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet ...

  10. 内建DNS服务器--BIND

    参考 BIND 官网:http://www.isc.org/downloads/bind/ 1.系统环境说明 [root@clsn6 ~]# cat /etc/redhat-release CentO ...

随机推荐

  1. KVM的客户机可以使用的存储

    KVM的虚拟机可以直接使用宿主机器内的存储设备,比如可以把宿主机器内的硬盘直接暴露给 虚拟机挂载使用 -hda /dev/sfa(宿主机的设备文件) 还可以把镜像文件挂接到虚拟机,作为虚拟机的存储设备 ...

  2. 吴裕雄--天生自然PythonDjangoWeb企业开发:学员管理系统后台

    需求 提供一个学员管理系统,一个前台页面,展示现有学员,并供新学员提交申请,一个后台,能够处理申请. pip install django==1.11.2 创建项目 使用控制台进入到一个目录下,具体是 ...

  3. 02-10Android学习进度报告十

    今天我学习了有关ListView的基础知识,主要是学习了其中界面展示的基本方法. 首先看一个简单的列表实现代码: public class Animal { private String aName; ...

  4. 列举出给定数量的字符的所有组成情况-java实现

    老早以前刚学程序的时候碰到了这么个问题,当时没想出来,今天突然想起来了这么个问题于是写了下,也算留个纪念吧 public static String itr; public static void m ...

  5. [原]OpeanLayers3 For ArcGIS MapServer

    由于OpenLayers3比较新,百度能找到的demo很少,自己不得不参考官方给出的Examples来依葫芦画瓢了,地图服务采用的局方给的ArcGIS MapServer,先上图: 这个例子是按照官方 ...

  6. R语言 一个向量的值分派给另一个向量

    group = sample(seq(1,10),size = 20,replace = T) #这20个组分别属于1,...,10 v = rnorm(length(unique(group)),0 ...

  7. Java 正则?:?=?!的理解

    上图是官方文档的介绍,总结一下讲了两个知识点 ①是否获取匹配并保存匹配的值.②正向预查和反向预查. 1:解释是否获取匹配并保存匹配的值 ()表示捕获分组,获取匹配,()把每个分组里的匹配的值保存起来 ...

  8. python对ASC码的加减

    一般使用这两个函数 sum = ord('A') //结果为65 ord()函数返回值是int 字符要加' '否则会当作变量来看 sum = chr(65) //结果为A 不是char是chr()

  9. classmethode,staticmethode

    目录 classmethod: staticmethod: 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法 而使用@staticmethod或@classmethod,就可以不需要实例化 ...

  10. 2_05_MSSQL课程_查询_where,group by,having的区别以及内连接、案例练习

    SQL查询顺序 select distinct/top ..._ (5) 投影 from_(1)找到表  where_ (2)过滤掉我们不需要的数据    group by_ (3)分组操作    h ...