目标
我想在Ubuntu 12.04上配置bind9以注销到命名管道。目的是将日志记录重定向到syslog-ng服务。
问题
我的问题是,当我将日志记录通道定向到命名管道文件时,绑定(bind)服务将无法启动。
这是日志记录子句,其中query.log是FIFO文件:
logging {
channel query.log {
file "/var/log/named/query.log";
severity info;
print-time yes;
print-category yes;
};
category queries { query.log; };
category ....
};
这是在syslog中找到的输出:
Jun 12 12:37:53 hostname named[19400]: isc_file_isplainfile '/var/log/named/query.log' failed: invalid file
Jun 12 12:37:53 hostname named[19400]: configuring logging: invalid file
Jun 12 12:37:53 hostname named[19400]: loading configuration: invalid file
我尝试过的
我已经验证了权限是否正确,并且可以正常登录到标准文件。我还验证了可以通过运行以下命令通过管道发送数据
sudo -u bind bash -c 'echo "test" > /var/log/named/query.log'
我看到数据按预期出现在syslog-ng中。
我还在Apparmor中将/ usr / sbin / named设置为抱怨和禁用,但是我仍然遇到问题。
帮帮我?
我打算做什么?如果是这样,那么任何关于我可能在做什么的指针都是错误的。
最佳答案
1)回答
Bind9记录到命名
a)我一直在寻找BIND9的源代码中的解决方案,但是我发现如果没有源代码修改就无法完成。
b)最近的解决方案是登录 stderr :
logging {
channel query.log {
stderr;
severity info;
print-time yes;
print-category yes;
};
category queries { query.log; };
};
并通过修改BIND9启动脚本将其重定向到命名管道。我通过修改 /etc/init.d/bind9 做到了:
如果start-stop-daemon --start --oknodo --quiet --exec'/ usr / sbin / named'\
--pidfile $ {PIDFILE}-$ OPTIONS“;然后
如果start-stop-daemon --start --oknodo --quiet --exec'/ bin / bash'\
--pidfile $ {PIDFILE}--c“/ usr / sbin / named -g $ OPTIONS 2> /var/log/named/queries.log $;”;然后
2)目的的答案:
bind9允许您通过config直接登录syslog:
logging {
category queries { default_syslog; };
};
default_syslog香奈儿默认将日志写入syslog中。
或者您可以编写显式配置:
logging {
channel query.log {
syslog daemon;
severity info;
print-time yes;
print-category yes;
};
category queries { query.log; };
};
请参阅日志记录配置手册:
http://www.zytrax.com/books/dns/ch7/logging.html