DNS and Bind

DNS and Bind

=====================================================================================

概述:

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



相关知识

Sockets:在互联网上基于套接字协议的通信一般都遵循C/S法则;

       Client:客户端,发起应用请求的程序;

       Server:响应请求(提供服务)的程序;

            LISTEN:Socket(ip:port)

传输层协议:TCP,UDP,SCTP

         TCP:面向连接的协议,双方通信之前需要建立虚连接;

         UDP:无连接的协议,双方无需通信之前事先建立虚连接;

DNS服务

1)介绍

DNS:Domain Name Service 域名系统,是一个应用层协议

     C/S, 53/udp, 53/tcp(DNS服务在启动的时候会同时开启tcp和udp的53号端口)

DNS作用:

     将主机名解析成IP地址的过程;

     解决了从域名(FQDN)到主机识别的IP地址之间的转换.

本地名称配置解析文件:

  /etc/hosts

wKioL1fsnJmzWqHoAAAh_3zmhJE663.png

   缺点:只能作用于本主机,而不能同步更新所有的主机使用,并且当hosts文件很庞大时很难管理,因此就必须有一个统一的组织去记录管理域名和ip的对应关系。

DNS结构

  • DNS是一个分布式、分层次的主机名管理架构,通过配置DNS服务器地址,主机不需要知道对应的ip地址就能通过主机名的形式访问互联网;

  • DNS利用类似倒状树的目录结构将主机名的管理分配在不同层级的DNS服务器当中,经过分层管理,每一级DNS服务器负责部分域名信息,这也就减轻了DNS服务器的负载,同时也方便记录的更新同步。

FQDN(Full Qualified Domain Name):完整主机名

2)DNS域名

  • 根域

  • 一级域名:Top Level Domain: tld(顶级域)

         组织域:com, edu, mil, gov, net, org, int,

         国家域:.cn, .ca, .hk, .tw…

         反向域:

  • 二级域名:如,.magedu.com、taobao.com

  • 三级域名:如,.dns.magedu.com

  • 每一级只负责对应下级的域的管理,其中根节点是有分布在世界各地的13台服务器组成,其中10台位于美国,另外3台设置于英国、瑞典和日本。

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

  ◆如图所示域名层级结构图:

wKioL1fst5KzLEOOAAFt5oRIaeo143.png

  ◆按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例:

     wKiom1fswOSxmLUsAAB0WqSj37A252.jpg

2)DNS解析

★:

解析流程图如下:

wKiom1fswmCTsvPNAAD33oelEhU836.jpg

3)DNS类型,解析方式

DNS查询类型

   递归查询:客户机和服务器之间的查询

   迭代查询:DNS服务器与DNS服务器之间的查询

★DNS名称解析方式:

   名称—>IP : 正向解析

   IP —>名称:反向解析

  注意:正反向解析是两个不同的名称空间,是两棵不同的解析树,因此也不是同一个解析库。

★通常我们申请注册的域名是顶级域下的一个二级域(.com),申请成功之后(如:magedu.com),域名商会免费给我们提供DNS解析服务(群租的一个DNS服务器),我们只需要通过其提供的接口(如:web页面)在管理后台添加主机记录即可。然而免费的东西和付费的服务总是不一样的,免费提供的服务不保证服务的可靠性,因此企业里面要想架设自己的DNS服务器,来提供更可靠、更丰富的功能,就需要向上级提出授权认证,更改DNS服务器的指向,从原来的群租转到自己的DNS服务器上,自己管理。但一般的小公司如果自己架设DNS服务器的话成本较高,所以一般都是代理商提供的。

DNS服务器的类型

    ·负责解析至少一个域:

         主DNS服务器

         辅助DNS服务器

    ·不负责域解析:

         缓存DNS服务器:转发器

一次完整地解析请求经历的过程

  Client–>hosts文件–>Dns Local Cache–>DNS Server(recursion递归)–>

       自己负责解析的域:直接查询数据库并返回答案;

       不是自己负责的解析域:Server Cache–>iteration(迭代)–> 根–> 顶级域

DNS–>二级域名DNS…

解析答案

    ·肯定答案:

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

    ·权威答案:由直接负责的DNS服务器返回的答案;

    ·非权威答案:

主-从DNS服务器:

   ·主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;

   ·从DNS服务器:从主DNS服务器那里或其他的从DNS服务器那里“复制”解析库;但只能进行读操作(只能接受查询,不能接受修改);

        复制操作的实施方式:

             序列号:解析库版本号,主服务器解析库变化时,其序列号递增;

             刷新时间间隔:从服务器每隔多久到主服务器检查序列号更新情况;

             重试时间间隔:从服务器请求同步失败时,再次发起尝试请求时间间隔;

             过期时长:从服务器联系不到主服务器时,多久后停止服务;

           否定答案的缓存时长(TTL):快取时间

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

区域传送

  • 全量传送:axfr,传递整个解析库;

  • 增量传送:ixfr,传递解析库变化的数据;

区域(zone)和域(domain)

     magedu.com域:

          FQDN–>IP:正向解析库;

             (正向区域:正向解析库和正向解析的功能的组合);

          IP —>FQDN:反向解析库,反向区域

    注意:

      一般来说一个域由正向区域和反向区域组成,但并不是域就一定大于区域,如:父域的区域可能会比子域要大;

     区域是物理概念,而域是逻辑概念。

DNS是一个网络服务,因此就有对应的端口,其端口是53号,通常DNS在查询的时候是以udp这个快速的数据传输协议来查询的,但是一旦没有办法查询到完整的信息时就会再次以TCP协议来进行重新查询,因此DNS服务在启动的时候会同时开启tcp的53号端口和udp的53号端口

     

区域数据库文件

1)资源记录(Resource Record)简称rr

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

   记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX

  • SOA:(Start Of Authority)起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须为解析库的第一条记录;

  • A:(internet Address)作用,FQDN –> IPv4;

  • AAAA: FQDN –> IPv6;

  • PTR: PoinTeR,IP –> FQDN;反解到的主机名;

  • NS: (Name Server)专用于标明当前区域的DNS服务器,一个区域解析库可以有多个NS记录(主从DNS服务器等);

  • CNAME:(Canonical Name)别名记录,一个主机可以有多个别名,但IP地址是一样的;

  • MX:Mail exchanger,邮件交换器,有优先级,0-99,数字越小优先级越高;

 ★资源记录的定义格式:    

       语法:name [TTL] IN rr_type value

=====================================================================================

每一种资源类型的定义方式如下:

SOA记录 

      name: 当前区域的名字,例如“magedu.com.”或者“2.3.4.in-addr.arpa.”

      value: 有多部分组成

          (1) 当前区域的区域名称(也可以是主DNS服务器的FQDN);

          (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com

          (3) 主从服务协调属性的定义以及否定的答案的统一的TTL

   例如:

       magedu.com. 86400 IN SOA   ns.magedu.com. nsadmin.magedu.com. (

                  2015042201 ;序列号serial

                  2H           ;刷新时间refresh

                  10M          ;重试时间retry

                  1W           ;过期时间expire

                  1D           ;否定答案的TTL值,也叫快取时间

       )

   注意:以上五个参数除了第一个序列号外,其他四个的单位都默认是秒,当然,也可以指定单位如:D(天),M(分),H(小时),W(周)

NS记录

     name: 当前区域的名字

     value: 当前区域的某DNS服务器的名字,例如 ns.magedu.com.

     注意:一个区域可以有多个NS记录;

  例如:

      magedu.com. IN NS ns1.magedu.com.

             (表示magedu.com.这个区域的域名服务器是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.

         magedu.com.  IN  MX  20  mx2.magedu.com.

   注意:

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


A记录

       name: 某主机的FQDN,例如www.magedu.com.

       value: 主机名对应主机的IPv4地址

   例如:

         www.magedu.com.  IN  A   1.1.1.1

         www.magedu.com.  IN  A   1.1.1.2

         mx1.magedu.com.  IN  A   3.3.3.3

         mx2.magedu.com.  IN  A   3.3.3.3

   注意:

        *.magedu.com.  IN  A  5.5.5.5

          magedu.com.  IN  A  5.5.5.5

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


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

          简写成:如1.2.3为网络地址,可省

                                  4 IN  PTR  www.magedu.com.

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


CNAME记录

        name: FQDN格式的别名

        value:FQDN格式的正式名字;

  例如:

        web.magedu.com. IN  CNAME  www.magedu.com.

     (表示www的这个主机的别名为web)


注意:

  • TTL就是time to live,表示该记录被其他dns服务器保留到对方服务器上的缓存当中,并保持多少秒(即客户端可以缓存多长时间),可从全局继承;

  • IN为关键字 ;

    @可用于引用当前区域的名字;

  • 相邻的两条记录其name相同时,后面的可以省略;

  • 同一个名字可以通过多条记录定义多个不同的值(即一个主机名有多个IP地址);此时DNS服务器会以轮询方式响应可以实现负载均衡;

  • 同一个值也可能有多个不同的定义名字(即一个IP地址多个主机名);通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机而已;

  • 对于正向区域来说,各MX、NS等类型的记录的value为一个FQDN,此FQDN应该有一个A记录。


课外练习:

    自己注册一个域名(不用备案的),修改器域名解析服务器(默认情况下,在哪里注册的域名(如:godady),DNS服务器就由哪里提供)为dnspod.cn或者dns.la(从一个群租房转到另外一个群租房)

安装部署DNS服务

1)bind的安装配置

★BIND:Berkeley Internet Name Domain,ISC.org

      dns:协议;

      bind:dns协议的一种实现;

      named:bind程序的运行的进程名;

程序包:yum list all bind*

      bind-libs:被bind和bind-utils包中的程序共同用到的库文件;

      bind-utils:bind客户端程序集,例如dig,host,nslookup等;

      bind:提供的dns server程序、以及几个常用的测试程序;

      bind-chroot:选装,让named运行于jall模式下;/var/named/chroot

bind服务器配置文件

  • 服务脚本和名称

         /etc/rc.d/init.d/named,unbound.service

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

         或包含进来其他文件:

              /etc/named.iscdlv.key

              /etc/named.rfc1912.zones

              /etc/named.root.key

  • 解析库文件:

        /var/named:该目录为DNS数据库文件存放目录,每一个域文件都存放在这里;

        一般名字为:/var/named/ZONE_NAME.ZONE

  • 注意:

        1)一台DNS服务器可同时为多个区域提供解析;

        2)必须要有根区域解析库文件:named.ca;

        3)还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;

                正向:named.localhost

                反向:named.loopbask

[root@centos7 ~]# ls /var/named
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@centos7 ~]# cat /var/named/named.localhost  # 正向解析库文件
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1
[root@centos7 ~]# cat /var/named/named.loopback  # 反向解析库文件
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1
	PTR	localhost.
[root@centos7 ~]#
  • rndc: remote name domain controller

         默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,因此仅允许本地使用;

         提供辅助性的管理功能;953/tcp(监听在953端口)

★bind程序安装完成之后,默认既可作为缓存名称服务器使用,如果没有专门负责解析的区域,直接即可启动服务

      CentOS 6:service named start

      CentOS 7:systemctl start named.service

bind信息如下:

[root@centos7 ~]# yum info bind
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
Name        : bind
Arch        : x86_64
Epoch       : 32
Version     : 9.9.4
Release     : 29.el7
Size        : 4.3 M
Repo        : installed
From repo   : CDROM
Summary     : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
URL         : http://www.isc.org/products/BIND/
License     : ISC
Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS
            : (Domain Name System) protocols. BIND includes a DNS server (named),
            : which resolves host names to IP addresses; a resolver library
            : (routines for applications to use when interfacing with DNS); and
            : tools for verifying that the DNS server is operating properly.

2)主配置文件格式:

主配置文件

      全局配置段:

           options {…};

      日志配置段:

           logging {…};

      区域配置段:本机能够为哪些zone进行解析,就要定义哪些zone;

           zone {…}

注意:

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

     每个配置语句必须以分号结尾,否则语法错误;


 ★缓存名称服务器的配置:

  • 监听能与外部主机通信的地址;

           listen-on port 53 { any; };

              监听的端口,即那些主机可以进行访问解析,这里表示所有,后面有分号 

           listen-on port 53 { 192.168.16.104;};

              表示监听某一特定的地址

  • 学习使用时建议关闭dnssec

          dnssec-enable  no;

          dnssec-validation no;

          dnssec-lookaside no;

  • 关闭仅允许本地查询

          //allow-query     { localhost; };

配置文件语法检查

       named-checkconf [/etc/named.conf]

主配置文件如下:

[root@centos7 ~]# cat /etc/named.conf  # 查看主配置文件
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {                      # 全局配置段
	listen-on port 53 { any; };
	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     { localhost; };

	/* 
	 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
	 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
	   recursion. 
	 - If your recursive DNS server has a public IP address, you MUST enable access 
	   control to limit queries to your legitimate users. Failing to do so will
	   cause your server to become part of large scale DNS amplification 
	   attacks. Implementing BCP38 within your network would greatly
	   reduce such attack surface 
	*/    # 以上为多行注释
	recursion yes;

	dnssec-enable no;  # 学习使用时建议关闭
	dnssec-validation no;

	/* Path to ISC DLV key */  # 单行注释,在行首加双斜线也可以
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";

	pid-file "/run/named/named.pid";
	session-keyfile "/run/named/session.key";
};

logging {                          # 日志配置段
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {                      # 区域配置段
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

检查语法错误,启动服务,并查看状态:

[root@centos7 ~]# named-checkconf  # 检查语法错误
[root@centos7 ~]# systemctl start named  # 开启服务
[root@centos7 ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2016-10-04 14:49:25 CST; 6s ago
  Process: 1947 ExecStart=/usr/sbin/named -u named $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1944 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 1949 (named)
   CGroup: /system.slice/named.service
           └─1949 /usr/sbin/named -u named

Oct 04 14:49:25 centos7 named[1949]: zone 0.in-addr.arpa/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: zone localhost/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: zone localhost.localdomain/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: all zones loaded
Oct 04 14:49:25 centos7 named[1949]: running
Oct 04 14:49:25 centos7 systemd[1]: Started Berkeley Internet Name Domain (DNS).
Oct 04 14:49:25 centos7 named[1949]: error (network unreachable) resolving './DNSKEY/IN': 2001:7fe::53#53
Oct 04 14:49:25 centos7 named[1949]: error (network unreachable) resolving './NS/IN': 2001:7fe::53#53

查看监听状态:

wKiom1fzaf7QVyrEAACzoq5Hiy0902.png

[root@centos7 ~]# vim /etc/resolv.conf 
  1 # Generated by NetworkManager
  2 nameserver 192.168.16.104  # 把地址换成自己的,也就是说自己把自己的当做DNS服务器
  
 [root@centos7 ~]# ping   # 可以ping通 
PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
64 bytes from 220.181.111.188: icmp_seq=1 ttl=54 time=22.9 ms
64 bytes from 220.181.111.188: icmp_seq=2 ttl=54 time=25.5 ms
64 bytes from 220.181.111.188: icmp_seq=3 ttl=54 time=28.7 ms
64 bytes from 220.181.111.188: icmp_seq=4 ttl=54 time=22.9 ms

3)测试DNS工具:dig,host,nslookup

dig命令

  语法: dig [-t RR_TYPE] name [@SERVER] [query options]

           dig只用于测试dns系统,不会查询hosts文件进行解析

   选项: +[no]trace:跟踪解析过程

           +[no]recurse:进行递归解析

   测试反向解析:

          dig -x IP @SERVER

   模拟完全区域传送:

         dig -t axfr ZONE_NAME @SERVER

         dig -t axfr magedu.com @172.16.100.11

         dig –t axfr 100.16.172.in-addr.arpa @172.16.1.1

host命令

     语法:host [-t type] name [SERVER]

        示例: host –t NS magedu.com @172.16.0.1

nslookup命令:

     语法:nslookup[-option] [name | -] [server]

     交互式模式:

          nslookup>

          server IP: 指明使用哪个DNS server进行查询;默认为/etc/resolv.conf中的

          set q=RR_TYPE: 指明查询的资源记录类型

          NAME: 要查询的名称

dig命令演示:

[root@centos7 ~]# dig -t A   # 测试能否解析 

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28923
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION: # 答案选项
  # 一个别名 
www.a.shifen.com.	300	IN	A	220.181.112.244
www.a.shifen.com.	300	IN	A	220.181.111.188

;; AUTHORITY SECTION: # 权威选项 ,这个别名对应了5台DNS服务器
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com.

;; ADDITIONAL SECTION:  #附加选项 ,显示着5台服务器分别对应的地址
ns1.a.shifen.com.	1200	IN	A	61.135.165.224
ns2.a.shifen.com.	1200	IN	A	180.149.133.241
ns3.a.shifen.com.	1200	IN	A	61.135.162.215
ns4.a.shifen.com.	1200	IN	A	115.239.210.176
ns5.a.shifen.com.	1200	IN	A	119.75.222.17

;; Query time: 89 msec  # 查询指令时长,为89毫秒
;; SERVER: 192.168.16.104#53(192.168.16.104)  # 由哪个DNS服务器进行解析的,这里是有本机进行迭代的方式查询的
;; WHEN: Tue Oct 04 16:27:53 CST 2016
;; MSG SIZE  rcvd: 271

dig跟踪查询命令

[root@centos7 ~]# dig +trace -t A www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> +trace -t A    # 首先查找根 
;; global options: +cmd
.			511977	IN	NS	i.root-servers.net.
.			511977	IN	NS	l.root-servers.net.
.			511977	IN	NS	m.root-servers.net.
.			511977	IN	NS	k.root-servers.net.
.			511977	IN	NS	b.root-servers.net.
.			511977	IN	NS	g.root-servers.net.
.			511977	IN	NS	e.root-servers.net.
.			511977	IN	NS	h.root-servers.net.
.			511977	IN	NS	c.root-servers.net.
.			511977	IN	NS	j.root-servers.net.
.			511977	IN	NS	f.root-servers.net.
.			511977	IN	NS	d.root-servers.net.
.			511977	IN	NS	a.root-servers.net.
;; Received 783 bytes from 192.168.16.104#53(192.168.16.104) in 31 ms

com.			172800	IN	NS	j.gtld-servers.net.  # 其次查找顶级域名
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			86400	IN	DS	30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.			86400	IN	RRSIG	DS 8 1 86400 20161016170000 20161003160000 39291 . WmTN9517zn1fnhOz36UYC1CiDcRwvG+pYVO0wwU4ucOF0dQKgoCTVclv l1qxjuYDgl/XF3hj3lnSQZMQIpGzT48vnMVdJjBkGbySLgqtNjkoL/yO DtZGyY6jxbxYBchx7U6QDkgaC3AQ9o82uClTVPg8N+KFx3TuORDvB/CO sp2/5D0KSMS81/N+PEGemK/wmfHg9t48CGLx/T6+v1oPHP9oxq+vDtSG bRmsHFzrvatrrpttP6wMjNK4x9r07t/apPzKAQvxxzaeISsElpWe62+K zviR6hp7TxKrp4PmtNWul7jwNxvVkcLuzCdhjq44O9sU/bk4UzM+D6fq j4C+9A==
;; Received 865 bytes from 192.36.148.17#53(i.root-servers.net) in 200 ms

baidu.com.		172800	IN	NS	dns.baidu.com. # 在查找子域
baidu.com.		172800	IN	NS	ns2.baidu.com.
baidu.com.		172800	IN	NS	ns3.baidu.com.
baidu.com.		172800	IN	NS	ns4.baidu.com.
baidu.com.		172800	IN	NS	ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20161009044157 20161002033157 27452 com. M41sYMa1AlSgKf/CWelF3cJ4O2uGYGJEWlS1b8b2WlsMKCXnhK/rYlrb FAtAWNcgyzdspmEEZtRcZqLj4x4Oizr3zHPz2EM18IPuDsSdeIIHV70y gwEnInozpTeqk1A0u/fVVSDpfcurgcZcW9bGbu74cLlg9KZ+J2V//br1 +7w=
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN NSEC3 1 1 0 - HQ01H2D8Q0MT897NAE62MCFNM16HPMG6 NS DS RRSIG
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN RRSIG NSEC3 8 2 86400 20161011043201 20161004032201 27452 com. hRWUxUIPqALKCeNnKeycykf5L0ydbvwxF5pyCZ/aKpO6g2f2wSnOGPEI 0sgHxJ57t0nKIYwjnnODkyOAyFl6TJoxIO46jPCi8cEkz+f/jCKtUOdF gxoBdOBez+gQCQ9BlCaTzAg1mgJM00G+9kXcMcQN/4RcnVPhGv0oe6Xp c6E=
;; Received 697 bytes from 192.35.51.30#53(f.gtld-servers.net) in 240 ms

  # 查找的主机 
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com. 
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
;; Received 239 bytes from 220.181.38.10#53(ns4.baidu.com) in 26 ms

host命令演示:

[root@centos7 ~]# host -t A   # 查询IPv4地址资源记录 
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 220.181.111.188
www.a.shifen.com has address 220.181.112.244
[root@centos7 ~]# host -t NS baidu.com  # 查询域名服务器名资源记录
baidu.com name server ns3.baidu.com.
baidu.com name server dns.baidu.com.
baidu.com name server ns7.baidu.com.
baidu.com name server ns2.baidu.com.
baidu.com name server ns4.baidu.com.
[root@centos7 ~]# host -t MX baidu.com  # 查询邮件服务器资源记录
baidu.com mail is handled by 20 mx50.baidu.com.
baidu.com mail is handled by 20 mx1.baidu.com.
baidu.com mail is handled by 20 jpmx.baidu.com.
baidu.com mail is handled by 10 mx.n.shifen.com.

nslookup命令演示:

[root@centos7 ~]# nslookup
> server  # 使用默认的DNS服务器
Default server: 192.168.16.104
Address: 192.168.16.104#53
> set q=A # 查询A记录
>   # 域名 
Server:		192.168.16.104
Address:	192.168.16.104#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 220.181.112.244
Name:	www.a.shifen.com
Address: 220.181.111.188
> exit


3)rndc命令:named服务控制命令

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:状态查询

示例:

[root@centos7 ~]# rndc status
version: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>
CPUs found: 4
worker threads: 4
UDP listeners per interface: 4
number of zones: 101
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

配置一个正向区域

1)配置步骤:

以 magedu.com域为例:

1)定义区域

  • 在主配置文件中或主配置文件辅助配置文件中实现;

         zone "ZONE_NAME" IN {

         type {master主|slave从|hint根|forward转发};

         file "ZONE_NAME.zone";

         };

  • ZONE_NAME:

      表示要解析的域名;正解时就为域名本身,如:magedu.com;反解的时候有固定格式:ip网段反向.in-addr.arpa。

  • type:

        该zone的类型,主要类型有:针对根的hint;主DNS的master,从DNS的slave和专门用于转发的域类型forward,除了根外默认为master

  • file:该zone的文件名称

2)建立区域解析库数据文件(主要记录为A或AAAA)

  • 在/var/named目录下建立区域数据文件;

         现的内容,宏定义,资源记录

示例:文件为/var/named/.magedu.com.zonewKioL1f01UiQnkh3AABJwFshNjk323.png 

  ·权限及属主修改

         chgrup named /var/named/magedu.com.zone

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

  • 主配置文件语法检查,解析库文件语法检查

        named-checkconf 

        named-checkzone ZONE_NAM ZONE_FILE

4)让服务器重载配置文件和区域数据文件

       rndc status|reload;service named reload

实验步骤如下:

1)定义区域

# 编辑配置文件 /etc/named.rfc1912.zones ,在最后添加自己定义的区域
 zone "magedu.com" IN {
         type master;   # 指定zone的类型
         file "magedu.com.zone";  # 该zone的名称
 };

2)建立数据库文件

 # 在/var/named目录下建立定义区域的数据库文件
  1 $TTL 3600  # 这里相当于设置变量TTL的值为3600秒
  2 $ORIGIN magedu.com.  #
  3 @      IN      SOA     ns1.magedu.com.  dnsadim.magedu.com.(
  4                    2016100501
  5                    1H
  6                    10M
  7                    3D
  8                    1D )
  9        IN      NS      ns1
 10        IN      MX   10 mx1
 11        IN      MX   20 mx2
 12 ns1    IN      A       192.168.16.104
 13 mx1    IN      A       192.168.16.105
 14 mx2    IN      A       192.168.16.106
 15 www    IN      A       192.168.16.104
 16 web    IN      CNAME   www
 17 bbs    IN      A       192.168.16.107
 18 bbs    IN      A       192.168.16.108

3)主配置文件语法检查,解析库文件语法检查

[root@centos7 named]# named-checkconf  # 主配置文件语法减产
[root@centos7 named]# named-checkzone magedu.com /var/named/magedu.com.zone #解析库语法减产 
zone magedu.com/IN: loaded serial 2016100501
OK

4)重新加载区域 rndc status|reload;service named reload

[root@centos7 named]# rndc reload # 重新加载
server reload successful
[root@centos7 named]# rndc status
version: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>
CPUs found: 4
worker threads: 4
UDP listeners per interface: 4
number of zones: 102  # 原来是101,现在变为102,加载成功
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

5)测试能否解析

[root@centos7 named]# host -t A www.magedu.com 
www.magedu.com has address 192.168.16.104
[root@centos7 named]# dig -t A www.magedu.com 

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55160
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.magedu.com.			IN	A

;; ANSWER SECTION:
  

;; AUTHORITY SECTION:
magedu.com.		3600	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.		3600	IN	A	192.168.16.104

;; Query time: 0 msec
;; SERVER: 192.168.16.104#53(192.168.16.104)
;; WHEN: Wed Oct 05 13:34:03 CST 2016
;; MSG SIZE  rcvd: 93

6)修改权限(640)和属组

[root@centos7 named]# chown :named magedu.com.zone # 修改属组为named
[root@centos7 named]# chmod o= magedu.com.zone     # 修改权限
[root@centos7 named]# ll
total 20
drwxrwx--- 2 named named   22 Oct  4 14:49 data
drwxrwx--- 2 named named   30 Oct  4 15:06 dynamic
-rw-r----- 1 root  named  491 Oct  5 13:04 magedu.com.zone  
-rw-r----- 1 root  named 2076 Jan 28  2013 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named    6 Nov 20  2015 slaves
[root@centos7 named]# rndc reload  # 重新加载
server reload successful

配置一个反向区域

1)配置步骤:

以 magedu.com域为例:

1)定义区域

  • 在主配置文件中或主配置文件辅助配置文件中实现;

         zone "ZONE_NAME" IN {

         type {master主|slave从|hint根|forward转发};

         file "ZONE_NAME.zone";

         };

  注意:反向区域的名字格式为:反写的网段地址.in-addr.arpa

          如:16.168.192.in-addr.arpa

2)建立区域解析库数据文件(主要记录为PTR记录)

   在/var/named目录下建立区域数据文件;

示例:文件为/var/named/192.168.16.zone

wKiom1f1BtziNyU-AAA9jHBAOpc752.png

 

  ·权限及属主修改

         chgrup named /var/named/192.168.16.zone

         chmod o=  /var/named/192.168.16.zone

  • 主配置文件语法检查,解析库文件语法检查

        named-checkconf 

        named-checkzone ZONE_NAM ZONE_FILE

3)让服务器重载配置文件和区域数据文件

       rndc status|reload;service named reload

实验如下:

1)定义区域:

# 编辑主配置文件/etc/named.rfc1912.zones,在最后添加反解的区域
 zone "16.168.192.in-addr.arpa" IN {
          type master;
          file "192.168.16.zone"; 
 };

2)建立数据库文件

# 在/var/named下建立反向解析的数据可文件
  1 $TTL 3600
  2 $ORIGIN  16.168.192.in-addr.arpa.
  3 @       IN      SOA     ns1.magedu.com  nsadmin.magedu.com. (
  4                 2016100501
  5                 1H
  6                 10M
  7                 3D
  8                 12H )
  9         IN      NS      ns1.magedu.com.
 10 104     IN      PTR     ns1.magedu.com.
 11 105     IN      PTR     mx1.magedu.com.
 12 106     IN      PTR     mx2.magedu.com.
 13 107     IN      PTR     bbs.magedu.com.
 14 108     IN      PTR     bbs.magedu.com.
 15 104     IN      PTR     www.magedu.com.

3)修改属组和权限

[root@centos7 named]# chgrp named 192.168.16.zone 
[root@centos7 named]# chmod 640 192.168.16.zone 
[root@centos7 named]# ll
total 24
-rw-r----- 1 root  named  334 Oct  5 21:21 192.168.16.zone  # 修改后的属组和权限
drwxrwx--- 2 named named   22 Oct  4 14:49 data
drwxrwx--- 2 named named   58 Oct  5 19:00 dynamic
-rw-r----- 1 root  named  491 Oct  5 13:04 magedu.com.zone
-rw-r----- 1 root  named 2076 Jan 28  2013 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named    6 Nov 20  2015 slaves

4)主配置文件语法检查,解析库文件语法检查

[root@centos7 named]# named-checkzone 16.168.192.in-addr.arpa /var/named/192.168.16.zone 
zone 16.168.192.in-addr.arpa/IN: loaded serial 2016100501
OK
[root@centos7 named]# named-checkconf

5)重新加载区域 rndc status|reload

[root@centos7 named]# rndc reload
server reload successful
[root@centos7 named]# rndc status
version: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>
CPUs found: 4
worker threads: 4
UDP listeners per interface: 4
number of zones: 103  # 可以看到又增加了一个区域
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

6)测试能否反向解析

[root@centos7 named]# dig -x 192.168.16.104 @192.168.16.106

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -x 192.168.16.104 @192.168.16.106
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33654
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;104.16.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
104.16.168.192.in-addr.arpa. 3600 IN	PTR	ns1.magedu.com.
104.16.168.192.in-addr.arpa. 3600 IN	PTR	www.magedu.com.

;; AUTHORITY SECTION:
16.168.192.in-addr.arpa. 3600	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.		3600	IN	A	192.168.16.104

;; Query time: 0 msec
;; SERVER: 192.168.16.106#53(192.168.16.106)
;; WHEN: Wed Oct 05 21:49:08 CST 2016
;; MSG SIZE  rcvd: 132

主从DNS服务器

注意:从服务器是区域级别的概念

1)配置一个从区域步骤:

On Slave(在从服务器上)

  1)定义区域

        定义一个从区域:

           ·zone "ZONE_NAME" IN {

                   type slave;

                   file "slave/ZONE_NAME.zone"; 放在slave目录下

                   masters {MASTER_IP;};

                   }; 

          ·配置文件语法检查:named-checkconf

 2)重载配置

      rndc reload

      systemctl reload named.service

示例:

  vim /etc/named.rfc1912.zones  # 编辑从服务器的配置文件,添加区域
  zone "magedu.com" IN {
          type slave;
          file "slave/magedu.com.zone"; # 放在slave目录下
          masters { 192.168.16.104;}; # 一定要指向主服务器的IP
 }; 
 # 注意:这里不需要配置从服务器的解析数据库文件,接下来只需要在主服务器上添加从服务器的NS记录和对应的A记录即可


On Master(在主服务器上

    1)确保区域数据文件中为每个从服务器配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址。

    2)解析库文件语法检查

    named-checkzone ZONE_NAM ZONE_FILE

    3)重载配置

示例:

  vim /var/named/magedu.com.zone # 编辑主服务器的数据库文件
  ns2   IN   A   192.168.16.105  # 添加从DNS服务器对应的IP地址
  # 注意:修改完数据库文件之后,序列号一定要加1,这样从服务器才能检查到

  4)可以手动进项测试

   # dig -t axfr magedu.com @192.168.16.104(主服务器地址,表示主服务器到从服务器的全量传送)

注意:

  • 从服务器应该为一台独立的名称服务器(安装bind程序,编辑配置文件为缓存名称服务器,然后检查语法,启动服务器)

  • 主服务器的区域解析库文件中必须有一条NS记录指向从服务器

  • 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中

  • 主服务器得允许从服务器作区域传送

  • 主从服务器时间应该同步,可通过ntp进行;

  • bind程序的版本应该保持一致;否则,应该从高,主低。

  • 主名称服务器数据库修改完之后一定要使相应的序列号加1,这样从服务器才可以检测到并及时更新,并且重载

 时间同步;

   任何在分布式环境中,让多台服务器基于某一种特定应用同时协调的内容、进程或服务,都应该做时间同步。

      ntpdate命令,时间服务器如下:

          time.nist.gov

          time.nuri.net
          0.asia.pool.ntp.org
          1.asia.pool.ntp.org
          2.asia.pool.ntp.org
          3.asia.pool.ntp.org

[root@CentOS6 ~]# ntpdate time.nuri.net
 6 Oct 17:04:01 ntpdate[2651]: adjust time server 211.115.194.21 offset 0.002132 sec
 [root@centos7 ~]# ntpdate 1.asia.pool.ntp.org
 6 Oct 17:10:54 ntpdate[1479]: adjust time server 202.65.114.202 offset -0.167026 sec

子域授权

 注意:

   1)我们注册了二级域名之后,域名服务商会提供给我们DNS服务器(群租),我们只需在其二级域下添加相应的主机记录(如web服务器的别名www,对应的ip地址)即可完成解析,但如果公司的部门很庞大,为了方便管理,需要单独对一个部门添加一个域名,这时,就需要在其二级域下添加一个三级域(如:ops.magedu.com.),而添加的三级域必须要经过上一级授权才可以。

  2)ops.magedu.com.是一个三级域,www.ops.magedu.com.是三级域中的web服务器的别名;而 magedu.com 是一个二级域,www.magedu.com是一个二级域中web服务器的别名;

注意一定不要搞混淆了,虽然别名相同但域的级别不同。

  3)每一个域名都必须要有与之对应的名称服务器才可以解析。

1)子域:

  • 子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权

  • 类似根域授权tld:

               .com.      IN     NS     ns1.com.

               .com.      IN     NS     ns2.com.

               ns1.com.  IN      A     2.2.2.1

               ns2.com.  IN      A    2.2.2.2

  • magedu.com. 在.com的名称服务器上,解析库中添加资源记录:

             magedu.com.      IN    NS     ns1.magedu.com.

             magedu.com.      IN    NS     ns2.magedu.com.

             magedu.com.      IN    NS     ns3.magedu.com.

             ns1.magedu.com. IN    A      3.3.3.1

             ns2.magedu.com. IN    A      3.3.3.2

             ns3.magedu.com. IN    A      3.3.3.3

  • glue record:粘合记录,父域授权子域的记录

2)互联网域名:

  • 域名注册:

        代理商:万网, 新网;godaddy

  • 注册完成以后,想自己用专用服务来解析

        管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址


 阿里云DNS

wKioL1f3MJfS6CchAALpknnmzic885.png

wKioL1f3MJiQOIngAAJ3TPU63W0559.png

  

     这个域名是在阿里云注册的.com域名,这个管理界面就是向.com域名服务器授权来查询的。这是在wen界面进行的子域授权管理,及资源记录管理,那在DNS的配置文件中也很容易去配置实现子域授权,如下:

3)正向解析区域授权子域的方法:

★原理:

     在本域名服务器上的正向解析库文件当中定义子域对应的DNS服务器的主机名和A记录即可。

★方法:

     ops.magedu.com.      IN   NS   ns1.ops.magedu.com. (三级域的DNS服务器名)

     ops.magedu.com.      IN   NS   ns2.ops.magedu.com.

     ns1.ops.magedu.com. IN   A    IP.AD.DR.ES (服务器对应的ip地址)

     ns2.ops.magedu.com. IN   A    IP.AD.DR.ES


具体步骤如下:

  1)首先要在父域(二级域)的主DNS服务器上授权    

  # 编辑父域的解析数据库文件
    vim /var/named/magedu.com.zone
  #添加授权子域的NS和A记录
    ops.magedu.com.      IN   NS   ns1.ops.magedu.com.
    ns1.ops.           IN   A    192.168.1.108

   注意:

      每次修改解析数据库文件之后都要使序列号加1,这样从服务器才能够检测到序列号不一致,并及时更新从DNS服务器

      修改完之后保存退出并重载(# rndc reload)


 2)接下来配置子域服务器,其配置过程和之前的任何一个DNS服务器是一样的(安装bind程序,配置配置文件,定义手动添加区域解析库文件)如下:

  •  首先安装bind程序;

         # yum install bind -y

  • 编辑配置文件/etc/named.conf,以缓存名称服务器的方式启动起来;

        ①全局配置段: options { any; };

        ②关闭dnssec

       ③关闭仅允许本地查询  //allow-query { localhost; };

        ④语法检查:named-checkconf [/etc/named.conf]

        ⑤启动服务,并查看状态 :systemctl start|status named

        ⑥检查53号端口是否启动:netstat -tunlp

  • 配置其成为ops子域的主DNS域名服务器

        ①编辑 /etc/named.rfc1912.zones ,新增加一个区域

# vim /etc/named.rfc1912.zones ,在最后添加自己定义的区域
 zone "ops.magedu.com" IN {
         type master;   # 指定zone的类型
         file "ops.magedu.com.zone";  # 该zone的名称
 };

       ②建立授权子域的区域解析库文件

  # vim /var/named/ops.magedu.com.zone  建立定义区域的数据库文件
  1 $TTL 3600  
  2 $ORIGIN ops.magedu.com.  #
  3 @      IN      SOA     ns1.ops.magedu.com.  dnsadim.ops.magedu.com.(
  4                    2017100501
  5                    1H
  6                    10M
  7                    3D
  8                    1D )
  9        IN      NS      ns1
 10 ns1    IN      A       192.168.16.108
 11 www    IN      A       192.168.16.108
  • 权限及属主修改

         # chgrup named /var/named/ops.magedu.com.zone

         # chmod o=  /var/named/ops.magedu.com.zone

  • 主配置文件语法检查,解析库文件语法检查

         # named-checkconf 

         # named-checkzone  ops.magedu.com  /var/named/ops.magedu.com.zone

  • 重新加载区域

         # rndc status|reload;

  • 测试能否解析

转发服务器

注意:被转发的服务器必须要能够为请求者做递归,否则转发请求不予进行;

区域转发:仅转发对特定区域的解析请求,比全局转发优先级高;

  • 格式:

       zone "ZONE_NAME" IN {

            type forward;

            forward {first|only};       转发方式

            forwarders { SERVER_IP;};  定义转发给的服务器ip

       };

     first:首先转发;转发器不响应时,自行去迭代查询;

     only:只转发

  •  注意:

         如果不定义区域转发的话,子域要查找上一级就会先去找根再一步步查找,如果定义了区域转发(被转发的服务器为上一级的),子域就可以直接查找上一级而不通过查找根(比喻:家丑不可外扬)。


全局转发: 针对凡本地没有通过zone定义的区域查询请求,全转发给指定的可以访问互联网的服务器;

      Options {

           …..

           forward first|only;

           fowarders{ SERVER_IP;};

           …..

        };

    先去找 zone中定义的,如果没有就全局转发(比如:子域首先定义了区域转发,这样仅能查询自己的上一级,但之外的比如www.baidu.com是查询不了的;但是自己的父域是可以访问互联网的,这样就可以定义所有自己访问不了的统统转发给父域)


示例:

以子域授权为例,定义区域转发,子域查找上一级

 vim /etc/named.rfc1912.zones  # 编辑配置文件,新增加一个区域
 zone "magedu.com" IN {
            type forward;
            forward  only;     # 只是内部使用,不需要迭代
            forwarders { 192.168.16.108; }; # 定义父域DNS服务器的ip,如果有从服务器也写上
       };

 定义全局转发:

 vim /etc/named.conf  # 编辑named.conf文件,在options全局配置段中添加
options {
	listen-on port 53 { any; };
	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";
	forward only  
	forwarders { 192.168.1.108; }; # 表示只要是自己不负责的统统转发给192.168.1.108
	//allow-query     { localhost; };

bind中安全的相关配置

1)bind中的acl访问控制列表

acl: 

    把一个或多个地址归并为一个集合,随后通过此名称即可对此集全内的所有主机实现统一调用;

    格式:

        acl acl_name{

            ip;

            net/prelen;

            ……

        };

  示例:

      acl mynet{

         172.16.0.0/16;

         127.0.0.0/8;

       };

bind有四个内置的acl:

  • none: 没有一个主机

  • any: 任意主机

  • localhost: 本机

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

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

2)控制访问指令

访问控制的指令

  • allow-query {}:允许查询的主机;白名单;默认是所有主机,如果有的话只有定义在里面的才可以查询

  • allow-transfer {}:允许向那些主机做区域传送;默认为向所有主机,应该配置为仅允许从服务器;

  • allow-recursion {}: 允许那些主机向当前DNS服务器发起递归查询请求;

  • allow-update {}: DDNS,允许动态更新区域数据库文件中的内容


bind view

  • view:视图,一个bind服务器可定义多个view,每个view中可定义一个或多个zone,

每个view用来匹配一组客户端;

  • 多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件

  • 格式:

        view VIEW_NAME {

             zone

             zone

             zone

        };

  示例:

     

  view internal {
             match-client { 172.16.0.0/8; };
             zone "magedu.com" IN {
                  type master;
                  file "magedu.com/internal";
              };
        };
       
   view external {
              match-client { any; };
             zone "magedu.com" IN {
                 type master;
                 file "magedu.com/external";
              };
         };

  • 注意:

      (1) 一旦启用了view,所有的zone都只能定义在view中

      (2) 仅在允许递归请求的客户端所在view中定义根区域

      (3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表

  • CDN: Content Delivery Network

  • 智能DNS:

        dnspod

        dns.la


 

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

(0)
zhumengxiaotaozhumengxiaotao
上一篇 2016-10-10
下一篇 2016-10-10

相关推荐

  • 第九周作业

    1. 写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; # awk -F: ‘{if($7!=”/sbin/nologin”) {printf “Logined user %s\n”…

    Linux干货 2017-03-01
  • 日志管理

    rsyslogd的相关介绍,journalctl的相关介绍和日志的转储

    2018-02-05
  • Linux命令帮助文档的使用及简单命令使用-2016-7-25

    Linux命令帮助文档的使用   相关命令 whatis    COMMAND –help    man and info 本地帮助文档/usr/share/doc   在使用系统内建的帮助文档之前,我们需要了解需要命令帮助是否是内部命令和外部命令…

    Linux干货 2016-08-04
  • MAN 手册各章节功能及快捷键键位介绍

      man命令在linux下属于一种帮助命令,man手册提供了比较齐全的帮助格式,它大致分为8个章节 一.各个章节如下 1 – commands 1-普通的命令 (用户命令,  可由任何人启动的) 2 – system calls 2-系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函…

    Linux干货 2016-10-17
  • 马哥教育21期网络班—第15周课程+练习

    2、删除/boot/grub/grub.conf文件中所有行的行首的空白字符; sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf 3、删除/etc/fstab文件中所有以#开头,后跟至少一个空白字符的行的行首的#和空白字符; sed 's@^#[[:spac…

    Linux干货 2016-11-14
  • 第十周 N21 总有刁民想害朕

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)   加电-MBR-GRUB-/sysinit-init X 对应的服务-/etc/rc.d     MBR        读取分区表     GRUB      &…

    Linux干货 2016-09-26

评论列表(1条)

  • dawning
    dawning 2016-11-09 09:09

    师兄,你的博客写的太好了。内容和排版都让我望尘莫及。
    同为马哥学员,真是惭愧。
    请教一下:你用的是什么编辑器写的博客?我也学学排版。