这边有个需求, 让bind 的query_log 只记录ipv4的A记录请求
解决办法:
修改代码query.c 里边记录query_log的部分, 增加一个 客户端query.qtype的判断
--- bind-9.11.14/bin/named/query.c 2019-12-12 13:17:55.000000000 +0800 +++ bind-9.11.14.mod/bin/named/query.c 2020-03-05 16:57:31.766000000 +0800 @@ -9548,8 +9548,6 @@ return; } if (ns_g_server->log_queries) log_query(client, saved_flags, saved_extflags);/* * Check for meta-queries like IXFR and AXFR.
@@ -9559,6 +9557,10 @@ client->query.qtype = qtype = rdataset->type; dns_rdatatypestats_increment(ns_g_server->rcvquerystats, qtype); if ( (ns_g_server->log_queries) && (client->query.qtype == dns_rdatatype_a) ){ log_query(client, saved_flags, saved_extflags); } + log_tat(client);if (dns_rdatatype_ismeta(qtype)) {
qtype 分以下种类
enum { dns_rdatatype_none = 0, dns_rdatatype_a = 1, dns_rdatatype_ns = 2, dns_rdatatype_md = 3, dns_rdatatype_mf = 4, dns_rdatatype_cname = 5, dns_rdatatype_soa = 6, dns_rdatatype_mb = 7, dns_rdatatype_mg = 8, dns_rdatatype_mr = 9, dns_rdatatype_null = 10, dns_rdatatype_wks = 11, dns_rdatatype_ptr = 12, dns_rdatatype_hinfo = 13, dns_rdatatype_minfo = 14, dns_rdatatype_mx = 15, dns_rdatatype_txt = 16, dns_rdatatype_rp = 17, dns_rdatatype_afsdb = 18, dns_rdatatype_x25 = 19, dns_rdatatype_isdn = 20, dns_rdatatype_rt = 21, dns_rdatatype_nsap = 22, dns_rdatatype_nsap_ptr = 23, dns_rdatatype_sig = 24, dns_rdatatype_key = 25, dns_rdatatype_px = 26, dns_rdatatype_gpos = 27, dns_rdatatype_aaaa = 28, dns_rdatatype_loc = 29, dns_rdatatype_nxt = 30, dns_rdatatype_srv = 33, dns_rdatatype_naptr = 35, dns_rdatatype_kx = 36, dns_rdatatype_cert = 37, dns_rdatatype_a6 = 38, dns_rdatatype_dname = 39, dns_rdatatype_opt = 41, dns_rdatatype_apl = 42, dns_rdatatype_ds = 43, dns_rdatatype_sshfp = 44, dns_rdatatype_ipseckey = 45, dns_rdatatype_rrsig = 46, dns_rdatatype_nsec = 47, dns_rdatatype_dnskey = 48, dns_rdatatype_dhcid = 49, dns_rdatatype_nsec3 = 50, dns_rdatatype_nsec3param = 51, dns_rdatatype_hip = 55, dns_rdatatype_spf = 99, dns_rdatatype_unspec = 103, dns_rdatatype_tkey = 249, dns_rdatatype_tsig = 250, dns_rdatatype_dlv = 32769, dns_rdatatype_keydata = 65533, dns_rdatatype_ixfr = 251, dns_rdatatype_axfr = 252, dns_rdatatype_mailb = 253, dns_rdatatype_maila = 254, dns_rdatatype_any = 255 };
参考文档:
https://users.isc.org/~each/doxygen/bind9/structns__query.html
https://ri.co.cr/training/dccom/bind-9.8.2/lib/dns/include/dns/enumtype.h