Bind9记录到命名管道

时间:2014-06-12 12:53:36

标签: ubuntu-12.04 bind named-pipes syslog-ng

目标

我想在Ubuntu 12.04上配置bind9以注销到命名管道。目的是将日志记录重定向到syslog-ng服务。

问题

我的问题是,当我将日志记录通道定向到命名管道文件时,绑定服务将无法启动。 这是logging子句,其中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 个答案:

答案 0 :(得分:0)

1)回答问题

  

Bind9记录到命名

a)我一直在寻找BIND9-s源代码的解决方案,我发现如果没有源代码修改就无法完成。

b)最接近的解决方案是登录 stderr

logging {
  channel query.log {
   stderr;
   severity info;
   print-time yes;
   print-category yes;
 };

 category queries  { query.log; };
};

并通过修改BIND9启动脚本将其重定向到命名管道。我是通过修改 /etc/init.d/bind9

来做到的
  • 您需要找到启动命令。在我的情况下,它是行№64

      

    如果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 chanel默认将日志写入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