BIND9配置文件详解

BIND9配置文件详解参考 ISCBIND9 最详细 最认真的从零开始的 BIND9 DNS 服务搭建及其原理讲解一 conf 文件中字段详解 1 acl 一般来说 ACL 模块用来承担控制主机可以访问域名解析服务器的角色 其设置不会让控制文件的配置非常冗余和庞大 采用这个配置可以有效防范 DOS 以及 Spoofing 攻击 一般来说定义这部分的内容来规定 IP 是否能够被接入以及 Blacklist 来阻止某些特定的 IP 地址介入到域名解析服务器中 ACL 匹配客户端是否能够接入到域名服务器基于三个基本的特征 客户端的 IPv4

参考ISC BIND9 – 最详细、最认真的从零开始的 BIND 9 – DNS服务搭建及其原理讲解

一、conf文件中字段详解

1. acl

  一般来说,ACL模块用来承担控制主机可以访问域名解析服务器的角色,其设置不会让控制文件的配置非常冗余和庞大。采用这个配置可以有效防范DOS以及Spoofing攻击。一般来说定义这部分的内容来规定IP是否能够被接入以及Blacklist来阻止某些特定的IP地址介入到域名解析服务器中。

ACL匹配客户端是否能够接入到域名服务器基于三个基本的特征:

  • 客户端的IPv4或者IPv6地址
  • 用于签署请求的 TSIG 和 SIG(0) 密钥
  • 在DNS客户端子网选项中编码的前缀地址

匹配 acl 定义以及使用规则如下:

string 是用来命名IP地址集的一个变量名,可以随意地被命名;

acl <string> { 
    <address_match_element>; ... }; 

举一个在 named.conf.options 文件中被定义的例子:

acl bogusnets { 
    0.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; }; // 这个部分 // Set up an ACL called our-nets. Replace this with the // real IP numbers. acl our-nets { 
    172.16.2.11/24; 172.16.2.12/24; }; //子网的名称 

2.logging

  logging 部分的配置为DNS解析服务器提供了日志记录的功能,DNS服务器上的所有日志记录被存储到了指定的文件中。其通用的配置文件为:

logging { 
    category <string> { 
    <channel_name_string>; ... }; channel <string> { 
    buffered <boolean>; file <quoted_string> [ versions ( unlimited | <integer> ) ] [ size <size> ] [ suffix ( increment | timestamp ) ]; null; print-category <boolean>; print-severity <boolean>; print-time ( iso8601 | iso8601-utc | local | <boolean> ); severity <log_severity>; stderr; syslog [ <syslog_facility> ]; }; }; 

  从上边的通用配置格式可以看出来,logging 模块分为两个部分,category 和 channel,channel的作用是指定输出的方式、日志格式的选项和事件的严重性,每一个channel 可以指定一个 category 来指定记录的事件类型。其中 category 用来区分不同的事件产生的类别或者场景,比如:客户端请求-client request、配置文件解析处理-Configuration file parsing and processing。

  如果在 named.conf.options 文件中没有指定 logging 模块系统会给出一个默认的配置

logging { 
    category default { 
    default_syslog; default_debug; }; category unmatched { 
    null; }; }; 

channel 的配置规则:

  所有的日志输出都需要 channel 来指定输出格式,BIND9 对于创建 channel 的数量没有限制。

  每一个 channel 都需要为该通道的日志信息指定一个 destination clause – 目的句柄,目的句柄在 channel 阶段被配置,这个目的句柄用来区分:

  • 输出到具体的文件的名字 – file;
  • 输出到具体的系统日志工具中(syslog/syslogd)- syslog;
  • 输出到终端显示- 标准错误流(standard error stream);
  • 或者该错误消息直接被丢弃 – null。

  其次,channel 的配置可以规定每一个错误日志消息的响应级别,默认的响应级别是info ,channel 可以规定接受错误消息的级别;此外,channel 还可以控制输出错误日志消息的格式,可以包含:响应时间戳、category名字、严重等级等。

channel 的配置参数:

  • buffered: 用来规定是否刷新错误日志的文件,其参数值为,在 BIND9 中 值的参数值为 yes / no,如果设置成为 yes 那么日志消息流(一般每一个错误日志消息都是一个 Log Entry)就不会刷新,而是被保存在缓冲区中了,不会刷新到文件中。
  • file:类似于Linux的通道概念,file 将日志输出流通过通道直接输出给文件,从上边的通用配置可以看出来可以为 file 指定文本文件的大小 – size ;指定 log 文件的版本号 – version;指定用于命名备份版本的格式 – suffix
    • size 用来限制log文件的大小,如果log文件的大小设置超过了设定的阈值,那么系统会自动停止输出内容到文件中;
    • versions:用于指定新创建的 log文件数存储到本地的上限值,默认的参数值为unlimited,当指定的文件的大小超过设定的size值得时候,如果没有指定 versions,那么系统就不会继续写进log;如果制定了versions,那么就会继续写入;
    • suffix :设定用来命名log文件的方式;好像没啥用,我添加这个参数没有什么反应…;
  • syslog:将通道定向到系统的日志文件流中; 常用的支持日志文件服务为:dameon、syslog、local6、local7;
  • severity:用来承担定义日志严重级别的定义角色,相当于 syslog – priorities。比如说定义了日志的严重级别为 Debug,那么会输出日志事件 Debug 以上的错误到文件中。一般常用的严重等级: debug[level]、notice、warning、dynamic – 与当前服务器的日志保持一致;一般的 DNS服务器的日志等级调成 info即可;
  • stderr:将通道指向服务器的标准错误流。这是为了在服务器作为前台进程运行时使用;
  • print-time:yes / no / local / iso8601 / iso8061-utc 可以设定不同的输出到日志文件的时间格式;
  • print-category:打印日志消息配置category 的信息;
  • print-severity:打印日志的严重等级

category词组配置规则:

category <config_string> { 
    <channel_name_string>; ... }; 
  • client:客户端请求;
  • cname:由于是CNAME而不是a /AAAA记录 的域名服务器;
  • config:配置文件解析和处理过程;
  • database:与名称服务器内部用于存储区域和缓存数据的数据库相关的消息;
  • general:没有被归类的 category 类别的其他种类的日志文件信息;
  • lame-servers:远程服务器中的错误配置,BIND 9在解析期间试图查询这些服务器时发现;
  • network:网络操作;
  • notify:通知协议;
  • queries:记录所有查询 DNS服务器的 query;
  • query-errors:关于导致某些失败的查询的信息;
  • xfer-in:区域传输服务器正在接收;
  • xfer-out:区域传输服务器正在发送的信息;
  • zoneload:加载区域和创建自动空区域;

  配置的 logging 服务会创建指定的日志文件,该日志文件从服务挂起的时候被创建,用于记录DNS服务中的相关的配置信息以及交换信息。在 Debian9 的默认存储目录为 /var/cache/bind/*。你也可以为其指定存储的位置。

  如果你想要配置成一个自己的目录,首先你需要创建一个自定义的目录,比如说我指定了我想要存放日志的文件的目录: /var/log/bind,如果不为这个文件使用chown命令指定权限的话会出现 isc_stdio_open ‘/var/log/example.log’ failed 的报错。解决方法是: sudo chown bind:root /var/log/bind

  现在我们已经基本上了解了 logging 的工作原理,其工作机制简单地来说就是,首先你需要创建一个 channel 来规定输出日志流的格式还以及日志文件名、文件版本,每一个 channel 可以被多个 category 调用使用,每一个 category 相当于一个 BIND9 内嵌的服务模块,服务模块去调用日志配置模最后输出格式化日志。

3.options

  options 的参数设置会影响整个 BIND9 DNS环境的配置,具体各部分常用到的配置参数如下:

  • listen-on:用于配置监听的端口以及IPv4地址,默认的监听端口为:53;
  • listen-on-v6:用于监听 IPv6 地址以及端口;
  • directory: 用于指定读取DNS数据文件的文件夹,默认的文件夹的路径为:/var/cache/bind;
  • dump-file:选项用来设置域名缓存数据库文件的位置,可以自己定义。默认的存储文件为:named_dump.db;
  • statistics-file:选项用来设置状态统计文件的位置,可以自己定义。;
  • memstatistics-file :选项用来设置服务器输出的内存使用统计信息。默认保存在 /var/named/data 目录下,文件名为 named.memstats;
  • allow-query:选项用来设置允许DNS查询的客户端地址,默认值为localhost, 可以设置为某个网段、任意地址、具体的某台主机三种情况。例如,要修改为任意地址,就在括号内的加入 any,也可以引用之前创建的 acl 内的所有地址;
  • recursion:用于设置递归查询,一般客户机和服务器之间属于递归查询,即当客户机向DNS服务器发出查询请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。此选项有yes和no两个值。这个选项用于设置 Failover 非常有用;
  • dnssec-enable: 选项用来设置是否启用DNSSEC支持,DNSSEC可以用来验证DNS数据的有效性,该选项有yes和no两个值,默认值为yes。
  • dnssec-validation:选项用来设置是否启用DNSSEC确认,默认值为yes,可以选择 auto。
  • bindkeys-file : 用来设置内置信任的密钥文件,其默认值为 /etc/named/iscdlv.key;
  • managed-keys-directory: 选项用于指定目录中的文件存储位置,跟踪管理 DNSSEC 密钥, 这部分的内容在后边会有介绍;
  • forwarders:DNS转发器。用于设定该DNS解析服务器无法进行当前域名解析的情况下,进行转发解析的DNS地址,其中 8.8.8.8 和 8.8.4.4 是谷歌的免费DNS服务器的网络地址;233.5.5.5 和 233.6.6.6 是阿里云的免费DNS地址。当设置了 forwarder 的转发器之后,所有的非本域的和在缓存中无法查找到的域名查询都转发都设置的DNS转发器,由DNS转发器 完成转发操作。因此这台转发器的缓存中就记录了丰富的域名信息。因此如果遇到非本域的查询,转发器的缓存就可以做到查询,从而减少了向外部的查询流量。
    forward: 选择默认的IP地址即可;

  • rrset-order
    在 BIND 9 提供的负载均衡策略建立在一个名称(域名 – Name)使用多个资源记录 ( Records ) 的情况下,其实现的轮询机制并不是传统的负载均衡服务器实现的轮询机制 – 即追踪和记录每一次应答的资源顺序;
    BIND 9 实现了一个类似 List 的数据结构,将所有的资源记录填入到 一个顺序表中,这个填入的次序随机,或者根据设定的参数随机;
    格式:[class class_name] [type type_name] [name “domain_name”] order ordering
    如果参数没有被赋值,那么默认的赋值为: class: ANY type: ANY Name: *
    参数:
    • fixed : 根据 zone 文件定义资源记录的顺序按照顺序逐个进行解析;
    • random: 根据 zone 文件资源记录随机返回解析记录;
    • cyclic: 创建一个循环,循环输出资源记录;
    • none: 完全随机的资源返回形式;










4.controls

  controls语句声明了系统管理员用于管理名称服务器远程操作的控制通道。rndc使用这些控制通道向名称服务器发送命令,并从名称服务器检索非dns结果。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198788.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:28
下一篇 2026年3月26日 下午2:29


相关推荐

  • osg机械加工术语_所有那些令人困惑的机械键盘术语,解释了

    osg机械加工术语_所有那些令人困惑的机械键盘术语,解释了osg 机械加工术语 Mechanicalke Mostpeoplewh andsomepeopl reallylike

    2026年3月18日
    2
  • maven插件

    maven插件

    2021年9月14日
    55
  • Web API配置自定义路由

    Web API配置自定义路由

    2021年9月6日
    76
  • Android布局详解之一:FrameLayout

    Android布局详解之一:FrameLayout原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6702273 FrameLayout是最简单的布局了。所有放在布局里的控件,都按照层次堆叠在屏幕的左上角。后加进来的控件覆盖前面的控件。在Fr

    2022年6月2日
    63
  • 2021-2027年中国视频监控设备行业市场需求预测与投资战略规划分析报告[通俗易懂]

    2021-2027年中国视频监控设备行业市场需求预测与投资战略规划分析报告[通俗易懂]【报告类型】产业研究【报告价格】4500起【出版时间】即时更新(交付时间约3个工作日)【发布机构】智研瞻产业研究院【报告格式】PDF版本报告介绍了中国视频监控设备行业市场行业相关概述、中国视频监控设备行业市场行业运行环境、分析了中国视频监控设备行业市场行业的现状、中国视频监控设备市场行业竞争格局、对中国视频监控设备行业市场行业做了重点企业经营状况分析及中国视频监控设备行业市场行业发展前景与投资预测。您若想对中国视频监控设备行业市场行业有个系统的了解或者想投资中国视频监控设备行业市场…

    2022年5月28日
    34
  • 干货!java文件上传判重姿势浅谈

    干货!java文件上传判重姿势浅谈一、场景:文件上传,用户极有可能上传重复文件,内容完全一致。如果对上传的文件未做任何处理,对于文件存储系统来说将是灾难,大量重复的数据,如果允许上传大文件,那么对于存储资源将是巨大的浪费。对于重复的文件,只需要复制相应的访问地址即可,源文件可无需上传,既减轻了网络带宽压力,也减少了存储容量的压力。二、应对:1、通过文件名判重。非特殊情况下,不会采用这种方案,理由跟人同名一样,文件名很容易重复,随着用户上升,概率会变大。采用此方案极易导致不能达到判重的目的。2、读取文件头加部分内容。这种方案可以解

    2022年5月15日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号