DNS服务

2017-10-08  本文已影响0人  一桥长书

由于网络是基于IP来进行信息传递,但是IP,又不太容易记住,为了容易记忆,所以研发地址解析,方便人们记忆

1 DNS and BIND

DNS: Domain Name Service (域名解析服务) 应用层协议
是基于C/S,监听端口 53/udp,53/tcp
BIND: Berkerley Internat Name Domain 研发
网址是 www.isc.org
本地名称解析配置文件: hosts
linux: /etc/hosts
windows: %WINDIR%/system32/drivers/etc/hosts

2 DNS 域名的结构

几个基本概念
域: 是逻辑概念,指管理一个范围
DNS服务器: 负责具体的域,管理本域的域名解析服务
  根服务器: 全球一共13个,一个主根服务器和9个辅助服务器都在美国,2个在欧洲,1个在日本
DNS服务器可分为主从服务器 缓存服务器 转发服务器 主服务器
  主DNS服务器: 维护所负责的解析的域内解析库服务器,解析库由管理员维护
  从DNS服务器: 从主服务器或其他从DNS服务器复制(区域传递)一份解析库
    序列号  解析库版本号 前提 主服务器解析库发生变化,及序列号递增
    刷新时间 从服务器从主服务器请求同步解析库的时间间隔
    重试时长 从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔
    过期时长 在指定的时间内不能从主服务器同步数据,从服务器也会down掉
    "通知" 机制 notify 主服务器修改通知从服务器更改信息
  区域传送可分为两种:
    全量传送 axfr
    增量传送 ixfr

3 DNS 查询类型及解析

查询方式
  递归查询: 查询请求者一次就可以得到结果
  迭代查询: 查询请求这要多次才能得到答案
查找顺序
  client --> hosts文件 --> DNS service --> local cache(本地缓存) --> DNS Server(recursion)递归 --> Server cache --> iteration(迭代)
解析得到的答案
  肯定答案: 请求得到结果,进行返回
  否定答案: 请求的条目不存在等原因返回结果
  权威答案: 由自己管理的域名,及自己的解析库中,有这条记录
  非权威答案: 由缓存得之,非自己管理的域名解析,本地解析库没有这条记录
资源记录类型 resource record
  SOA start of authority 起始授权记录
  定义一个区域解析库有且仅能有一个SOA记录,而且必须为第一条记录
  SOA 定义域 
  NS 域内负责解析的主机 name server 标识当前区域的DNS服务器
  A ipv4 Internet address  作用 FQDN-->IPv4
  AAAA ipv6  作用 FQDN-->IPv4
  PTR 反向解析 pointer 作用 IP-->FQDN 
  CNAME 别名 canonical name 
  MX 邮件 Mail eXchanger 邮件交换器
资源类型的定义格式
  语法: name [TTL] IN rr_type value
注意
  1 TTL 可以全局继承
  2 @可用于引用当前区域的名字
  3 同一个名字可以通过多条记录定义多个不同的值,此时,将以轮询的方式来进行响应
  4 同一个值也可以有多个不同的定义名字,通过多个不同的名字指向同一个值进行定义,此仅表示通过多个不同的名字可以找到同一个主机
SOA 记录
 name:当前区域的名字 如 "johniu.com"
 value: 
  1 当前区域的主dns服务器FQDN 也可以是当前区域的名字
  2 当前区域管理员的邮箱地址,但地址中不能使用@符号 一般用.代替 例如 linuxedu.magedu.com.
  3 (主从服务协调器属性的定义以及否定的答案的统一的TTl)
 例如
 @  86400 IN SOA ns.johniu.top.     admin   (
                                 2017070901 ;序列号
                                 2H         ;刷新时间,从服务器到主服务器
                                 10M        ;重试时间,从服务器到主服务器
                                 1W         ;过期时间,从服务器
                                 1D         ;否定答案的TTL值
                                 )
NS
 name 当前区域的名字
 value 当前区域的某个DNS 服务器的名字 例如 ns.johniu.top.;
 注意 一个区域可以有多个NS 记录
 例如
                        NS  ns1.johniu.com.
                        NS  ns2.johniu.com.
 注意
  1 相等的两个资源记录的name相同时,后续的可以省略
  2 对NS记录而言,任何一个ns记录后面的服务器名称,都应该在后续有一个A 记录
MX
 name 当前区域的名字
 value 当前区域某个邮件服务器(smtp服务器)的主机名
 一个区域内可以有多个,但每一个value都有一个数字(0-100),标识服务器的优先级,数字越小优先级越高
例如
        MX 100  mx1.johniu.top.
        MX 10   mx2.johniu.top.
A
 name 某个主机的FQDN 例如 www.johniu.top.
 value 主机名对应的IP地址
 例如
 www        IN     A     IP
 www    IN     A     IP2
 mx1    IN     A     IP3
 mx2    IN     A     IP4
 泛域名解析
 *      IN     A     IP
 按照一定序列进行解析
 $GENERATE  1-100 server$   A 192.168.25.$   
 避免用户写错名称时,给错名字,可以通过泛域名解析进行解析至某指 定的地址
PTR 反向解析
 name: IP 有特定格式,把IP地址反过来写
 value: FQDN
 例如
 4.3.2.1.in-addr.arpa.          IN      PTR    www.johniu.com.
 可简写
 4                      IN  PTR    www.johniu.com.
 注意,网络地址及后缀可以省略,主机地址依然需要完整写
CNAME
 name 别名的FQDN
 value 正工名字的FQDN
 例如,
 web                    IN     CNAME    www
服务配置文件主配置文件 /etc/named.conf,/etc/named.rfc1912.zones,/etc/rndc.key
  在 /etc/named.conf 的option{}中定义一些服务器属性
  如果要搭建服务需要定义区域
   zone "ZONE_NAME" IN {
      type {master|slave|hint|forward(局部转发域)};
      file "ZONE_NAME.zone";
    }
解析库文件 /var/named
1 首先在/etc/named.rfc1912.zones 添加域名解析
  zone {
    type master;
    file "johniu.com.zone";
  };
2 添加区域解析库
 新建编辑 /var/named/johniu.com.zone 注意权限,named用户有读的权限
 $TTL 1D
 @       IN SOA  ns1 admin (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
         NS      ns1
         MX  10  mail
 ns1     A       172.18.23.40
 web     NS      172.18.23.40
 *       A       172.18.23.40
 $GENERATE  1-100 server$   A 192.168.1.$
 @       A       172.18.23.40
 www     CNAME   web
 mail   A       172.18.23.40

然后,就可以启动服务进行测试
测试工具

dig [-t type] name [@server] +option
如 dig -t NS johniu.com @localhost 
     dig -t A www.johniu.com @localhost
1 首先,另找一台主机,将其搭建为从服务器,安装并配置好服务
 在options中定义可以供外部查询,及禁止区域传送
 allow-transfer {none;};
 在/etc/named.rfc1912.zones定义主服务器的
 zone "johniu.com" IN {
   type slave;
   masters { master_ip; };
   file "slaves/zone_name.zone";
 }
2 在主服务器上,定义可以传送的主机options选项中定义
allow-transfer {从服务器 IP;};
3 开启服务进行测试
转发分为全局转发和区域转发
全局转发: 但客户端来进行DNS查询的时候,全部转发到定义的服务器上
 options {
  forward {first|only}; #first 先转发,如果转发到的服务器也不能查到结果,就自己出去查询,only表示只做转发,自己不查询
  forwarders {IP1;IP2;};
 }
区域转发: 仅转发对特定区域的请求之指定服务器
  zone "ZONE_NAME" IN {
    type forward;
    forward {only|first};
    forwarders {IP1;IP2;}; 
  };

4 BIND 中基础的安全相关的配置

acl 把一个或多个地址归并为一个集合,并通过一个统一的名称调用
  acl acl_name {
    ip;
    ip;
   net/netmask;
  };
  如:
  acl mynet {
    172.18.0.0/16;
  }
bind中四个内置的acl
  none 没有任何主机
  any 任意主机
  local 本机
  localnet 本机的IP同子网掩码运算后得到的网络地址
注意,acl需要先定义,后使用,他一般定义在配置文件中的options之前
访问控制的指令
  allow-query {}; 允许查询的主机,或为网络主机
  allow-transfer {};允许进行传送的主机
  allow-recursion {}; 允许递归的主机
  allow-update {}; 允许更新区域数据库中的内容
上一篇下一篇

猜你喜欢

热点阅读