Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/net/dns/dnsserver: new package #30454

Open
iangudger opened this issue Feb 28, 2019 · 6 comments
Open

x/net/dns/dnsserver: new package #30454

iangudger opened this issue Feb 28, 2019 · 6 comments

Comments

@iangudger
Copy link
Contributor

@iangudger iangudger commented Feb 28, 2019

x/net/dns/dnsmessage contains a DNS library (proposal #16218). A DNS server based on it would be very useful. In addition to the more traditional uses for a DNS server, having one in x/net would improve the story around using net.Resolver.Dial to do custom DNS.

@gopherbot gopherbot added this to the Proposal milestone Feb 28, 2019
@gopherbot gopherbot added the Proposal label Feb 28, 2019
@bcmills
Copy link
Member

@bcmills bcmills commented Feb 28, 2019

@andybons
Copy link
Member

@andybons andybons commented Mar 27, 2019

This seems reasonable.

@andybons andybons changed the title proposal: x/net/dns/dnsserver: new package x/net/dns/dnsserver: new package Mar 27, 2019
@gopherbot
Copy link

@gopherbot gopherbot commented Sep 28, 2019

Change https://golang.org/cl/107306 mentions this issue: dns/dnsresolver: new package

@gopherbot
Copy link

@gopherbot gopherbot commented Sep 28, 2019

Change https://golang.org/cl/51631 mentions this issue: dns/dnsserver: new package

@gopherbot
Copy link

@gopherbot gopherbot commented Sep 28, 2019

Change https://golang.org/cl/197897 mentions this issue: dns/dnscache: new package

@FiloSottile
Copy link
Member

@FiloSottile FiloSottile commented Oct 9, 2019

Implementing a DNS server, cache and resolver can mean a lot of different things, some of which are a major undertaking that would definitely require a design doc. I feel like this proposal lacked the detail to be properly reviewed.

For example, a resolver can be a stub resolver, like what we already have in the standard library, or it can be a full caching and recursive resolver, which needs to handle zone cuts, cache expirations, CNAME logic, and more. A server can be just a skeleton that takes requests and returns answers, or something that constructs answers from a zone file, based on a myriad of rules. Every part of this also has a deep stack of security concerns. DNS has more RFCs than TLS and HTTP put together, as well as a whole catalog of implementation lore and quirks.

At the widest interpretation, this proposal is adding as much scope as a project like Unbound. If the scope is smaller, we need a specific narrative for where the line is, or it will keep getting pushed by every user that needs a little more.

Personally, having worked on an authoritative DNS server before, and having contributed a lot to github.com/miekg/dns, I don't think this should live in the Go project repositories. It's one of those things that we don't have the resources to develop to address every use cases, and that doesn't have a clear-cut subset of functionality we can focus on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
5 participants
You can’t perform that action at this time.