hello-dns/resolver.md

38 lines
1.6 KiB
Markdown
Raw Normal View History

2018-03-29 16:28:29 +07:00
<meta charset="utf-8" emacsmode="-*- markdown -*-">
**A warm welcome to DNS**
2018-04-01 23:31:41 +07:00
Note: this page is part of the
'[hello-dns](https://powerdns.org/hello-dns/)' documentation effort.
2018-03-29 16:28:29 +07:00
# Resolver
2018-03-30 03:36:26 +07:00
Writing a modern resolver is the hardest part of DNS. A fully standards
compliant DNS resolver is not a resolver that can be used in practice.
In reality, resolvers are expected to process malformed queries coming from
clients (stub-resolvers). Furthermore, many authoritative servers respond
incorrectly to modern DNS queries. Zones are frequently misconfigured on
authoritative servers but still expected to work correctly.
Meanwhile, operators desire top performance, with individual CPU cores
expected to satisfy the DNS needs of hundreds of thousands of users.
To top this off, a modern DNS resolver will have to validate DNSSEC
correctly. This may be among the hardest challenges of any widely used
Internet protocol.
2018-03-31 02:42:30 +07:00
Excellent resolvers that are freely available and open source include:
* [BIND 9](https://www.isc.org/downloads/bind/)
* [Knot resolver](https://www.knot-resolver.cz/)
* [Unbound](https://www.unbound.net/)
* [PowerDNS Recursor](https://www.powerdns.com/recursor.html)
2018-03-30 03:36:26 +07:00
So in short, before attempting to write a DNS resolver, ponder if you really
2018-03-31 02:42:30 +07:00
need to.
# Resolver algorithm
2018-03-29 16:28:29 +07:00
2018-03-30 04:29:30 +07:00
TBC..
<!-- Markdeep: --><style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="ext/markdeep.min.js"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>