- The :ref:`setting-yaml-outgoing.cookies` setting has been introduced to implement cookie support for contacting authoritative servers and forwarders. See :rfc:`7873` and :rfc:`9018`.
- The :ref:`setting-yaml-outgoing.cookies_unsupported` setting has been introduced to permanently mark authoritative servers as not supporting cookies.
- The :ref:`setting-yaml-outgoing.tls_configurations` setting has been introduced to be able to force certificate validation and other properties of outgoing DoT connections.
+- The :ref:`setting-yaml-outgoing.any_to_tcp` setting has been introduced to force outgoing ANY queries to TCP.
Changed Settings
^^^^^^^^^^^^^^^^
SyncRes::parseEDNSSubnetAllowlist(::arg()["edns-subnet-allow-list"]);
SyncRes::parseEDNSSubnetAddFor(::arg()["ecs-add-for"]);
g_useIncomingECS = ::arg().mustDo("use-incoming-edns-subnet");
+ SyncRes::s_outAnyToTcp = ::arg().mustDo("out-any-to-tcp");
return 0;
}
''',
'versionchanged': ('5.4.0', 'Default is enabled now, was disabled before 5.4.0'),
},
+ {
+ 'name' : 'any_to_tcp',
+ 'oldname': 'out-any-to-tcp',
+ 'section' : 'outgoing',
+ 'type' : LType.Bool,
+ 'default' : 'true',
+ 'help' : 'Use TCP for ANY queries to authoritative servers',
+ 'doc' : '''
+Send out requests with qtype `ANY` using TCP.
+ ''',
+ 'versionadded': '5.4.0',
+ },
{
'name' : 'allow_trust_anchor_query',
'section' : 'recursor',
bool SyncRes::s_rootNXTrust;
bool SyncRes::s_noEDNS;
bool SyncRes::s_qnameminimization;
+bool SyncRes::s_outAnyToTcp;
SyncRes::HardenNXD SyncRes::s_hardenNXD;
unsigned int SyncRes::s_refresh_ttlperc;
unsigned int SyncRes::s_locked_ttlperc;
if (SyncRes::s_dot_to_port_853 && remoteIP->getPort() == 853) {
doDoT = true;
}
- bool forceTCP = doDoT;
+ bool forceTCP = doDoT || (qtype == QType::ANY && s_outAnyToTcp);
if (!doDoT && s_max_busy_dot_probes > 0) {
submitTryDotTask(*remoteIP, auth, tns->first, d_now.tv_sec);
static bool s_noEDNS;
static bool s_rootNXTrust;
static bool s_qnameminimization;
+ static bool s_outAnyToTcp;
static HardenNXD s_hardenNXD;
static unsigned int s_refresh_ttlperc;
static unsigned int s_locked_ttlperc;