diff -aur dnsmasq-2.85/src/dnsmasq.h src/src/dnsmasq.h
--- dnsmasq-2.85/src/dnsmasq.h	2021-09-20 20:58:58.700864087 +0200
+++ src/src/dnsmasq.h	2021-09-20 20:47:11.197530140 +0200
@@ -271,7 +271,9 @@
 #define OPT_SINGLE_PORT    60
 #define OPT_LEASE_RENEW    61
 #define OPT_LOG_DEBUG      62
-#define OPT_LAST           63
+#define OPT_FILTER_A       63
+#define OPT_FILTER_AAAA    64
+#define OPT_LAST           65
 
 #define OPTION_BITS (sizeof(unsigned int)*8)
 #define OPTION_SIZE ( (OPT_LAST/OPTION_BITS)+((OPT_LAST%OPTION_BITS)!=0) )
diff -aur dnsmasq-2.85/src/option.c src/src/option.c
--- dnsmasq-2.85/src/option.c	2021-04-07 22:39:39.000000000 +0200
+++ src/src/option.c	2021-09-20 20:48:51.606570624 +0200
@@ -170,6 +170,8 @@
 #define LOPT_PXE_VENDOR    361
 #define LOPT_DYNHOST       362
 #define LOPT_LOG_DEBUG     363
+#define LOPT_FILTER_A      364
+#define LOPT_FILTER_AAAA   365
  
 #ifdef HAVE_GETOPT_LONG
 static const struct option opts[] =  
@@ -345,6 +347,8 @@
     { "dhcp-ignore-clid", 0, 0,  LOPT_IGNORE_CLID },
     { "dynamic-host", 1, 0, LOPT_DYNHOST },
     { "log-debug", 0, 0, LOPT_LOG_DEBUG },
+    { "filter-a", 0, 0, LOPT_FILTER_A },
+    { "filter-aaaa", 0, 0, LOPT_FILTER_AAAA },
     { NULL, 0, 0, 0 }
   };
 
@@ -527,6 +531,8 @@
   { LOPT_DUMPFILE, ARG_ONE, "<path>", gettext_noop("Path to debug packet dump file"), NULL },
   { LOPT_DUMPMASK, ARG_ONE, "<hex>", gettext_noop("Mask which packets to dump"), NULL },
   { LOPT_SCRIPT_TIME, OPT_LEASE_RENEW, NULL, gettext_noop("Call dhcp-script when lease expiry changes."), NULL },
+  { LOPT_FILTER_A, OPT_FILTER_A, NULL, gettext_noop("Filter all A requests."), NULL },
+  { LOPT_FILTER_AAAA, OPT_FILTER_AAAA, NULL, gettext_noop("Filter all AAAA requests."), NULL },
   { 0, 0, NULL, NULL, NULL }
 }; 
 
diff -aur dnsmasq-2.85/src/rfc1035.c src/src/rfc1035.c
--- dnsmasq-2.85/src/rfc1035.c	2021-04-07 22:39:39.000000000 +0200
+++ src/src/rfc1035.c	2021-09-20 20:50:02.399304927 +0200
@@ -1598,6 +1598,20 @@
 	      unsigned short type = (flag == F_IPV6) ? T_AAAA : T_A;
 	      struct interface_name *intr;
 
+	      if (qtype == T_AAAA && option_bool(OPT_FILTER_AAAA) ) {
+		      //return a null reply
+		      ans = 1;
+		      if (!dryrun) log_query(F_CONFIG | F_IPV6 | F_NEG, name, &addr, NULL);
+		      break;
+	      }
+
+	      if (qtype == T_A && option_bool(OPT_FILTER_A) ) {
+		      //return a null reply
+		      ans = 1;
+		      if (!dryrun) log_query(F_CONFIG | F_IPV4 | F_NEG, name, &addr, NULL);
+		      break;
+	      }
+
 	      if (qtype != type && qtype != T_ANY)
 		continue;
 	      
