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

Tracking Issue: DNS features requiring c-ares support #14713

Closed
8 tasks
tniessen opened this issue Aug 9, 2017 · 28 comments
Closed
8 tasks

Tracking Issue: DNS features requiring c-ares support #14713

tniessen opened this issue Aug 9, 2017 · 28 comments
Labels
cares Issues and PRs related to the c-ares dependency or the cares_wrap binding. dns Issues and PRs related to the dns subsystem. feature request Issues that request new features to be added to Node.js. never-stale Mark issue so that it is never considered stale stale

Comments

@tniessen
Copy link
Member

tniessen commented Aug 9, 2017

There is a growing list of feature requests for the DNS module which require upstream changes for an efficient implementation within node.

FYI @bagder @daviddrysdale

cc @addaleax @refack @silverwind @alexte

@tniessen tniessen added the dns Issues and PRs related to the dns subsystem. label Aug 9, 2017
@refack refack added the meta Issues and PRs related to the general management of the project. label Aug 9, 2017
@mscdex mscdex added the cares Issues and PRs related to the c-ares dependency or the cares_wrap binding. label Aug 9, 2017
@addaleax addaleax added feature request Issues that request new features to be added to Node.js. and removed meta Issues and PRs related to the general management of the project. labels Aug 9, 2017
@alexte
Copy link

alexte commented Aug 10, 2017

IMHO a native implementation of DNS without c-ares would be more future proof.

@silverwind
Copy link
Contributor

It was attempted to write a JS resolver in the past, but performance wasn't up to par back then. Anyone aware of other libraries we could consider?

@tniessen
Copy link
Member Author

I considered writing a small DNS library tailored for Node.js as c-ares comes with some downsides and I did not find any alternatives. Our main concerns are portability (c-ares has a lot of code just to support Windows 95), performance (we should not allow significant regression) and dependability (c-ares has been tested for years). I could try to put something together, but it will take some time and we would need to test it extensively before shipping it in release lines.

@TimothyGu
Copy link
Member

Just as a question: what DNS resolvers do browsers use?

@fvdm
Copy link

fvdm commented Aug 11, 2017

@TimothyGu Usually the one of the network router which most likely forwards the requests to the caching resolvers of the ISP.

@silverwind
Copy link
Contributor

silverwind commented Aug 11, 2017

Browsers use getaddrinfo which is implemented in the OS core libraries like glibc, which is also what dns.lookup uses. The issue with getaddrinfo is that it's only purpose is name to IP resolution, and for more advanced DNS use cases (record types other than A and AAAA, or if you'd like to avoid caching) you need a actual resolver capable of constructing and parsing DNS packets.

@tniessen
Copy link
Member Author

@fvdm I believe you are referring to DNS servers (routers usually act as DNS servers in local networks), this is not what this issue is about.

@fvdm
Copy link

fvdm commented Aug 13, 2017

@tniessen I misinterpreted resolvers in the question as the part of DNS that provides the requested answers, instead of the client software that performs the requests. My apologies.

@alexte
Copy link

alexte commented Aug 14, 2017

I think there are two different topics:

  1. Resolving names to numbers, a function most applications need.
  2. In depth DNS queries with full tweekability and full DNS response parsing, only needed for few applications.

For 1) I would see this in the core and as standard as possible, perhaps even using libc getaddr* functions, and optimized for speed.
2) a separate library (NPM) with full control, implemented natively, that implements all DNS protocol features, even DNSSEC etc

@Trott
Copy link
Member

Trott commented Aug 11, 2019

This is coming up on two years of inactivity. @tniessen Anything new to add here? I'm guessing not.

@ad-m
Copy link

ad-m commented Sep 16, 2019

We can consider https://github.com/getdnsapi/getdns/blob/develop/README.md as alternative, maintained, DNSSEC-capable, TTL-capable library: https://github.com/getdnsapi/getdns/blob/develop/README.md

@addaleax
Copy link
Member

@ad-m I think that would require quite a bit of porting work, but if somebody’s up for that, why not.

@devsnek
Copy link
Member

devsnek commented Sep 16, 2019

Interestingly getdns has first-class support for libuv 👀

@ad-m
Copy link

ad-m commented Sep 16, 2019

@devsnek, there's NodeJS binding too 👀
https://github.com/getdnsapi/getdns-node

@devsnek
Copy link
Member

devsnek commented May 8, 2020

I've started looking into using getdns in core.

@renanbastos93
Copy link

NodeJS currently use c-ares to resolve queries DNS but is not so good it because it doesn't support all queries types. Even so, I thought we replacing it to another approach I have two ideas:

1 - We use the module miekg/dns in Golang
Ask: Can we import the module of Golang on NodeJS core?

2 - We find another package with this support to all queries types.

Another problem we have those third-party libs to DNS in NodeJS is bad.

Refer issue #33299

@devsnek
Copy link
Member

devsnek commented May 8, 2020

@renanbastos93 that would require us adding a dependency on golang's compiler, and it also seems that library doesn't have a stable c api.

@renanbastos93
Copy link

that would require us adding a dependency on golang's compiler, and it also seems that library doesn't have a stable c api.

it's okay, thanks for explaining to me.
Another approach we can implement these features to make a fork origin c-ares.

@devsnek
Copy link
Member

devsnek commented May 8, 2020

@nodejs/node-gyp @nodejs/gyp could i get some assistance with porting getdns's cmake config to gyp? I have stripped out a bunch of the unneeded config (tests and libev support and such): https://gist.github.com/devsnek/04666f858ae6c3ebbc43c04edd1c6a38. I'm not sure what to do with those configure_file parts.

@bnoordhuis
Copy link
Member

@devsnek One solution: generate them for different targets, then check them in and tweak include_dirs based on OS and/or target_arch. That's how we vendor c-ares and openssl.

lxdicted added a commit to lxdicted/node that referenced this issue Oct 2, 2020
This adds support for DNS Certification Authority
Authorization (RFC 6844) to nodejs.

This closes nodejs#19239 and possibly affects nodejs#14713.
@lxdicted lxdicted mentioned this issue Oct 2, 2020
4 tasks
aduh95 pushed a commit that referenced this issue Oct 16, 2020
This adds support for DNS Certification Authority Authorization
(RFC 8659) to Node.js.

PR-URL: #35466
Fixes: #19239
Refs: #14713
Reviewed-By: Anna Henningsen <[email protected]>
@marsonya
Copy link
Member

This is coming up on one year of inactivity and open for more than 3 years. @tniessen, any update on this issue?

targos pushed a commit that referenced this issue May 1, 2021
This adds support for DNS Certification Authority Authorization
(RFC 8659) to Node.js.

PR-URL: #35466
Fixes: #19239
Refs: #14713
Reviewed-By: Anna Henningsen <[email protected]>
@github-actions
Copy link
Contributor

There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment.

For more information on how the project manages feature requests, please consult the feature request management document.

@devsnek
Copy link
Member

devsnek commented Mar 22, 2022

do not close pls

@github-actions github-actions bot removed the stale label Mar 24, 2022
@github-actions
Copy link
Contributor

There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment.

For more information on how the project manages feature requests, please consult the feature request management document.

@github-actions github-actions bot added the stale label Sep 21, 2022
@aduh95 aduh95 added never-stale Mark issue so that it is never considered stale and removed stale labels Sep 21, 2022
@github-actions
Copy link
Contributor

There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment.

For more information on how the project manages feature requests, please consult the feature request management document.

@github-actions github-actions bot added the stale label Mar 21, 2023
@bnoordhuis
Copy link
Member

@tniessen this issue has been open for 5.5 years now and, realistically, I don't expect any of the items to happen. I don't think it's a huge problem either; the dns module doesn't have to be everything for everyone, there are third-party modules that fill the gap.

I suggest we close this. Aye/nay?

@tniessen tniessen closed this as not planned Won't fix, can't repro, duplicate, stale Mar 21, 2023
@renanbastos93
Copy link

@tniessen this issue has been open for 5.5 years now and, realistically, I don't expect any of the items to happen. I don't think it's a huge problem either; the dns module doesn't have to be everything for everyone, there are third-party modules that fill the gap.

I suggest we close this. Aye/nay?

based on the time we waiting for that, let's close it. I believe that if case a problem we open again.

@bradh352
Copy link
Contributor

FYI, I think c-ares will support a majority of what you need in the near future. The goal is to expose the new parser publicly probably after this upcoming release. New parser / record API is defined here:
https://github.com/c-ares/c-ares/blob/main/src/lib/ares_dns_record.h

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cares Issues and PRs related to the c-ares dependency or the cares_wrap binding. dns Issues and PRs related to the dns subsystem. feature request Issues that request new features to be added to Node.js. never-stale Mark issue so that it is never considered stale stale
Projects
None yet
Development

No branches or pull requests