1. bind服务

1.1 bind概述

BIND 是由美国加州大学开发并且维护的,BIND是一个开源、稳定、且应用广泛的DNS服务。

  • 开源:指 BIND 服务源代码是开放的;
  • 稳定:指 BIND 服务运行非常稳定;
  • 广泛:政府企业、单位机构、学校、等;

BIND提供域名解析服务、权威域名服务、DNS调试工具:

  • 域名解析服务:将域名解析为IP地址;
  • 权威域名服务:能从该服务器查询到完整域名对应的IP地址,则这台服务器就算权威解析;
  • DNS调试工具:主要提供DNS客户端调试工具,供客户端使用;

1.2 bind程序包结构

  • 安装bind

    [root@dns01 ~]# yum install bind bind-utils
    
    [root@dns01 ~]# rpm -q bind
    bind-9.11.4-16.P2.el7.x86_64

    其中:

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

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

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

  • bind包文件:

    • bind的system的unit文件:

      /usr/lib/systemd/system/named.service

    • bind主配置文件:

      /etc/named.conf

    • 主程序文件:

      /usr/sbin/named

    • bind子配置文件:

      /etc/named.rfc1912.zones

    • 区域解析数据库文件,也就是IP地址与域名的对应关系存放的目录:

      /var/named

  • bind的日志文件默认存放在/var/log/messages文件中。

1.3 bind配置文件详解

1.3.1 bind配置文件

1.3.1.1 bind主配置文件
  • 主配置文件组成部分::

    • options {} :全局选项(监听端口、数据文件存储位置、缓存位置、权限等)
    • logging {} :服务日志选项
    • zone . {} :自定义区域配置
    • include :包含其他的文件
  • 主配置文件注意事项

    • 语法非常严格;
    • 文件权限属主 root ,属组 named ,文件权限 640;
  • 配置文件各个字段意义:

    [root@dns01 ~]# cat /etc/named.conf
    options {
    #监听的地址和端口,localhost表示监听在本机所有地址上;
    listen-on port 53 { localhost; };
    listen-on-v6 port 53 { ::1; };
    #区域数据库文件存放的目录;
    directory "/var/named";
    #dns解析过内容的缓存文件
    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";
    recursing-file "/var/named/data/named.recursing";
    secroots-file "/var/named/data/named.secroots";
    #允许谁向本台DNS发起查询请求(localhost|ip|any);
    allow-query { any; };
    #本DNS是否提供递归请求服务,yes表示提供,no表示不提供;
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes; /* Path to ISC DLV key */
    bindkeys-file "/etc/named.root.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;
    };
    };
    #默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器;
    zone "." IN {
    type hint;
    #区域配置文件名称;
    file "named.ca";
    };
    #包含的其他文件;
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
1.3.1.2 bind区域配置文件

可以使用bind来解析自定义的的域名,需要配置自定义的区域解析文件。

自定义域分为如下两类:

  • 主机域:

    • 1.主机域其实是一个假域;
    • 2.主机域其实是不能解析到互联网上;
    • 3.主机域它只对局域网(内网)提供服务;
  • 业务域:
    • 1.业务域一般都是真实可用的;
    • 2.业务域则为一个真正需要对外提供服务的域名;

首先要自定义区域配置文件,指明区域解析文件的名称:

  • 区域 zone 文件定义在 /etc/named.conf 配置;

  • 也可以配置在自定义的其他文件里,并在 named.conf 里 include;

  • 注意文件的权限,属主 root 属组 named 文件权限 640;

    zone "example.com" IN {
    type master|slave;
    #自定义区域类型
    file /path/to/zonefile;
    #绝对路径和相对路径
    allow-update {ip|none};
    #允许哪个ip可以使用nsupdate动态更新 区域文件
    };

1.3.2 区域解析文件

  • 自定义的区域数据库解析范例以及编写注意事项:

    • 1.严格注意语法书写,其格式非常严格;
    • 2.记录不准许折行书写;
    • 3.单行记录开头不准许空格或tab开头;
    • 4.文件权限属主 root ,属组 named ,文件权限 640;
  • 资源记录语法格式

    区域数据库解析文件是由资源记录RR组成的,不论哪种记录都包含五项元素,其语法格式如下:

    语法:name [TTL] IN rr_type value
    
    元素说明:
    name 指示拥有资源记录的 DNS 域名,该名称与资源记录所在的控制台树节点的名称相同
    TTL 缓存的时间,生命期,以秒为单位,可定义为类似变量$TTL 86400,那么以下各条相同时间的资源记录就可以省略
    IN 代表Internet,保留下来不动就可以
    rr_type 资源记录类型,例如SOA,表示起始授权记录
    value 记录特定数据,描述资源的信息

    注意:

    • @代表当前区域的域名,可以用来引用当前域名,例如@ IN SOA;

    • 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应

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

1.3.2.1 SOA记录

SOA记录位于解析文件的开始,每个解析文件都有唯一一个SOA记录,用于描述这个区域的整体信息,格式如下:

$TTL 86400     <==定义整个记录的TTL时间为86400	

|example.com. | IN | SOA | ns.example.com. | nsadmin.example.com.| (
| name | IN |TYPE| value 1 | value 2 |
2021071501 ;serial <==value 3
2H ;refresh <==value 4
10M ;retry <==value 5
1W ;expire <==value 6
1D ) ;negative answer ttl <==value 7

以上的元素意义如下:

元素 意义
name 当前区域的名字,例如“example.com.” com后的点必须写,不然系统会自动将域名再补一次,变成"example.com.example.com."
type 资源类型为SOA类型
value1 主DNS的名称,例如ns.example.com.
value2 DNS服务器的管理员邮箱,注意:因为@在资源记录中有特殊含义,这里用点来代替,例如nsadmin.example.com.
value3 序列号(serial number) 十进制表示,不能超过10位,通常使用日期时间戳,例如2021071501;其作用是主从同步,当主DNS服务器的解析文件发生变化时,管理员需要手动更新此序列号的值,主服务器比对主从的序列号不一致,会立刻进行主从同步操作,否则会等待刷新时间到了才由从服务器同步主服务器数据。
value4 刷新时间,表示从服务器从主服务器请求同步解析的时间间隔,默认以秒为单位,支持1h、1d表示,例如:2H。
value5 重试时间,表示从服务器请求同步失败时,再次尝试同步的时间间隔,应该比同步间隔小 ,例如10m。
value6 过期时间,表示从服务器联系不到主服务器时,辅助DNS在多长时间内认为其缓存是有效的, 例如1W。
value7 否定答案的TTL值,表示不存在的记录缓存时长, 将不正确的域名缓存起来,直接返回结果给用户,不需要查询。
1.3.2.2 NS记录

NS记录的格式如下:

|   name    | TTL | IN |  TYPE |      value     |
|example.com.|86400| IN | NS | ns1.example.com.|
|example.com.|86400| IN | NS | ns2.example.com.|

以上的元素意义如下:

元素 意义
name 当前区域的域名
type 类型为NS
value 当前区域的某DNS服务器的域名,例如ns1.example.com.

注意:

  • 一个区域可以有多个NS记录,表示主从关系;

  • 相邻的两个资源记录的name相同时,后续的可省略;

  • 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录,用于告知客户端DNS的地址。

    ns1.example.com.   86400  IN  A  192.168.169.5
    ns2.example.com. 86400 IN A 192.168.169.6
1.3.2.3 A记录和AAAA记录

A 记录可实现将域名解析为 IPV4 地址,AAAA记录可实现将域名解析为 IPV6 地址,两者格式相同:

www.example.com.		IN 	A	1.1.1.1
www.example.com. IN A 1.1.1.2

以上的元素意义如下:

元素 意义
name FQDN,即域名
type 类型为A或AAAA
value 某IPv4地址或IPV6地址;
1.3.2.4 CNAME记录

CNAME为别名记录,格式如下:

www.example.com.   86400  IN   CNAME   www.example1.com.

以上的元素意义如下:

元素 意义
name FQDN,即域名
type CNAME
value 真正名字的FQDN

注意:

  • 涉及到名字,也需要在A记录中增加对应的解析记录,例如:

    www.example1.com.   86400  IN   A   101.200.188.230
1.3.2.5 PTR记录

PTR记录为逆向解析记录,由IP地址解析域名,示例:

#表示把1.2.3.4的IP地址解析为www.example.com.域名
4.3.2.1.in-addr.arpa. 86400 IN PTR www.example.com. #注意:网络地址及后缀可省略;主机地址依然需要反着写
4 86400 IN PTR www.example.com.

以上的元素意义如下:

元素 意义
name IP,有特定格式,把IP地址反过来写(例如1.2.3.4,要写作4.3.2.1);然后加特定后缀:in-addr.arpa.;所以完整写法为:4.3.2.1.in-addr.arpa.
type PTR
value FQDN
1.3.2.6 MX记录

MX为区域的邮件记录,一个区域内MX记录可有多个,示例如下:

example.com.  86400 IN  MX  10  mail.example.com.
86400 IN MX 20 mail2.example.com. <==name相同,下面的记录可以忽略此元素 #涉及到名字,需要在A记录中增加对应解析项:
mail 86400 IN A 3.3.3.3 <==mail为简写,其后没有加[ . ],会自动补上域名
mail2 86400 IN A 3.3.3.4

以上的元素意义如下:

元素 意义
name 当前区域的名字
type MX
value 当前区域的某邮件服务器(smtp服务器)的主机名,由2部分组成:1.服务器的优先级,由数字(0-99)表示,表示此;数字越小优先级越高;2.服务器名;

DNS(2) -- bind服务介绍及配置文件语法格式的更多相关文章

  1. centos7 主从dns配置 bind服务

    一,配置前请先关闭防火墙selinux 防火墙关闭方法,参见上一篇文章. setenforce 0    #临时关闭 修改/etc/selinux/config 文件  将SELINUX=enforc ...

  2. 玩转DNS服务器——Bind服务

    合理的配置DNS的查询方式 实验环境: 虚拟机:VMware® Workstation 15 Pro 均使用NAT连接   网段为192.168.1.0/24 DNS 服务器 ---- Centos ...

  3. Apache服务介绍

    http服务器程序 httpd             服务名称 apache         软件包名 特性: 高度模块化:   core + modules DSO:  Dynamic Share ...

  4. DNS与BIND介绍

    前言 DNS(Domain Name System),网域名称系统,是互联网上基础性的服务.DNS 将域名和网络服务器的 IP 地址相互映射,并将这些数据保存至 DNS 服务器.两台主机通信事实上是依 ...

  5. CentOS6.7搭建部署DNS服务 (详解主配置文件)

    -DNS服务器的基本原理 域名简介:使用tcp/udp协议,默认使用53端口号 默认情况下,客户端发起的查询请求都是用UDP/53查询的. 默认情况下,从从服务器到主服务器传输数据用的是TCP/53. ...

  6. 《linux就该这么学》第十四节课:第13章,部署DNS域名解析服务(bind服务)

    (借鉴请改动)  第十二章收尾  12.2.nfs网络文件系统 RHEL7默认安装了nfs,配置文件在  /etc/export  写入格式:共享目录    允许的客户端(参数)  ro        ...

  7. 使用Bind服务配置DNS服务器

    bind是什么 bind是DNS服务器软件 ,他的服务名称是named 功能区分: 正向解析:根据主机名查找对应的IP地址 反向解析:根据IP地址查找对应的主机名(域名) 工作形式上区分: 主服务器: ...

  8. DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置

    DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置 一.DNS简介 1.DNS    DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库 ...

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

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

  10. Debian9.5系统DNS服务器BIND软件配置说明

    DNS的出现的历史 网络出现的早期是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和W ...

随机推荐

  1. 【已解决】Windows环境下redis启动失败

    在redis安装目录下打开cmd窗口: 依次输入: redis-cli.exe shutdown exit redis-server.exe redis.windows.conf ps:启动失败可能是 ...

  2. 初识Hbase架构以及数据读写(尚硅谷)

  3. SpringSecurity认证和授权流程详解

    什么是SpringSecurity Spring Security是一个Java框架,用于保护应用程序的安全性.它提供了一套全面的安全解决方案,包括身份验证.授权.防止攻击等功能.Spring Sec ...

  4. CSP2019-S2总结

    目录 前言 洛谷 5657 格雷码 代码(找规律) 洛谷 5658 括号树 分析 代码 洛谷 5659 树上的数 洛谷 5664 Emiya 家今天的饭 洛谷 5665 划分 分析 代码 洛谷 566 ...

  5. Git 版本控制系统的完整指南

    什么是 Git? Git 是一个流行的版本控制系统.它是由 Linus Torvalds 于 2005 年创建的,自那时以来由 Junio Hamano 维护. 它用于: 跟踪代码更改 跟踪谁做出了更 ...

  6. 【版本发布公告】HMS Core6.5.0来啦

    新 能 力 3D Engine 3D Engine提供高性能.高画质.高扩展性的实时3D引擎,并提供便捷高效的可视化开发工具.开发者可基于华为的3D Studio开发工具,通过图形和渲染.动画.UI等 ...

  7. Apollo+ES源码改造,构建民生银行的ELK日志平台配置管理中心【转载】

    Apollo+ES源码改造,构建民生银行的ELK日志平台配置管理中心 原创 高效开发运维 架构头条 2019-02-28 作者 | 中国民生银行大数据基础平台运维组团队 编辑 | 张婵 随着 IT 业 ...

  8. docker 应用篇————dockerfile[十四]

    前言 简单介绍一下dockerfile. 正文 dockerfile就是docker image的构建文件. 然后来运行一下. 然后就产生了test:1.0 这个镜像. 然后启动一下你就发现了这个镜像 ...

  9. 重新点亮linux 命令树————screen 命令和系统日志[二十四]

    前言 简单介绍一下screen 正文 因为我们终端关闭后,终端就消失了,故而希望有终端保持. 1.yum install screen 进行安装. 2.使用screen 进行进入 3.然后打开tail ...

  10. 为什么我要写spring.factories文件?

    在阅读spring-boot相关源码时,常常见到spring.factories文件,里面写了自动配置(AutoConfiguration)相关的类名,因此产生了一个疑问:"明明自动配置的类 ...