简介

在默认情况下,BIND9 把日志消息写到 /var/log/messages 文件中,而这些日志消息是非常少的,主要就是启动,关闭的日志记录和一些严重错误的消息;而将调试日志信息写入 BIND 服务器工作目录中的 named.run 文件。

BIND 9 的日志是可以灵活配置的,要详细记录服务器的运行状况,要在配置文件 named.conf 中使用 logging 语句来定制自己所需要的日志记录。

BIND 日志的常用术语

在讲述 logging 语句的语法之前,先要熟悉一些常用术语

术语 含义
channel(通道) 日志输出方式,如:syslog、文本文件、标准错误输出或 /dev/null
category(类别) 日志的消息类别,如:查询消息或动态更新消息等
module(模块) 产生消息的来源模块名称
facility(设备) syslog 设备名
severity(严重性) 消息的严重性等级

logging 语句的语法

logging 语句的语法为:

logging {
channel channel_name { // 定义通道
file log_file [versions number | unlimited] [size sizespec]; | syslog optional_facility; | null; | stderr; // 定义输出方式
severity log_severity; // 定义消息严重性
[print-time boolean;] // 是否在消息中添加时间前缀,仅用于 file 日志
[print-severity boolean;] // 是否在消息中添加消息严重性前缀
[print-category boolean;] // 是否在消息中添加消息类别名前缀
};
category category_name { // 定义类别
channel_name;
......
};
};

channel 语句

配置日志时,首先要定义通道,然后将不同的日志类别的数据指派到指定的通道上输出。

BIND 9 的默认配置是:

logging {
// 由于使用了默认通道,所以没有通道定义部分
category "default" { "default_syslog"; "default_debug"; };
};

channel 语句用于定义通道。指定应该向哪里发送日志数据,需要在以下四种之间则其一:

  • file: 输出到纯文本文件
  • log_file: 指定一个文件名
  • version: 指定允许同时存在多少个版本的该文件,比如指定 3 个版本(version 3),就会保存 query.log、query.log0、query.log1 和query.log2。
  • size: 指定文件大小的上限,如果只设定了size 而没有设定 version,当文件达到指定的文件大小上限时,服务器停止写入该文件。如果设定了version,服务器会进行循环,如把 log_file 变成 log_file.log1,log_file.log1 变成 log_file.log2 等,然后建立一个新log_file.log 进行写入。

syslog optional_facility :输出到 syslog,其中 optional_facility 是 syslog 的设备名,通常为以下几个:

  • daemon
  • local0 到 local7
  • null :输出到空设备
  • stderr :输出到标准错误输出,默认为屏幕

severity 语句用于指定消息的严重性等级, log_severity 的取值为(按照严重性递减的顺序):

  • critical
  • error
  • warning
  • notice
  • info
  • debug [ level ]

dynamic 是一个特殊的值,它匹配服务器当前的调试级别。定义了某个严重性级别后,系统会记录包括该级别以及比该级别更严重的级别的所有消息。比如定义级别为 error,则会记录 critical 和error 两个级别的信息。

对于系统管理员来说,一般记录到 info 级别就可以了。

BIND 9 预制了如下四个默认通道;

channel "default_syslog" {
syslog daemon; // 发送给 syslog 的 daemon 设备
severity info; // 只发送此 info 及其更高优先级的信息
};
channel "default_debug" { // 只有当服务器的 debug 级别非 0 时,才产生输出。
file "named.run"; // 写入工作目录下的 named.run 文件
severity dynamic; // 按照服务器当前的debug 级别记录日志
};
channel "default_stderr" {
stderr; // 写到stderr
severity info; // 只发送此 info 及其更高优先级的信息
};
channel "null" {
null; // 丢弃所有发到此通道的信息
};

category 语句

category 语句是指定哪一种类别的信息使用哪个或者哪几个已经定义了的通道输出。

BIND 9 中可用的类别名(category_name)有:

类别 说明
client 处理客户端请求。
config 配置文件分析和处理。
database 同BIND内部数据库相关的消息,用来存储区数据和缓存记录。
default 匹配所有未明确指定通道的类别。
dnssec 处理 DNSSEC 签名的响应。
general 包括所有未明确分类的 BIND 消息。
lame-servers 发现错误授权,即残缺服务器。
network 网络操作。
notify 区更新通知消息。
queries 查询日志
resolver 名字解析,包括对来自解析器的递归查询信息。
security 批准/非批准的请求。
update 动态更新事件。
xfer-in 从远程名字服务器到本地名字服务器的区传送。
xfer-out 从本地名字服务器到远程名字服务器的区传送。

例如要记录查询消息,可以在 named.conf 中添加如下配置:

logging {
channel query_log {
file "query.log" versions 3 size 20m;
severity info;
print-time yes;
print-category yes;
};
category queries {
query_log;
};
};

这样服务器会在工作目录(directory 语句所指定的目录,Ubuntu 为:/var/cache/bind)下创建 query.log 文件,并把运行过程产生的 queries 消息写如到此文件中。

DNS Bind日志详述的更多相关文章

  1. 第7章 DNS & bind从基础到深入

    本文目录: 7.1 DNS必懂基础 7.1.1 域的分类 7.1.2 主机名.域名.FQDN 7.1.3 域的分层授权 7.1.4 DNS解析流程 7.2 DNS术语 7.2.1 递归查询和迭代查询 ...

  2. DNS(bind)服务器安装和配置

    一.前言 DNS 域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP ...

  3. DNS Bind服务配置解析

    DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析: 一.DNS服务器工作模式分类: 1.主服务器:在特定区域内具有唯一 ...

  4. DNS BIND之rndc介绍及使用

    rndc(Remote Name Domain Controllerr)是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭.重载.刷新缓存.增 ...

  5. DNS bind使用

    概念介绍 DNS的分类 主DNS:配置管理,不提供服务,只用来编辑配置信息,给从DNS提供同步数据 从DNS:从主DNS上同步数据信息,对外提供服务 缓存DNS:在主DNS和从DNS之间,用来递归解析 ...

  6. DNS bind子域授权安装

    失败经验:rhel 6.x bind 9.8,两台做子域授权,最后失败.原因不详. 改用rhel 5.5, bind 9.3,同样的配置,就成功了.具体记录一下9.3的配置. 安装:采用安装RHEL时 ...

  7. 为linux dns (bind named)服务器配置 单独的笔记

    注意: 当在把 named.ca文件下载好13个根dns服务器的 全球记录后, 就不再需要别的 dns服务器来辅助获得了. 只要把所有 本地服务器 不能解析的请求, 都发送到 . 点根去就行了, 所以 ...

  8. dns bind配置教程

    实验环境 三台centos7虚拟机,一台ip为192.168.52.130,一台为192.168.52.131,最后一台为192.168.52.132 安装bind 使用yum -y insall b ...

  9. DNS/BIND in Debian

    Debian official document:http://www.debian.org/doc/manuals/network-administrator/ch-bind.html Buildi ...

随机推荐

  1. 编译原理-DFA的化简(最小化)

    对于给定的DFA    M,寻找一个状态数比M小的DFA    M'使得L(M)=L(M') 1.状态的等价性: 假设s和t为M的两个状态 ①若分别从状态s和状态t出发都能读出某个字α而停止于终态,则 ...

  2. JAVA复习题(一)基础知识

    类的构造方法描述正确的是( )A. 类中的构造方法不能省略B. 构造方法必须与类同名,但方法不能与class同名C. 构造方法在一个对象被new时执行D. 一个类只能有一个构造方法我的答案:C正确答案 ...

  3. Java 并发基础知识

    一.什么是线程和进程? 进程: 是程序的一次执行过程,是系统运行程序的基本单元(就比如打开某个应用,就是开启了一个进程),因此进程是动态的.系统运行一个程序即是一个程序从创建.运行到消亡的过程. 在 ...

  4. MySQL分页查询limit踩坑记

    1 问题背景 线上有一个批处理任务,会批量读取昨日的数据,经过一系列加工后,插入到今日的表中.表结构如下: 1 CREATE TABLE `detail_yyyyMMdd` ( 2 `id` bigi ...

  5. Ajax 和 JSON

    Ajax:异步更新页面的技术,必须在http或者https网络网络协议下使用             1.原生js实现:共4步             2.jQuery:$.ajax(配置对象);   ...

  6. R-聚类

    一.定义:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类 二.距离:欧几里得度量(euclidean metric)也称欧氏距离       绝对值距离(manhattan)   ...

  7. C#获取字符串字符的位数(区分中文和英文长度)

    请看以下代码 1 private static int GetStrLength(string str) 2 { 3 if (string.IsNullOrEmpty(str)) return 0; ...

  8. Zabbix5.0微信报警

    3.1.注测企业微信: 3.2.企业微信注册成功后进入后台管理: 3.3.添加一个部门,并记住部门id: #我这里添加的子部门ID为2 3.4.添加一个用户到上面创建的部门里面(这里采取直接将管理员添 ...

  9. 41、解决du与df统计不一致的解决方法

    41.1.案例说明: 通过df -hT和du -sh /.du -h --max-depth=1 /命令 发现磁盘的使用不量不一致,使用'df -hT'命令查看磁盘的使用量要 比使用'du -sh / ...

  10. Spring官方发布新成员:Spring GraphQL

    近日,在GraphQL Java诞生6周年的时候,Spring社区通过博客宣布正式创建全新项目:Spring GraphQL,同时还发布了这个新项目的里程碑1.0版本. 博客原文:https://sp ...