<div dir="ltr"><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">I want to agree we should reference RFC8932 but perhaps it is cleaner to include their text in this document, to save folks from bouncing through documents. </div><div class="gmail_default" style="font-family:monospace">I've felt one of our big goals would be a document where reading the RFCs or other documents would be for historical or extra details.  <br>Willing to be told I'm wrong.</div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 24, 2024 at 2:32 PM Tim Wicinski <<a href="mailto:tjw.ietf@gmail.com">tjw.ietf@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">Sorry I have found it a bit hard to track the document so some of these may be duplicates</div><div class="gmail_default" style="font-family:monospace"><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_default" style="font-family:monospace">### About Recomendation Text</div></blockquote><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">s/Recomendation/Recommendation</div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_default" style="font-family:monospace">may have significant</div><div class="gmail_default" style="font-family:monospace"><br></div></blockquote>s/may have significant /may have a significant/<br></div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default"><blockquote style="font-family:monospace;margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_default" style="font-family:monospace">NSEC3 values, can reduce<br></div><div class="gmail_default" style="font-family:monospace"><br></div></blockquote><font face="monospace">s/</font>NSEC3 values, can reduce/NSEC3 values can reduce/</div><div class="gmail_default"><br></div><div class="gmail_default"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_default">NSEC3 redords<br></div><div class="gmail_default"><br></div></blockquote>s/NSEC3 redords/NSEC3 records/</div><div class="gmail_default"><br></div><div class="gmail_default"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_default"> which return all all</div><div class="gmail_default"><br></div></blockquote>s/ which return all all / which return all /</div><div class="gmail_default"><br></div><div class="gmail_default">s/liase/liaise/ <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 24, 2024 at 12:25 PM Shane Kerr <<a href="mailto:shane@time-travellers.org" target="_blank">shane@time-travellers.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Maarten,<br>
<br>
Thank you for your suggestions, edits, and discussion. I've updated the <br>
final draft to give us a final, final draft. 😉<br>
<br>
I've included the last (?) version at the bottom of this e-mail, and <br>
responded to your suggestions inline below.<br>
<br>
On 19/03/2024 10.24, Maarten Aertsen wrote:<br>
<br>
>><br>
>> * Those running public DNS resolver services, and<br>
> <br>
> Should we remove "public" here?<br>
<br>
Hm, good point!<br>
<br>
>>    - Data Security: Since you are in control of the physical servers,<br>
>>      there is no risk of data leakage that can occur due to<br>
>>      vulnerabilities in multi-tenant virtualization platforms,<br>
>>      including CPU cache-based side-channel vulnerabilities. It could<br>
>>      be argued that attacks targeting such issues are rare, and their<br>
>>      impact on a DNS resolver service is low, but potential breaches<br>
>>      may have significant privacy impact. It is advised to evaluate<br>
>>      this against your organisation's risk model, or to discuss this<br>
>>      with your information security compliance experts.<br>
> <br>
> The ", or [..]" This feels a bit wordy; we don't suggest who to talk to <br>
> for all the other recommendations either.<br>
<br>
Makes sense. Discussing with experts is basically an option for <br>
everything. 😄<br>
<br>
>> #### Server capacity<br>
>><br>
>> If using a model that is easy to scale (cloud based, or Kubernetes<br>
>> based, or similar), then getting server capacity correct is largely a<br>
> <br>
> Given the earlier text about Kubernetes being 'similar' to cloud, "or <br>
> Kubernetes based, " can probably be removed.<br>
<br>
I'm inclined to leave this in. I'd rather be explicit than implicit.<br>
<br>
>><br>
>> Since DNS is mostly UDP-based, it is often easy to generate large<br>
>> amounts of spoofed traffic to and from DNS servers. DNS traffic is<br>
>> small compared to application traffic (videos and other content), but<br>
>> still significant. Authoritative server operators often build their<br>
>> networks and servers to handle 10 times their normal load. Recursive<br>
>> server operators may need to do the same, although the service only<br>
> <br>
> I would split this sentence, to read:<br>
> <br>
> server operators may need to do the same. When the service only<br>
<br>
Fair.<br>
<br>
>> accepts traffic from IP addresses that cannot be spoofed (for example<br>
>> users within a network that operated by the same company) then this<br>
> <br>
> remove "then"<br>
<br>
Done.<br>
<br>
>> ### Resilience<br>
>><br>
>> #### System Diversity<br>
>><br>
>> In addition to the software considerations above, operators should<br>
> <br>
> Either change to "software **licensing** considerations", or start the <br>
> sentence with Operators. After all, the previous part of the text is not <br>
> about software considerations, so current wording may be a bit confusing <br>
> to linear readers.<br>
<br>
Makes sense. I've started with Operators, no need to remind people of <br>
the other considerations here.<br>
<br>
>> consider whether to use different server implementations to provide<br>
> <br>
> s/server/software/ ?<br>
<br>
Makes sense.<br>
<br>
>> In addition to the DNS-specific security considerations, normal<br>
>> security best practices for any Internet service should be followed,<br>
>> including updating software updated regularly, patching software as<br>
>> soon as possible for any known security vulnerabilities, following<br>
>> CERT announcements and so on.<br>
> <br>
> Perhaps CERT/CSIRT. Not super important.<br>
<br>
You led me down a short trip to the Wikipedia:<br>
<br>
<a href="https://en.wikipedia.org/wiki/Computer_emergency_response_team" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Computer_emergency_response_team</a><br>
<br>
In spite of CMU's trademark on the term CERT (?!?!), I see way more CERT <br>
in the national lists than CSIRT, so I'll stick with it.<br>
<br>
In a random note, the RIPE Database has an IRT object type rather than a <br>
CERT or CSIRT object type, through some artifact of history. 😆<br>
<br>
>> #### Certification<br>
>><br>
>> It may be useful or required for an organization to follow specific<br>
> <br>
> s/follow/obtain/ ?<br>
<br>
In this case "follow" instead of "obtain" was deliberate. It might not <br>
be necessary to actually go through the cost of getting certification in <br>
order to get the benefits. But, since this section concludes mentioning <br>
that business customers will look for them, "obtain" probably makes more <br>
sense.<br>
<br>
>> certifications, such as ISO or ITIL. These can be government-defined<br>
> <br>
> Not sure if (unspecified) "ISO or ITIL" are the most relevant examples. <br>
> I would either remove or replace by say "ISO-IEC 27017, 27018 or SOC 2 <br>
> Type 2", which all relate to services provided by an organisation, to be <br>
> relied on by users of that service.<br>
<br>
Replaced with "ISO or SOC 2 Type 2".<br>
<br>
>> QUESTION: Do we need to publish certificate in other ways that via the<br>
>> DDR mechanisms?<br>
> <br>
> Should this remain in?<br>
<br>
Good point, removed!<br>
<br>
>> ### TTL-based Record Pre-Fetch<br>
>><br>
>> **TTL record pre-fetch should be enabled when available.**<br>
> <br>
> I would remove "when available", seeing that the last sentence of the <br>
> next paragraph already covers this.<br>
<br>
I'm leaving it in, since we use that exact phraseology elsewhere.<br>
<br>
>> ### DNS Error Reporting<br>
>><br>
>> **DNS error reporting may be enabled.**<br>
>><br>
>> For: All DNS resolver operators.<br>
>><br>
>> DNS error reporting is a way for resolver operators to let<br>
>> authoritative operators know about problems in authoritative servers<br>
>> or zones. It provides little direct value for the resolver operators,<br>
>> but over time should improve the overall quality of the DNS ecosystem.<br>
>> It is neither widely deployed nor standardized, but hopefully will be<br>
>> both soon. Resolver operators are encouraged to enable DNS error<br>
> <br>
> To me, 'may be' does not sound like much encouragement. Should this be <br>
> 'should be' instead? The paragraph already explains that availability is <br>
> limited for the moment.<br>
<br>
I'm not sure we have enough operational experience to know if this is <br>
actually a good idea. It may end up being spammy, or unintentionally <br>
result in privacy leaks, or any other kinds of unpleasant side-effects. <br>
I don't expect it, but I also don't feel comfortable recommending it <br>
strongly.<br>
<br>
>> ## Privacy, Filtering, Transparency<br>
> <br>
> Reviewing this next part was a bit painful, because I was involved in <br>
> writing it and yet I see quite a few places where I feel we should <br>
> improve. After re-reading RFC8932 for the second time, I noticed quite <br>
> some overlap where RFC8932 is more exhaustive, specific and practicable. <br>
> By creating overlap, I think we may be watering down our own advise. <br>
> Below I go over all the items one by one, reference specific sections to <br>
> advocate for removal of any such overlap.<br>
<br>
Okay, thanks for the detailed re-reading.<br>
<br>
>> ### Privacy & anonymity<br>
>><br>
>> Operators are advised to apply<br>
> <br>
> DNS resolver operators<br>
<br>
Yes.<br>
<br>
>> [RFC8932](<a href="https://www.rfc-editor.org/rfc/rfc8932.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8932.html</a>)<br>
>><br>
>> "Recommendations for DNS Privacy Service Operators" as follows:<br>
>><br>
>>    1. its operational and policy guidance related to DNS encrypted<br>
>>    transports and data handling, by applying all "Threat mitigations"<br>
>>    (thereby by meeting its level of "minimally compliant") and<br>
>>    additionally by applying the "Optimizations" on EDNS Client Subnet<br>
>>    listed in section 5.3.1.<br>
>><br>
>>    2. its framework on a Recursive operator Privacy Statement, by<br>
>>    publishing a privacy statement on their website that is compliant<br>
>>    with Section 6.<br>
> <br>
> I suggest we strengthen this sentence a bit, then remove duplicates in <br>
> the next section:<br>
> <br>
> s/that is compliant with/covers all topics in/<br>
<br>
Makes sense.<br>
<br>
>> #### Logging considerations<br>
>><br>
>> 1. Public privacy policy: DNS resolvers are recommended to publish<br>
>>     their privacy policies transparently on their website. It can be a<br>
>>     brief privacy commitment as well or be more elaborate on how the<br>
>>     privacy policy was made. (See for example<br>
>>     [Cloudflare's<br>
>> statement](<a href="https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver" rel="noreferrer" target="_blank">https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver</a>)<br>
>> or [Quad9's privacy page](<a href="https://www.quad9.net/service/privacy/)" rel="noreferrer" target="_blank">https://www.quad9.net/service/privacy/)</a>.)<br>
>><br>
>>     Such policies should explicitly mention the sampling rate of DNS<br>
>>     queries/responses that are kept, and whether these are anonymized.<br>
> <br>
> This is fully covered by the reference to RFC8932, Section 6. I suggest <br>
> we remove this text.<br>
<br>
Okay, that makes some sense. I kept the examples from Cloudflare and <br>
Quad9, but moved them at the end of the previous section.<br>
<br>
>> 2. Third party access to personal data: it seems that the only<br>
>>     critical personal data that DNS resolvers collect are IP addresses<br>
>>     and the queries that are resolved.  The other meta data collected<br>
>>     can be used to have an understanding of for example which user<br>
>>     accessed which website which can reveal information about a<br>
>>     person’s health, lifestyle and other personal preferences (we call<br>
>>     this profiling). For example, resolving the website for alcoholics<br>
>>     anonymous may tell you something about the health of a person<br>
>>     behind an IP address. IP addresses are personally identifiable<br>
>>     information. Follow the applicable privacy laws or privacy<br>
>>     principles when receiving third party requests to access. <br>
> <br>
>>     Resolvers<br>
>>     should only comply with such requests when balancing legitimate<br>
>>     third party interest with other fundamental rights.<br>
> <br>
> This goes beyond RFC8932, Section 5.3.3 and Section 6.1.1 item 2 and may <br>
> therefore be worth keeping.<br>
> <br>
> I suggest re-ordering this paragraph a bit to start with the advice. The <br>
> following is an attempt to reorder:<br>
> <br>
> Resolver operators may receive third party requests for information they <br>
> have logged that relates to users, including IP addresses, queries and <br>
> meta data.  Resolvers should only comply with such requests when <br>
> balancing legitimate third party interest with the user's fundamental <br>
> rights, including rights to privacy. Usage information can be personal <br>
> data, PII or similarly regulated under the privacy laws applicable to <br>
> the users, operator or third party, revealing a person's health, <br>
> lifestyle or other personal preferences (profiling). For example, <br>
> logging information that documents a user resolving a website for <br>
> alcoholics anonymous may relate to the health of a person behind an IP <br>
> address.<br>
<br>
Makes sense, I've included this text.<br>
<br>
>> 3. Access to data for researchers: how it is done, who has access and<br>
>>     who can request access, how the resolver makes a decision to give<br>
>>     access (validated and credible researchers, what they can access<br>
>>     and other issues)<br>
> <br>
> Covered in RFC8932, Section 5.3.3. Suggest removal.<br>
<br>
Removed.<br>
<br>
>> 4. Data minimization: do not collect personal information not needed<br>
>>     for critical operations.  Only retain or use what is being asked<br>
>>     (the query). If collecting data to make the service more private<br>
>>     and secure, explain the rationale for each piece of data (data<br>
>>     collection purpose)<br>
> <br>
> Covered in RFC8932 section 5.2.1 and section 5.2.2. Suggest removal.<br>
<br>
Removed.<br>
<br>
>> 5. Encryption: If data is encrypted, explain how it has been encrypted<br>
>>     (DoH, DoT, or so on).<br>
> <br>
> Covered in RFC8932, Section 6.1.2, item 2. Suggest removal.<br>
<br>
Removed.<br>
<br>
>> 6. Data security and retention: when to delete the data and how it is<br>
>>     stored<br>
> <br>
> Data retention is covered in RFC8932 section 5.2.1 and section 5.2.2.<br>
> Section 5.2.1, last bullit under mitigations sets a security goal <br>
> relating to data access, though the word security is not used (it is the <br>
> scope of the entire document).<br>
> <br>
> Suggest removal. Alternatively, abstract to a level higher than RFC8932 <br>
> by stating something like the following (with limited operational value):<br>
> <br>
> 2. Data security: DNS Resolver operators should take appropriate <br>
> technical and organisational measures to protect logging information <br>
> that relates to users.<br>
<br>
I've included this higher-level recommendation.<br>
<br>
>> **Legal requests and blocking and filtering laws:** DNS resolvers<br>
> <br>
> operators<br>
<br>
Updated.<br>
<br>
>> should not filter content and block access to web-services. When the<br>
>> local law requires blocking, and the law applies to the resolver, the<br>
>> resolver should transparently disclose a list of blocked websites and<br>
>> services, when possible (disclosing such a list may not be allowed by<br>
>> law or regulation). Similarly, the resolver should disclose the source<br>
>> of such block lists, when possible.<br>
>><br>
>> If it is not possible to disclose the source of blocklists, operators<br>
>> should try to be as transparent as possible about how they receive<br>
>> those blocklists, based on what criteria, and how they mitigate errors<br>
>> and false positives. Disclosing which organizations operators interact<br>
>> with, how they liase, and so on, can help users understand the impact<br>
>> on the service provided.<br>
>><br>
>> If possible, resolvers should provide information about blocked<br>
>> responses via the Extended DNS Error with the Blocked, Censored,<br>
>> Filtered, or Prohibited code - whichever applies best - along with a<br>
>> text why the response was blocked, censored, filtered, or prohibited.<br>
>><br>
>> [RFC 8914](<a href="https://www.rfc-editor.org/rfc/rfc8914.html#section-4.16" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8914.html#section-4.16</a>)<br>
>> provides information about the meanings of the different codes.<br>
> <br>
> I like these paragraphs, but they are also covered by RFC8932, section <br>
> 6.1.1 item 6 (result filtering), which we already advise to apply.<br>
> As an example of where that section is stronger, it does not feature <br>
> 'when possible' escape hatches.<br>
> <br>
> I'm not sure what to do here. At a minimum, I believe we should make a <br>
> reference to that content and substantiate why we feel it is worth <br>
> repeating here (while not the other topics of RFC8932).<br>
<br>
Interesting. The "when possible" language was added in recognition that <br>
there may be legal or other barriers preventing such transparency.<br>
<br>
Also, RFC 8932 6.1.1 just talks about documentation... our text here <br>
actually recommends not filtering, which RFC 8932 does not do.<br>
<br>
RFC 8932 also doesn't reference RFC 8914, which makes sense since they <br>
came out very near to each other.<br>
<br>
So... I understand the concern about re-specifying things, but I'm <br>
actually happy to let this text stand.<br>
<br>
>> **Community governance of blocklists:** blocklists, if mandatory, have<br>
>> to be audited and assessed by third parties and there should be a<br>
>> right to appeal for those blocked. The Internet community can vet the<br>
>> blocklists from time to time to avoid blocking access to websites that<br>
>> are mistakenly blocked. During crisis - when mistakes can have drastic<br>
>> effects on accessing a critical service - preferably filtering and<br>
>> blocking should not be used.<br>
> <br>
> This is not covered by 8932, so relevant to keep.<br>
<br>
👍<br>
<br>
>> ### Transparency<br>
> <br>
> Suggest leading with the advice:<br>
> <br>
> Public DNS resolver operators should publish transparency reports to <br>
> build user trust in their adherence to policies and practices. This goes <br>
> beyond our advise to apply RFC8932, section 6.2.<br>
<br>
Makes sense. Updated.<br>
<br>
>> DNS resolvers usually provide transparency reports once a year. The<br>
> <br>
> Suggest to replace with:<br>
> <br>
> A common frequency is once a year. The<br>
<br>
Done.<br>
<br>
>> #### Voluntary certificates and standards<br>
>><br>
>> Some DNS resolvers opt for obtaining certificates in security and<br>
>> privacy. Some also undertake audits on their privacy practices. See<br>
>> for example:<a href="https://www.cloudflare.com/trust-hub/compliance-resources/" rel="noreferrer" target="_blank">https://www.cloudflare.com/trust-hub/compliance-resources/</a><br>
> <br>
> Suggest removing this; certification is already covered under ### <br>
> Resilience above.  Should the group feel that this is the most <br>
> appropriate place, I suggest moving that section to replace the one here.<br>
<br>
Good point. I added a bit of text mentioning audits or reports, and <br>
include the link as an example there.<br>
<br>
>> #### Human rights considerations<br>
>><br>
>> DNS resolvers can opt for declaring their understanding of their<br>
>> responsibilities regarding human rights from the Universal Declaration<br>
>> of Human Rights. Specifically, Quad9 mentions rights to freedoms<br>
> <br>
> s/Specifically/As an example of a public DNS resolver operator/<br>
<br>
Make sense, updated.<br>
<br>
--<br>
Shane<br>
<br>
# DNS Resolver Recommendations<br>
<br>
About the DNS Resolver Best Common Practice Task Force<br>
<br>
<a href="https://www.ripe.net/participate/ripe/tf/dns-resolver-best-common-practice-task-force" rel="noreferrer" target="_blank">https://www.ripe.net/participate/ripe/tf/dns-resolver-best-common-practice-task-force</a><br>
<br>
## Terminology<br>
<br>
* Open Resolver: A DNS resolver that accepts queries from any client.<br>
   Often the result of misconfiguration.<br>
<br>
* Public Resolver: A resolver intentionally configured to be an open<br>
   resolver.<br>
<br>
## Introduction<br>
<br>
### What Is This Document? Who Is It For?<br>
<br>
This document presents recommendations and best current practices for<br>
operating DNS resolvers, both public and non-public ones. It covers<br>
technical aspects of operations and provides best practice<br>
recommendations for data management, with a particular focus on user<br>
privacy, security, and resilience.<br>
<br>
The document serves as guidance for the wider Internet community,<br>
offering input to:<br>
<br>
* Those running DNS resolver services, and<br>
* Those who want to make informed choices between such services.<br>
<br>
Its purpose is to provide clear guidance and promote effective<br>
practices in DNS resolver operation.<br>
<br>
The intended audience is not the entire DNS community. Advice here is<br>
probably not useful for operators of authoritative servers, domain<br>
registrars, and so on. It is also not meant to be an introductory or<br>
educational document. There are many documents which cover the basics<br>
of DNS and the roles of organizations in it; a good overview is:<br>
<br>
Addressing the challenges of modern DNS - a comprehensive tutorial<br>
by van der Toorn et al.<br>
<br>
<a href="https://ris.utwente.nl/ws/files/282427879/1_s2.0_S1574013722000132_main.pdf" rel="noreferrer" target="_blank">https://ris.utwente.nl/ws/files/282427879/1_s2.0_S1574013722000132_main.pdf</a><br>
<br>
The document does not consider how to measure adherence to these<br>
recommendations. So it is not intended to be used for certification,<br>
although certification created based on the principles here is<br>
possible.<br>
<br>
### How Is This Document Organized?<br>
<br>
This document has a number of sections, and specific recommendations<br>
in each section. The intent is for each recommendations to have clear<br>
guidance at the top, and then background and discussion related to the<br>
recommendation afterwards. Each recommendation indicates whether it is<br>
mostly for operators of public resolvers or for operators of any<br>
resolver.<br>
<br>
### About Recomendation Text<br>
<br>
This is not a standards document, and does not propose any way to<br>
measure compliance or interoperability. It does use words like<br>
"should" or "may be" throughout. These are meant to be interpreted in<br>
the usual English sense, and not as IETF-style RFC 2119 jargon.<br>
<br>
## System and Network Hardening<br>
<br>
### Infrastructure considerations<br>
<br>
Running any Internet service requires attention to the infrastructure<br>
used to operate it. This section discusses various approaches that can<br>
be used to run a DNS resolver. Everything applies to both public and<br>
non-public DNS resolvers.<br>
<br>
#### Bare metal or public cloud<br>
<br>
All DNS resolver software can run either on dedicated servers (rented<br>
or colocated), or in virtualized clouds, or in a combination of those.<br>
Every approach has pros and cons. Most of these are not specific to<br>
running DNS resolvers, however, some of them are.<br>
<br>
**Running DNS resolver instances as OS level daemons on bare metal<br>
hosts:**<br>
<br>
Pros:<br>
<br>
   - Performance: Bare metal servers have direct access to the<br>
     underlying hardware, and can offer superior performance/cost<br>
     balance by avoiding the overhead associated with virtualization.<br>
     Moreover, you have full control over the server's configurations,<br>
     down to the hardware level, which can be beneficial for<br>
     performance and cost optimization once you get the understanding<br>
     of your typical work load during peak hours.<br>
<br>
   - Data Security: Since you are in control of the physical servers,<br>
     there is no risk of data leakage that can occur due to<br>
     vulnerabilities in multi-tenant virtualization platforms,<br>
     including CPU cache-based side-channel vulnerabilities. It could<br>
     be argued that attacks targeting such issues are rare, and their<br>
     impact on a DNS resolver service is low, but potential breaches<br>
     may have significant privacy impact. It is advised to evaluate<br>
     this against your organisation's risk model.<br>
<br>
   - Predictability: Because there is no virtualization layer and no<br>
     "noisy neighbours" on the host, the performance of your servers is<br>
     more predictable.<br>
<br>
Cons:<br>
<br>
   - Cost of failure: If you pick hardware configuration that is not<br>
     optimal for the workload of your DNS resolver, you may need to<br>
     upgrade and replace hardware components afterwards. Ways to reduce<br>
     this risk include renting servers instead of buying them, carrying<br>
     load testing with data similar to production workloads, and<br>
     providing limited beta access to the service before it fully<br>
     enters the production phase.<br>
<br>
   - Scalability: Scaling up with physical servers means acquiring or<br>
     renting, installing, and configuring new hardware, which will take<br>
     more time than provisioning new virtual servers in a cloud<br>
     environment. Moreover, most cloud environments will provide you<br>
     with cluster autoscaling features, which could barely be achieved<br>
     in bare metal.<br>
<br>
   - Maintenance: You will be responsible for all server maintenance<br>
     tasks, including hardware issues, which can require significant<br>
     effort and specific expertise.<br>
<br>
   - Redundancy: Setting up high availability and disaster recovery<br>
     strategies can be more complex and time consuming compared to the<br>
     cloud, where these features are often provided as value added<br>
     products. See the Redundancy section for more details.<br>
<br>
**Running DNS resolver instances in containers in a public cloud:**<br>
<br>
Pros:<br>
<br>
   - Scalability: Clouds excel at scaling applications. You can scale<br>
     up and down rapidly based on load, which is important for a DNS<br>
     resolver that needs to handle variable query loads. In case of<br>
     regional or geographically distributed resolvers, in every region<br>
     where the resolver would be deployed, daily periodicity is likely<br>
     to be observed, for example peak hour is likely to occur around<br>
     19:00 local time, and off-peak hours may begin at around<br>
     01:00-03:00. In a situation like that, using cluster autoscaling<br>
     features and tools, you can run less instances in the night and<br>
     more instances throughout the day, which may help to optimize your<br>
     cloud hosting costs.<br>
<br>
   - Fault Tolerance and High Availability: Most clouds have built-in<br>
     strategies, features, and products for handling node failures,<br>
     which can increase your service's availability.<br>
<br>
   - Deployment and Management: Cloud providers offer built-in methods<br>
     to deploy and manage applications, which can simplify operations<br>
     and reduce the likelihood of human errors if your infrastructure<br>
     management department is already familiar with these tools.<br>
<br>
   - Cost: While this largely depends on your specific usage, cloud<br>
     services can sometimes be more cost-effective than managing your<br>
     own physical servers, especially when you consider the total cost<br>
     of ownership, including power, cooling, and maintenance.<br>
<br>
Cons:<br>
<br>
   - Performance: The virtualization layer of public clouds can impact<br>
     performance. While this certainly could be mitigated through<br>
     scaling the number of virtual hosts, the cost would also increase<br>
     accordingly.<br>
<br>
   - Complexity: Advanced cloud technologies are complex systems which<br>
     come with a steep learning curve. Without prior experience,<br>
     properly configuring and managing a cloud-based compute cluster<br>
     can be challenging.<br>
<br>
   - Cost Variability: While the cloud can be cheaper, it can also be<br>
     more expensive if not properly managed. Costs can rise<br>
     unexpectedly based on traffic. Make sure to always set some limits<br>
     on how much may be spent on hosting in the cloud control panel,<br>
     and to set up notifications to be sent to you when these<br>
     thresholds are about to be triggered.<br>
<br>
   - Multi-tenancy Risks: In a public cloud environment, the "noisy<br>
     neighbour" problem could potentially affect your service's<br>
     performance. Additionally, even though cloud providers take steps<br>
     to isolate tenant environments, vulnerabilities could potentially<br>
     expose sensitive data (see the previous section for a detailed<br>
     explanation).<br>
<br>
**Additional considerations**<br>
<br>
   - In today's environments, Kubernetes and Terraform are sometimes<br>
     used as a substitute for cloud APIs when it comes to production<br>
     services' management. When running a DNS resolver in a Kubernetes<br>
     cluster on top of a public cloud environment, all the pros and<br>
     cons of the public cloud apply; basically, Kubernetes becomes your<br>
     public cloud provider. If you have significant prior experience<br>
     running services in Kubernetes in production, you may successfully<br>
     replicate your experience with the DNS resolver software.<br>
     Otherwise, we would advise against Kubernetes in this case.<br>
<br>
   - The only reason we may find to run a DNS resolver in a Kubernetes<br>
     cluster on top of self-hosted dedicated servers is when you have<br>
     significant hands-on experience with Kubernetes and it is natural<br>
     for you to manage applications this way. Otherwise, running DNS<br>
     resolver daemons in containers brings little, if any, benefit.<br>
     Autoscaling features are not available to you in this case, and<br>
     neither horizontal nor vertical pod autoscaling is of any use,<br>
     because DNS resolver software typically scales in-host by itself<br>
     just fine.<br>
<br>
   - When designing a cluster of resolvers for autoscaling, keep in<br>
     mind that newly spawned resolver machines would need to populate<br>
     resolver cache first before they are fully useful. Your DNS<br>
     resolver software may provide cache replication mechanisms.<br>
     Otherwise, it is safe to overprovision clusters somewhat under<br>
     heavy load, and discarding excessive instances once all the caches<br>
     are populated and the average load of a compute instance<br>
     decreases. In addition, it may be worthwhile to consider sharing<br>
     cache data between instances.<br>
<br>
   - It is always advised to prefer environments your infrastructure<br>
     management team is familiar with.<br>
<br>
### Software considerations<br>
<br>
#### Open Source<br>
<br>
**Recommendation**: Choose any well-maintained DNS software you are<br>
comfortable using. Regardless of which software you choose, ensure you<br>
have somewhere to go for support. In the case of open source software,<br>
consider providing financial support to ensure continued development.<br>
Some open source maintainers take donations, while others offer<br>
support contracts.<br>
<br>
There are both open source and proprietary implementations of DNS<br>
resolver software. Mixing these is also possible, for example, by<br>
using proprietary extensions with open source software or deploying<br>
open source software modified in-house.<br>
<br>
General observations:<br>
   - Software licensing is orthogonal to software security. Neither is<br>
     proprietary software less secure on principle nor are<br>
     contributions by "unknown" developers more of a risk in open<br>
     source.<br>
<br>
Benefits of open source:<br>
   - Open source allows for inspection, independent auditing, and<br>
troubleshooting.<br>
   - Open source can avoid vendor lock-in.<br>
   - Open source can aid internet standards development.<br>
     Widely-deployed open source implementations allow proponents of<br>
     standards drafts to contribute proof of concept implementations<br>
     without permission or cooperation of vendors.<br>
<br>
Drawbacks of open source<br>
   - Both open source and proprietary software require skilled<br>
     maintenance, which has costs. Proprietary licensed software or<br>
     appliances typically come with license fees to cover these. In<br>
     contrast, open source licenses decouple usage by operators from<br>
     monetary compensation to developers. It is up to operators to<br>
     consider the financial sustainability of continued maintenance of<br>
     the open source DNS software they depend upon.<br>
<br>
Please also consider deploying different software implementations to<br>
ensure diversity, as discussed in the diversity section below.<br>
<br>
### Networking considerations<br>
<br>
#### IPv4 and IPv6<br>
<br>
**If available, both IPv4 and IPv6 must be deployed.**<br>
<br>
Large parts of the authoritative DNS are only accessible via IPv4, so<br>
the resolver must be able to originate IPv4 queries. Authoritative DNS<br>
that is only accessible via IPv6 is very rare.<br>
<br>
Depending on the connectivity of clients, a resolver may be IPv4-only,<br>
IPv6-only, or support IPv4 and IPv6.<br>
<br>
#### Addressing<br>
<br>
**Using multiple IP addresses for the service address should be<br>
considered.**<br>
<br>
Using 2 or more IPv4 addresses and 2 or more IPv6 addresses from<br>
different RIR will allow resilience in failure at an RIR, either<br>
governance, security, or technical. Note that support for multiple<br>
addresses for recursive resolvers varies and some clients perform<br>
poorly if any address does not respond normally.<br>
<br>
There is no need to pick an IPv4 address with all octets the same,<br>
like 2.2.2.2 or 11.11.11.11.<br>
<br>
**Publishing a list of back-end addresses used for resolving should be<br>
considered.**<br>
<br>
Publishing a list of back-end addresses used for resolving can be<br>
useful for other network & DNS operators (for example, geo-IP<br>
location, making sure data is getting to correct places, and so on).<br>
<br>
#### High Availability<br>
<br>
This can be considered in terms of local and global scope.<br>
<br>
##### Local scope<br>
<br>
Inside a single location/region, such as an office, campus, or small<br>
ISP network, the main availability concern is that a resolver is<br>
always reachable.  Client systems can be configured with multiple<br>
resolver addresses, but the failover behaviour of stub resolvers to a<br>
second address can be painful.  Ideally the primary address is highly<br>
available and such fallback rarely required. How much effort is put<br>
into ensuring this is true should probably scale in line with the<br>
number of users, or sensitivity of the clients using that resolver to<br>
delayed resolution.<br>
<br>
There are several ways to promote high availability of an individual<br>
resolver address, such as dedicated load balancing equipment, or<br>
network techniques like VRRP, or IP anycast. These generally have in<br>
common a pool of recursive servers and the means to direct queries to<br>
them when a health check has determined them to be capable of<br>
answering those queries.<br>
<br>
Dedicated free or commercially produced, hardware or software load<br>
balancing solutions are available. These typically own the resolver IP<br>
address and forward queries to the currently available instances of a<br>
pool of recursive servers.<br>
<br>
VRRP enables a technique to make the resolver IP address available on<br>
multiple servers, often used to provide automatic failover between<br>
two.  A pool of recursive servers using this technique must reside in<br>
the same broadcast domain.<br>
<br>
IP anycast in the local scope typically involves a pool of recursive<br>
servers advertising a route to a shared resolver IP address into a<br>
routing protocol.  This can be configured in failover or load-sharing<br>
configurations. A load sharing configuration typically requires<br>
network equipment able to balance traffic to a destination over equal<br>
cost paths (ECMP). A pool of recursive servers using this technique<br>
can be distributed in different parts of the network.<br>
<br>
##### Global scope<br>
<br>
The same concerns as for local service availability are present in the<br>
global scope, with the added issue that DNS resolution over long<br>
distances may be slow. Practically speaking, only multiple resolver<br>
addresses, or IP anycast are useful strategies here. The motivations<br>
for finding better failover solutions than multiple resolver addresses<br>
have been covered above.<br>
<br>
IP anycast in the global scope means routing the same IP prefix to<br>
more than one location. This can provide effective solutions for<br>
failover and, when optimally configured for routing client queries to<br>
the topologically least distant recursive server location. IP anycast<br>
in the global scope requires the use of globally routable prefixes. If<br>
a separate prefix is to be used for anycasting, usually this means a<br>
/24 in IPv4 and a /48 in IPv6, as those are the smallest sizes that<br>
will be widely propagated in BGP. A common practice is to use a<br>
covering prefix (/23 in IPv4 or /47 in IPv6) for fallback, and a<br>
more-specific prefix (/24 or /48) for the traffic. The more-specific<br>
prefix can then be withdrawn to send traffic to a backup site; this<br>
will happen automatically if the site is disconnected from routing.<br>
<br>
[RFC7094](<a href="https://www.rfc-editor.org/rfc/rfc7094.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc7094.html</a>) discusses<br>
anycast architecture in detail, including references to various other<br>
RFC which discuss anycast in general and to DNS in particular.<br>
<br>
[RFC4786](<a href="https://datatracker.ietf.org/doc/html/rfc4786" rel="noreferrer" target="_blank">https://datatracker.ietf.org/doc/html/rfc4786</a>) discuses<br>
operation of anycast services.<br>
<br>
##### Generally<br>
<br>
Operators of a globally scoped recursive service are encouraged to<br>
also adopt the local scope recommendations in each of the locations<br>
where the service is provisioned.<br>
<br>
Though the above deals with the shortcomings of reliance on stub<br>
resolver failover between a list of addresses those recommendations<br>
shouldn’t be seen as an exclusive alternative. Multiple resolver<br>
addresses, where each is provisioned using differing failover<br>
strategies, can provide a resolver of last resort and further improved<br>
resilience.<br>
<br>
#### Ingress Filtering<br>
<br>
**Ingress Filtering to follow BCP 38 should be deployed.**<br>
<br>
DNS normally uses UDP traffic, which makes it a common vector of both<br>
[reflection](<a href="https://en.wikipedia.org/wiki/Reflection_attack" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Reflection_attack</a>) and<br>
[amplification](<a href="https://www.cisa.gov/news-events/alerts/2014/01/17/udp-based-amplification-attacks" rel="noreferrer" target="_blank">https://www.cisa.gov/news-events/alerts/2014/01/17/udp-based-amplification-attacks</a>)<br>
attacks. To minimize the amount of spoofed traffic that a resolver<br>
responds to, the network should be configured as recommended in<br>
[BCP 38](<a href="https://www.rfc-editor.org/rfc/rfc2827.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc2827.html</a>).<br>
<br>
#### RPKI Sign Advertised Routes<br>
<br>
**Route Advertisements should be signed using RPKI**<br>
<br>
Using RPKI to sign any route advertisements - either toward<br>
authoritative servers or toward DNS clients - is straightforward to do<br>
and will reduce the impact of BGP misconfigurations and some BGP<br>
hijacking attempts.<br>
<br>
RPKI validation is also possible, although the effort is greater. It<br>
is possible that the hosting provider or the transit provider for your<br>
service validates BGP; asking and making this part of your selection<br>
criteria is reasonable.<br>
<br>
#### (D)DoS measures<br>
<br>
Denial-of-Service (DoS) attacks, both distributed (DDoS) and not are a<br>
threat to any Internet service. Network operators for a service<br>
providing any DNS service must be prepared for large amounts of attack<br>
traffic.<br>
<br>
In addition to attacks on the service itself, a resolver may be used<br>
both as an attack reflector and as an attack amplifier.<br>
<br>
Active monitoring of network and service usage, careful logging, and a<br>
security team that is able to respond to problem reports is necessary.<br>
Mitigation techniques will include filtering or rate-limiting traffic,<br>
both on the authoritative and client side of the resolver.<br>
<br>
### Capacity planning<br>
<br>
#### Server capacity<br>
<br>
If using a model that is easy to scale (cloud based, or Kubernetes<br>
based, or similar), then getting server capacity correct is largely a<br>
question of budgeting. If using a less-flexible model (bare metal for<br>
example), then under-estimating will mean problems delivering service.<br>
<br>
Hardware performance varies widely, as does operating system and<br>
resolver performance. Some lab testing will be necessary to estimate<br>
the number of systems needed.<br>
<br>
#### Network capacity<br>
<br>
Since DNS is mostly UDP-based, it is often easy to generate large<br>
amounts of spoofed traffic to and from DNS servers. DNS traffic is<br>
small compared to application traffic (videos and other content), but<br>
still significant. Authoritative server operators often build their<br>
networks and servers to handle 10 times their normal load. Recursive<br>
server operators may need to do the same. When the service only<br>
accepts traffic from IP addresses that cannot be spoofed (for example<br>
users within a network that operated by the same company) this can be<br>
reduced, for example to 3 times normal load. To estimate expected<br>
load, the best approach is to examine historical usage for the actual<br>
expected users of the system.<br>
<br>
### Resilience<br>
<br>
#### System Diversity<br>
<br>
Operators should consider whether to use different software<br>
implementations to provide service. This allows continued operation if<br>
a critical vulnerability is found in one implementation, by shifting<br>
traffic to other implementations.<br>
<br>
Placing resolvers and control systems in different physical locations<br>
will allow continued operation in the event of a disaster or other<br>
problem that impacts a single location. In addition, ensuring diverse<br>
connectivity to other networks will prevent single points of failure<br>
on the network side. Ensuring network diversity may take some care, as<br>
it is not always obvious what fate is shared between any given path;<br>
this may be physical, virtual, or organizational, and my sometimes be<br>
hidden.<br>
<br>
#### Security<br>
<br>
In addition to the DNS-specific security considerations, normal<br>
security best practices for any Internet service should be followed,<br>
including updating software updated regularly, patching software as<br>
soon as possible for any known security vulnerabilities, following<br>
CERT announcements and so on.<br>
<br>
#### Certification<br>
<br>
It may be useful or required for an organization to obtain specific<br>
certifications, such as ISO or SOC 2 Type 2. These can be<br>
government-defined or industry-defined. For end users there is<br>
typically not much direct value, but business customers will often<br>
look for services that are operated by organizations meeting such<br>
standards. Audits or other reports about this may be published, see<br>
for example:<br>
<a href="https://www.cloudflare.com/trust-hub/compliance-resources/" rel="noreferrer" target="_blank">https://www.cloudflare.com/trust-hub/compliance-resources/</a><br>
<br>
## DNS configuration knobs<br>
<br>
The DNS is an old protocol that has a lot of settings that can be<br>
tweaked. This section reviews these and provides recommendations on<br>
which should be used for a resolver.<br>
<br>
### DNSSEC validation<br>
<br>
**DNSSEC validation should be enabled.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
DNSSEC validation is the best way to ensure that the answers from the<br>
owner of domain name being queried are returned.<br>
<br>
The root KSK must be updated when it changes. While<br>
[RFC5011](<a href="https://www.rfc-editor.org/rfc/rfc5011.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc5011.html</a>) defines an<br>
automated way to do this, a resolver operator will probably either<br>
manage this trust anchor directly or have it updated via OS updates.<br>
<br>
[RFC9364](<a href="https://www.rfc-editor.org/rfc/rfc9364.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc9364.html</a>) provides a lot<br>
of useful information, and links to further documents about DNSSEC.<br>
However, operators usually do not need to know the details, and can<br>
simply ensure that DNSSEC validation is enabled in their software.<br>
<br>
Resolver software that does not support DNSSEC validation should be<br>
avoided.<br>
<br>
### DNS Transport Protocols<br>
<br>
**UDP and TCP must be supported.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
UDP is what most clients use, and TCP is necessary for DNS answers<br>
that are too large for a single UDP packet.<br>
<br>
[RFC7766](<a href="https://www.rfc-editor.org/rfc/rfc7766.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc7766.html</a>) explains why<br>
TCP is necessary in more detail.<br>
<br>
### Packet Fragmentation Avoidance<br>
<br>
**Servers should be configured to avoid fragmentation.**<br>
<br>
For: ALL DNS resolver operators.<br>
<br>
Packet fragmentation can cause issues with DNS over UDP, especially<br>
over IPv6. These issues can be minimized by choosing implementations<br>
that set IP options to avoid this, and by taking care with EDNS0<br>
message sizes.<br>
<br>
Recommendations are available in<br>
[draft-ietf-dnsop-avoid-fragmentation](<a href="https://datatracker.ietf.org/doc/draft-ietf-dnsop-avoid-fragmentation/" rel="noreferrer" target="_blank">https://datatracker.ietf.org/doc/draft-ietf-dnsop-avoid-fragmentation/</a>).<br>
<br>
### Encrypted DNS<br>
<br>
**At least one of DNS-over-TLS (DoT), DNS-over-HTTPS (DoH), and<br>
DNS-over-QUIC (DoQ) should be supported.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
DoT, DoH, and DoQ are different technologies that all provide an<br>
encrypted channel between the resolver and the authoritative server.<br>
DoT is the oldest, and provides encrypted DNS using TLS. DoH uses HTTP<br>
over TLS as a way to transmit queries and answers, and is widely<br>
supported by web browsers. DoQ is the newest, and provides advanced<br>
features such as separate streams for each query, avoiding the "head<br>
of line" blocking problem common with all protocols layered on top of<br>
TCP (such as DoT and DoH).<br>
<br>
- DoT<br>
   - [RFC7858](<a href="https://www.rfc-editor.org/rfc/rfc7858.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc7858.html</a>)<br>
- DoH<br>
   - [RFC8484](<a href="https://www.rfc-editor.org/rfc/rfc8484.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8484.html</a>)<br>
- DoQ<br>
   - [RFC9250](<a href="https://www.rfc-editor.org/rfc/rfc9250.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc9250.html</a>)<br>
<br>
**Discovery of DNS Designated Resolvers**<br>
<br>
There are new mechanisms that allow DNS clients to use DNS records to<br>
discover encrypted DNS configurations.  Resolvers should publish DNS<br>
records to assist clients finding encrypted resolvers.<br>
<br>
- Discovery of Designated Resolvers<br>
   - [RFC9462](<a href="https://www.rfc-editor.org/rfc/rfc9462.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc9462.html</a>)<br>
<br>
### QNAME Minimization<br>
<br>
**QNAME minimization should be enabled.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
Using QNAME minimization, a resolver does not send the full name that<br>
it is trying to resolver to authoritative servers higher in the DNS<br>
hierarchy. So, for example, when querying "<a href="http://atlas.ripe.net" rel="noreferrer" target="_blank">atlas.ripe.net</a>" the servers<br>
for ".net" would only be asked for "<a href="http://ripe.net" rel="noreferrer" target="_blank">ripe.net</a>". This improves privacy<br>
for the end user querying the name.<br>
<br>
[RFC7816](<a href="https://www.rfc-editor.org/rfc/rfc7816.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc7816.html</a>) covers QNAME<br>
minimization.<br>
<br>
### Aggressive NSEC caching<br>
<br>
**Aggressive NSEC caching may be enabled.**<br>
<br>
For: Public resolver operators.<br>
<br>
"Aggressive NSEC caching", meaning negative caching based on NSEC and<br>
NSEC3 values, can reduce traffic greatly. It is important to protect<br>
against random subdomain attacks.<br>
<br>
This style of caching takes advantage of the way that NSEC and NSEC3<br>
records cover a range of names in a zone. A resolver can know that a<br>
query falls within such a range without sending any further queries,<br>
by remembering the NSEC or NSEC3 redords that is has seen as answers<br>
to earlier queries.<br>
<br>
Aggressive NSEC caching is almost always a good idea. However enabling<br>
this is less important for DNS resolver operators who have a close<br>
relationship with users, since they can stop attacks by blocking users<br>
or otherwise directly dealing with the source of abusive queries.<br>
<br>
[RFC8189](<a href="https://www.rfc-editor.org/rfc/rfc8189.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8189.html</a>) describes<br>
negative caching in detail.<br>
<br>
### ANY Queries<br>
<br>
**ANY queries responses should be limited.***<br>
<br>
For: All resolver operators.<br>
<br>
Public or large-scale resolvers should be exceptionally careful with<br>
queries of type ANY, which return all all records at a given name. If<br>
a resolver replies with all of the records cached for a given type,<br>
the response can be much larger than for a single record type. Strict<br>
limits should be enforced on volumes of such queries to prevent<br>
amplification abuse, or truncation should be applied to prevent<br>
spoofed redirections.<br>
<br>
[RFC8482](<a href="https://www.rfc-editor.org/rfc/rfc8482.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8482.html</a>) describes<br>
several approaches to limiting ANY responses.<br>
<br>
### Local Root<br>
<br>
**Local root should be used.**<br>
<br>
For: Public resolver operators.<br>
<br>
Running a local root has several benefits, but it is an additional<br>
component to maintain. For public resolver operators this is<br>
definitely worth the cost, but other resolver operators may choose to<br>
simply send all queries to the well-distributed root name servers.<br>
<br>
[RFC8806](<a href="https://www.rfc-editor.org/rfc/rfc8806.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8806.html</a>) describes local<br>
root, including several example configurations.<br>
<br>
In the future it will be possible to use ZONEMD to validate the copy<br>
of the root zone obtained before using it. This is currently available<br>
for the root zone.<br>
<br>
[RFC8976](<a href="https://www.rfc-editor.org/rfc/rfc8976.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8976.html</a>) describes ZONEMD.<br>
<br>
### DNS Cookies<br>
<br>
**Interoperable DNS Cookies may be supported.**<br>
<br>
For: Public resolver operators.<br>
<br>
DNS cookies provide some improved security over plain UDP, and are<br>
designed to be more lightweight than TCP. If more than one server is<br>
responding for a given IP address, then the Server Secret must be<br>
shared by all servers, and the answer must be constructed in a<br>
consistent manner by all server implementations.<br>
<br>
Since client-side support for DNS cookies is not very widespread, and<br>
since managing server-side secrets involves some work, the costs may<br>
outweigh the benefits for some non-public resolver operators.<br>
<br>
[RFC7873](<a href="https://www.rfc-editor.org/rfc/rfc7873.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc7873.html</a>) describes DNS<br>
cookies, and [RFC9018](<a href="https://www.rfc-editor.org/rfc/rfc9018.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc9018.html</a>)<br>
standardizes shared DNS cookies.<br>
<br>
### TTL Recommendations<br>
<br>
**TTL limits may be adjusted.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
Software typically defaults to a maximum stored TTL of 1 or 2 days.<br>
A lower TTL will mean removing rarely-used records that have long TTL,<br>
and should not have much operational impact from a CPU or network<br>
point of view.<br>
<br>
It is possible to set a minimum TTL in many implementations. This is a<br>
violation of the DNS protocol, although may be useful to reduce load<br>
from records with very low TTL (less than 5 seconds).<br>
<br>
Note that software may set different maximum and minimum TTL<br>
independent of the results that the resolver returns. That may have a<br>
significant impact on queries as well, but resolver operators cannot<br>
influence that.<br>
<br>
### TTL-based Record Pre-Fetch<br>
<br>
**TTL record pre-fetch should be enabled when available.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
Some resolvers have the ability to look up a record before it has<br>
expired from cache, in order to refresh the value and extend the TTL.<br>
This way there is never a time when the records are missing from the<br>
cache. This is not currently standardized, but a form of this was<br>
proposed in the IETF as<br>
[DNS<br>
Hammer](<a href="https://datatracker.ietf.org/doc/html/draft-wkumari-dnsop-hammer-03" rel="noreferrer" target="_blank">https://datatracker.ietf.org/doc/html/draft-wkumari-dnsop-hammer-03</a>).<br>
We recommend turning this feature on if available.<br>
<br>
### EDNS Client Subnet (ECS)<br>
<br>
**ECS may be enabled.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
EDNS Client Subnet (ECS) allows the resolver to include information<br>
about the IP address of the client querying it when sending messages<br>
to authoritative servers. This may allow authoritative servers to<br>
provide different answers which are more appropriate for the client.<br>
However, ECS will increase the amount of cache space required by<br>
resolvers, may reduce DNS performance, and may have privacy<br>
implications.<br>
<br>
A resolver operator that has clients that are limited to a specific<br>
region may see no benefit. A resolver operator that has a widely<br>
distributed anycast network may not have much benefit from ECS, since<br>
the locations that initiate the query will be close to the client. But<br>
a resolver operator that answers client queries only from a few<br>
locations, and expects clients to come from a wide area, may provide<br>
better service for end-users by supporting ECS.<br>
<br>
EDNS client subnet is described in<br>
[RFC7871](<a href="https://www.rfc-editor.org/rfc/rfc7871.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc7871.html</a>), an<br>
informational RFC.<br>
<br>
### Extended DNS Errors<br>
<br>
**Extended DNS errors should be enabled.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
DNS traditionally provides very broad error reporting, SERVFAIL being<br>
the most common. This makes diagnosing and fixing problems difficult.<br>
Extended DNS errors provide extra information about failures, for<br>
example expired DNSSEC signatures. They also allow resolver operators<br>
to report administrative reasons for DNS failures, such as blocks due<br>
to legal requirements.<br>
<br>
[RFC8914](<a href="https://www.rfc-editor.org/rfc/rfc8914.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8914.html</a>) defines<br>
extended DNS errors.<br>
<br>
### Negative Trust Anchors<br>
<br>
**Negative trust anchors may be deployed.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
Negative trust anchors (NTA) allow a resolver operator to handle a<br>
case where an authoritative server has a DNSSEC problem and becomes<br>
inaccessible. They basically disable DNSSEC checking for a domain.<br>
When this is warranted is difficult to know with certainty, and will<br>
usually requires some manual checking. Since DNSSEC validation is now<br>
widespread, DNSSEC failures on the authoritative side will impact many<br>
resolvers.<br>
<br>
Because of these reasons this document does not recommend NTA, but<br>
also does not recommend that a deployment avoid NTA if it makes sense<br>
for that environment.<br>
<br>
Negative trust anchors are documented in<br>
[RFC7646](<a href="https://www.rfc-editor.org/rfc/rfc7646.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc7646.html</a>).<br>
<br>
### DNS Error Reporting<br>
<br>
**DNS error reporting may be enabled.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
DNS error reporting is a way for resolver operators to let<br>
authoritative operators know about problems in authoritative servers<br>
or zones. It provides little direct value for the resolver operators,<br>
but over time should improve the overall quality of the DNS ecosystem.<br>
It is neither widely deployed nor standardized, but hopefully will be<br>
both soon. Resolver operators are encouraged to enable DNS error<br>
reporting when it is available.<br>
<br>
DNS error reporting is proposed in<br>
[draft-ietf-dnsop-dns-error-reporting](<a href="https://datatracker.ietf.org/doc/draft-ietf-dnsop-dns-error-reporting" rel="noreferrer" target="_blank">https://datatracker.ietf.org/doc/draft-ietf-dnsop-dns-error-reporting</a>).<br>
<br>
### Trust Anchor Reporting<br>
<br>
**Trust anchor reporting should be enabled.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
Trust anchor reporting is a way for resolver operators to convey their<br>
DNSSEC trust anchor configuration to the operator of the zone that it<br>
is for. For most resolvers this is only the root zone. This<br>
information is intended to be used during a root KSK rollover to<br>
ensure that it is safe to proceed. In the future ICANN is planning an<br>
algorithm roll for the root KSK, and this information could be<br>
helpful. Resolver operators are encouraged to enable trust anchor<br>
reporting.<br>
<br>
[RFC8145](<a href="https://www.rfc-editor.org/rfc/rfc8145.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8145.html</a>) covers trust<br>
anchor reporting, in both possibilities available.<br>
<br>
### Name Server Identification<br>
<br>
**Servers should be configured to identify themselves.**<br>
<br>
For: All DNS resolver operators.<br>
<br>
Large resolver operations, especially publicly available resolvers,<br>
should support an in-band method of discovery that is obvious to<br>
permit users to discover what node has answered their query. This<br>
improves troubleshooting significantly, and may be useful for research<br>
and testing purposes. NSID (Name Server Identifier) is ideal for this,<br>
though also “CH TXT id.server” support is also reasonable. Geographic<br>
hints should be provided in this data, though specific host data is<br>
optional for arrays of servers in clusters. IATA codes have<br>
traditionally been used for naming points-of-presence, though this is<br>
at the discretion of the operator.<br>
<br>
[RFC5001](<a href="https://www.rfc-editor.org/rfc/rfc5001.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc5001.html</a>) describes NSID.<br>
<br>
[RFC4892](<a href="https://www.rfc-editor.org/rfc/rfc4892.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc4892.html</a>) describes name<br>
server identification in general, and documents the pre-NSID<br>
approaches.<br>
<br>
## Privacy, Filtering, Transparency<br>
<br>
### Privacy & anonymity<br>
<br>
DNS Resolver operators are advised to apply<br>
[RFC8932](<a href="https://www.rfc-editor.org/rfc/rfc8932.html" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8932.html</a>)<br>
<br>
"Recommendations for DNS Privacy Service Operators" as follows:<br>
<br>
   1. its operational and policy guidance related to DNS encrypted<br>
   transports and data handling, by applying all "Threat mitigations"<br>
   (thereby by meeting its level of "minimally compliant") and<br>
   additionally by applying the "Optimizations" on EDNS Client Subnet<br>
   listed in section 5.3.1.<br>
<br>
   2. its framework on a Recursive operator Privacy Statement, by<br>
   publishing a privacy statement on their website covers all topics in<br>
   Section 6. (See for example<br>
   [Cloudflare's <br>
statement](<a href="https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver" rel="noreferrer" target="_blank">https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver</a>)<br>
   or [Quad9's privacy page](<a href="https://www.quad9.net/service/privacy/)" rel="noreferrer" target="_blank">https://www.quad9.net/service/privacy/)</a>.)<br>
<br>
#### Logging considerations<br>
<br>
In addition to the logging recommendations from RFC8932, operators<br>
should consider the following:<br>
<br>
1. Third party access to personal data: Resolver operators may receive<br>
    third party requests for information they have logged that relates<br>
    to users, including IP addresses, queries and meta data.  Resolvers<br>
    should only comply with such requests when balancing legitimate<br>
    third party interest with the user's fundamental rights, including<br>
    rights to privacy. Usage information can be personal data,<br>
    Personally Identifable Infomation (PII) or similarly regulated<br>
    under the privacy laws applicable to the users, operator or third<br>
    party, revealing a person's health, lifestyle or other personal<br>
    preferences (profiling). For example, logging information that<br>
    documents a user resolving a website for alcoholics anonymous may<br>
    relate to the health of a person behind an IP address.<br>
<br>
2. Data security: DNS Resolver operators should take appropriate<br>
    technical and organisational measures to protect logging<br>
    information that relates to users.<br>
<br>
#### Advertisement Policy<br>
<br>
If there is any advertising from the service, the policy should be<br>
published as well as how it can potentially affect the users' privacy.<br>
<br>
### Filtering and blocking<br>
<br>
#### Block Lists<br>
<br>
Resolvers can be directed to block or modify answers in various ways.<br>
Blocklists may be provided by governments, communities, or other<br>
parties (for example security firms).<br>
<br>
Response Policy Zone (RPZ) allows a way to both document specific<br>
modifications that resolvers will make to DNS answers, and send the<br>
rules to resolvers. This allows updates to occur very quickly. If RPZ<br>
or some other high-speed blocking technology is used, the parties<br>
supplying these sources must be highly trusted, as changes to<br>
blocklists will usually immediately impact user queries.<br>
<br>
RPZ is not standardized, but there is an IETF draft,<br>
[draft-vixie-dnsop-dns-rpz](<a href="https://datatracker.ietf.org/doc/draft-vixie-dnsop-dns-rpz/00/" rel="noreferrer" target="_blank">https://datatracker.ietf.org/doc/draft-vixie-dnsop-dns-rpz/00/</a>).<br>
<br>
#### Legal blocking<br>
<br>
**Legal requests and blocking and filtering laws:** DNS resolver<br>
operators should not filter content and block access to web-services.<br>
When the local law requires blocking, and the law applies to the<br>
resolver, the resolver should transparently disclose a list of blocked<br>
websites and services, when possible (disclosing such a list may not<br>
be allowed by law or regulation). Similarly, the resolver should<br>
disclose the source of such block lists, when possible.<br>
<br>
If it is not possible to disclose the source of blocklists, operators<br>
should try to be as transparent as possible about how they receive<br>
those blocklists, based on what criteria, and how they mitigate errors<br>
and false positives. Disclosing which organizations operators interact<br>
with, how they liase, and so on, can help users understand the impact<br>
on the service provided.<br>
<br>
If possible, resolvers should provide information about blocked<br>
responses via the Extended DNS Error with the Blocked, Censored,<br>
Filtered, or Prohibited code - whichever applies best - along with a<br>
text why the response was blocked, censored, filtered, or prohibited.<br>
<br>
[RFC 8914](<a href="https://www.rfc-editor.org/rfc/rfc8914.html#section-4.16" rel="noreferrer" target="_blank">https://www.rfc-editor.org/rfc/rfc8914.html#section-4.16</a>)<br>
provides information about the meanings of the different codes.<br>
<br>
**Community governance of blocklists:** blocklists, if mandatory, have<br>
to be audited and assessed by third parties and there should be a<br>
right to appeal for those blocked. The Internet community can vet the<br>
blocklists from time to time to avoid blocking access to websites that<br>
are mistakenly blocked. During crisis - when mistakes can have drastic<br>
effects on accessing a critical service - preferably filtering and<br>
blocking should not be used.<br>
<br>
#### Opt-in/Opt-out Mechanisms<br>
<br>
End users may choose to use a DNS resolver that filters specific kinds<br>
of traffic. For example, they may wish to avoid potential malware web<br>
sites. Or resolver operators may be required to default to filtering<br>
but allowed for to provide an unfiltered DNS resolver service.<br>
<br>
Depending on the specific requirements, a resolver service may publish<br>
different IP addresses and what type of filtering applies to each<br>
address. It is also possible to perform client authentication and<br>
authorization, using IP-based authentication, TSIG keys, or<br>
client-side TLS certificates.<br>
<br>
### Transparency<br>
<br>
Public DNS resolver operators should publish transparency reports to<br>
build user trust in their adherence to policies and practices. This<br>
goes beyond our advise to apply RFC8932, section 6.2.<br>
<br>
A common frequency is once a year. The reports inform the public about<br>
disclosure of user information and removal of content required by law<br>
enforcement and other government agencies.<br>
<br>
Transparency reports should (to the extent that the law allows)<br>
indicate which government agencies and law enforcement agencies<br>
request access on what basis.<br>
<br>
It should also be clear from the transparency reports what kind of<br>
data has been requested and if content removal and content blocking<br>
have been requested. Categories of data include: Content Data, Basic<br>
Subscriber Data, Other Non-Content Data and Content Blocking.<br>
<br>
#### Negative Trust Anchor reporting<br>
<br>
Negative Trust Anchors (NTA) are discussed in the previous section on<br>
DNS configurations. If NTAs are present in the resolver, they should<br>
be published with as much detail as possible about them. This includes<br>
reasons for insertion, dates of activation and expected removal dates,<br>
or a published review date or cycle for when NTAs should be actively<br>
examined for deletion if such fine-grained information cannot be<br>
shared.<br>
<br>
NTAs are equivalent to a security fault, and may even be more<br>
significant than a block event as they remove expected trust behavior<br>
with limited signal of that trust downgrade ("limited" because few if<br>
any clients care about those response bits changing.).<br>
<br>
#### Human rights considerations<br>
<br>
DNS resolvers can opt for declaring their understanding of their<br>
responsibilities regarding human rights from the Universal Declaration<br>
of Human Rights. As an example of a public DNS resolver operator,<br>
Quad9 mentions rights to freedoms without distinction made on the<br>
basis of country, no interference with privacy, the right to freedom<br>
of opinion and expression, the right to peaceful assembly, and the<br>
right to freely participate in the cultural life of the community.<br>
<br>
See<br>
[Quad9's Human Rights<br>
Considerations](<a href="https://www.quad9.net/privacy/human-rights-considerations/" rel="noreferrer" target="_blank">https://www.quad9.net/privacy/human-rights-considerations/</a>)<br>
for the full statement.<br>
<br>
It also invokes other human rights related solutions other than<br>
[UDHR](<a href="https://www.un.org/en/universal-declaration-human-rights/" rel="noreferrer" target="_blank">https://www.un.org/en/universal-declaration-human-rights/</a>) such<br>
as Articles 8 and 9 of Resolution 42/15 of the United Nations Human<br>
Rights Council on the right to privacy in the digital age of 26<br>
September 2019 more directly define the responsibilities of the<br>
private sector toward the furtherance of human rights in modern terms.<br>
They also follow the Guidelines for Human Rights Protocol and<br>
Architecture Consideration of the Human Rights Protocol Considerations<br>
Research Group at Internet Research Task Force.<br>
<br>
The latest version of the IRTF<br>
[Guidelines for<br>
HRPC](<a href="https://tools.ietf.org/html/draft-irtf-hrpc-guidelines" rel="noreferrer" target="_blank">https://tools.ietf.org/html/draft-irtf-hrpc-guidelines</a>) may be<br>
considered for all network operators.<br>
<br>
## Appendix A: Why Did RIPE Write This Document?<br>
<br>
There is increasing concern that large open DNS resolvers will become<br>
centralised points of DNS operations on the Internet. In order to<br>
address this, the European Commission issued the<br>
[DNS4EU](<a href="https://hadea.ec.europa.eu/calls-proposals/equipping-backbone-networks-high-performance-and-secure-dns-resolution-infrastructures-works_en" rel="noreferrer" target="_blank">https://hadea.ec.europa.eu/calls-proposals/equipping-backbone-networks-high-performance-and-secure-dns-resolution-infrastructures-works_en</a>)<br>
proposal. However, such an initiative could lead to centralised<br>
guidance or regulation which might interfere with the decentralised<br>
way the Internet infrastructure works - including the DNS. See for<br>
reference the<br>
[RIPE NCC Open House<br>
discussion](<a href="https://labs.ripe.net/author/chrisb/dns4eu-ripe-ncc-open-house-discussion/" rel="noreferrer" target="_blank">https://labs.ripe.net/author/chrisb/dns4eu-ripe-ncc-open-house-discussion/</a>)<br>
on this topic.<br>
<br>
Rather than attempting to respond to the EC proposal or organize<br>
specific DNS resolver deployments, the RIPE community has decided that<br>
it is best able to provide advice and guidance. The RIPE Community is<br>
well positioned to provide a set of Best Current Practices that<br>
operators of Open DNS Resolvers will be encouraged to subscribe to.<br>
<br>
-- <br>
dns-resolver-tf mailing list<br>
<a href="mailto:dns-resolver-tf@ripe.net" target="_blank">dns-resolver-tf@ripe.net</a><br>
<a href="https://mailman.ripe.net/" rel="noreferrer" target="_blank">https://mailman.ripe.net/</a><br>
</blockquote></div>
</blockquote></div>