どさにっきさんで公開してたNSDでクエリログが取れるようになるパッチ「NSD query logging 」がNSD3用でNSD4だとコンパイルできなかったので、少し変更してNSD4でも動くようにした(変更と言ってもaddr2ipをaddr2strにしただけなんだけどね…)。
--- ./query.c.orig 2014-01-30 22:41:10.000000000 +0900
+++ ./query.c 2014-10-19 14:11:38.141567865 +0900
@@ -1273,6 +1273,7 @@
nsd_rc_type rc;
query_state_type query_state;
uint16_t arcount;
+ char address[128];
/* Sanity checks */
if (buffer_limit(q->packet) < QHEADERSZ) {
@@ -1380,6 +1381,19 @@
return query_error(q, NSD_RC_OK);
}
+ /* query logging */
+ addr2str(&q->addr,address, sizeof(address));
+ log_msg(LOG_INFO, "client %s: query %s %s %s %s%s%s%s%s",
+ address,
+ q->qname ? dname_to_string(q->qname, NULL) : "(null)",
+ rrclass_to_string(q->qclass),
+ rrtype_to_string(q->qtype),
+ RD(q->packet) ? "+" : "-",
+ q->edns.status == EDNS_OK ? "E" : "",
+ q->tcp ? "T" : "",
+ q->edns.dnssec_ok ? "D" : "",
+ CD(q->packet) ? "C" : "");
+
query_prepare_response(q);
if (q->qclass != CLASS_IN && q->qclass != CLASS_ANY) {
ダウンロードしたい方はこちら から。
動作確認はNSD 4.1.0にてやってます。適当にクエリを流した感じちゃんとログに落ちてました。ご利用は自己責任にて。
作成日:2014/10/19 14:20:54