前几天一直有网友询问关于DNS的日志问题。今天我刚好有空,整理了一下分享给大家 :D
在默认情况下,BIND把日志消息写到/var/log/messages文件中,而这些日志消息是非常少的,主要就是启动,关闭的日志记录和一些严重错误的消息,所以要详细记录服务器的运行状况,需要自己配置服务器的日志行为。也就是要在配置文件named.conf中使用logging语句来定制自己所需要的日志记录,logging语句的语法为:
logging {
channel <string>; {
file <logfile>;;
syslog <optional_facility>;;
null;
stderr;
severity <logseverity>;;
print-time <boolean>;;
print-severity <boolean>;;
print-category <boolean>;;
};
category <string>; { <string>;; ... };
};
在日志中主要有两个概念:通道(channel)和类别(category)。通道指定了应该向哪里发送日志数据:是发送给syslog,还是写在一个文件里,或是发送给named的标准错误输出,还是发送到位存储桶(bit bucket)。类别则规定了哪些数据需要记录。下面我们主要介绍一下文件通道和类别。
在定义通道的语句中,severity是指定记录消息的级别。在bind中主要有以下几个级别(按照严重性递减的顺序):
critical
error
warning
notice
info
debug [ level ]
dynamic
定义了某个级别后,系统会记录包括该级别以及比该级别更严重的级别的所有消息。比如定义级别为error,则会记录critical和error两个级别的信息。一般情况下,我们记录到info级别就可以了。print-time是设定在日志中是否需要写入时间,print-severity是设定在日志中是否需要写入消息级别,print-category是设定在日志中是否需要写入日志类别。
category语句是指定哪一种类别的数据使用哪个或者哪几个已经定义了的通道。在bind9中类别有:
default
default类别匹配所有未明确指定通道的类别,但是不匹配不属于任何类别的消息。这些不属于任何类别的消息属于下面列出的这些类别。
general
包括所有未明确分类的BIND消息。
client
处理客户端请求。
config
配置文件分析和处理。
database
同BIND内部数据库相关的消息,用来存储区数据和缓存记录。
dnssec
处理DNSSEC签名的响应。
lame-servers
发现错误授权。
network
网络操作
notify
异步区变动通知。
queries
查询日志
resolver
名字解析,包括对来自解析器的递归查询的处理。
security
认可/非认可的请求。
update
动态更新事件。
xfer-in
从远程名字服务器到本地名字服务器的区传送。
xfer-out
从本地名字服务器到远程名字服务器的区传送。
例如要记录queries消息,就可以如下配置(把以下语句添加到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语句所指定的目录,通常为:/var/named)下创建query.log这个文件,并把运行过程产生的queries消息写如到query.log文件中,如下:
Nov 28 16:04:55.516 queries: client 192.168.0.113#32770: query: dns.andy.com IN A
另外解释一下“[color=blue]file "query.log" versions 3 size 20m;[/color]”语句中“version”和“size”的意义:
version是指定允许同时存在多少个版本的该文件,比如指定3个版本(version 3),bind9会保存query.log、query.log0、query.log1和query.log2。
Size是指定文件大小的上限,如果只设定了size而没有设定version的话,当文件达到指定的文件大小上限时,服务器停止写入该文件。如果设定了version的话,服务器会进行循环,比如把query.log变成query.log1,query.log1变成query.log2等,然后建立一个新的query.log进行写入。
白雪茫茫 回复于:2003-12-01 12:14:41good
阿骁 回复于:2003-12-04 09:01:18简单明了! 顶一下!
sunnycn 回复于:2005-05-11 14:26:38我按照上面的要求写了,文件是产生了。但是,里面没有日志。什么原因呢。谢谢!
ramboo 回复于:2006-01-07 16:54:33人品问题!!
:)
开个玩笑。
tanyear 回复于:2006-01-07 21:55:01no client query?
ailms 回复于:2006-01-08 14:08:14不错,不过这样定义之后, named 的 -d 参数好像就不起作用了. 不论 -d 指定的 debug 级别为多少,都只
能看到 debug 1 级别的信息.我也不知道为什么?
[
本帖最后由 ailms 于 2006-1-8 14:12 编辑 ]
marion 回复于:2006-12-10 21:58:11不错的文章,谢谢!参考中……
freemanxp2005 回复于:2006-12-11 11:10:53logging {
channel query_log {
file "query.log" versions 3 size 100m;
severity info;
print-time yes;
print-category yes;
};
category queries {
query_log;
};
category client {
query_log;
};
};
我的配置文件,但没生成日志,请指教
gaochong 回复于:2007-04-23 17:23:00我的logging配置文件如下:
logging {
channel default_syslog { syslog daemon; severity info; };
channel audit_log { file "/var/log/named.log" versions 3 [color=Red] size 20m[/color]; severity info; print-time yes; };
但有2个疑问:
1。设置size 20m,但日志文件却是2G,如下:
[root@NS4 log]# ll -h named.log*
-rw-r--r-- 1 named named 939M 4月 23 17:07 named.log
-rw-r--r-- 1 named named [color=Red]2.0G[/color] 4月 19 15:13 named.log.1
2。以上2文件为什么没有named.log.0,而且/var/log/messages有如下错误:
Apr 23 17:22:26 NS4 named[24734]: unable to rename log file '/var/log/named.log' to '/var/log/named.log.0': permission denied
Apr 23 17:22:27 NS4 named[24734]: unable to rename log file '/var/log/named.log.1' to '/var/log/named.log.2': permission denied
请各位帮我看看,确定原因及如何处理。谢谢!
[
本帖最后由 gaochong 于 2007-4-23 17:25 编辑 ]
gaochong 回复于:2007-04-24 09:46:40求各位老大解答。。。谢谢!
gaochong 回复于:2007-04-24 12:35:35已经解决。
修改配置文件中 file "/var/log/named.log" 为 file "/var/log/named/named.log,
并chown named.named /var/log/named
既可。
huoyun 回复于:2007-06-19 16:56:15我的也没有出现日志文件,且/var/log/messages/中显示如下错误信息:
Jun 19 15:05:26 nat sshd(pam_unix)[1836]: session opened for user root by (uid=0)
Jun 19 15:05:26 nat modprobe: modprobe: Can't locate module char-major-10-224
Jun 19 15:07:58 nat sshd(pam_unix)[1566]: session closed for user root
Jun 19 15:07:59 nat modprobe: modprobe: Can't locate module char-major-10-224
Jun 19 15:27:12 nat last message repeated 2 times
Jun 19 15:27:12 nat modprobe: modprobe: Can't locate module char-major-10-224
Jun 19 15:27:12 nat sshd(pam_unix)[1894]: session opened for user root by (uid=0)
Jun 19 15:27:12 nat modprobe: modprobe: Can't locate module char-major-10-224
Jun 19 15:43:57 nat sshd(pam_unix)[1836]: session closed for user root
Jun 19 15:43:57 nat modprobe: modprobe: Can't locate module char-major-10-224
Jun 19 16:01:01 nat last message repeated 2 times
Jun 19 16:38:28 nat last message repeated 5 times
Jun 19 16:38:28 nat modprobe: modprobe: Can't locate module char-major-10-224
Jun 19 16:38:28 nat sshd(pam_unix)[1963]: session opened for user root by (uid=0)
Jun 19 16:38:28 nat modprobe: modprobe: Can't locate module char-major-10-224
Jun 19 16:55:01 nat sshd(pam_unix)[1894]: session closed for user root
Jun 19 16:55:01 nat modprobe: modprobe: Can't locate module char-major-10-224
wskyygydx 回复于:2007-09-19 11:17:34我的日志也是没有内容啊,里面是空的。
lanfox2006 回复于:2007-10-06 23:50:45学习了
Q小强 回复于:2007-10-16 21:33:442003 相隔 2007
yecheng_110 回复于:2008-03-04 11:37:16请问一下在chroot情况下应该如何设置?