mirror of
https://github.com/hickory-dns/hickory-dns.git
synced 2026-04-25 11:15:54 +03:00
[GH-ISSUE #1483] DDNS Update Request With InMemoryAuthority? #682
Labels
No labels
blocked
breaking-change
bug
bug:critical
bug:tests
cleanup
compliance
compliance
compliance
crate:all
crate:client
crate:native-tls
crate:proto
crate:recursor
crate:resolver
crate:resolver
crate:rustls
crate:server
crate:util
dependencies
docs
duplicate
easy
easy
enhance
enhance
enhance
feature:dns-over-https
feature:dns-over-quic
feature:dns-over-tls
feature:dnsssec
feature:global_lb
feature:mdns
feature:tsig
features:edns
has workaround
ops
perf
platform:WASM
platform:android
platform:fuchsia
platform:linux
platform:macos
platform:windows
pull-request
question
test
tools
tools
trust
unclear
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/hickory-dns#682
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @mhfowler on GitHub (May 10, 2021).
Original GitHub issue: https://github.com/hickory-dns/hickory-dns/issues/1483
hey, I've started trying to build a dynamic DNS server for a project, using trust-dns.
So far I've been using InMemoryAuthority and its working well for serving lookups.
I'm now trying to send an ddns udpate to the server using nsupdate, and I'm getting a TIMP response. Here is the log of what I see on the trust_dns_server:
From looking at the documentation and source code https://docs.rs/trust-dns-server/0.20.2/src/trust_dns_server/store/in_memory/authority.rs.html#67-102, I see there is a stale comment saying there used to be an allow_update argument, which now no longer exists.
This made me wonder if maybe InMemoryAuthority was in a sort of in between state with updating, and that maybe updating was actually TIMP (function not implemented).
I saw you said the project was under active development, so figured I'd leave a message to ask if I should be using something other than InMemoryAuthority (or something is wrong on my end) or if handling ddns Update Requests were being developed or in a state of change.
thanks for any guidance!
@bluejekyll commented on GitHub (May 10, 2021):
I don't think we every added support to the InMemoryAuthority for Dynamic DNS. If I remember correctly, I only implemented that on the SqliteAuthority. There are a few things that we really should improve to make DynamicDNS more viable. One is having a checkpoint type operation on the journal so that it can be safely replicated or backed up. The other main one would be to improve the implementation of the AXFR. It would also be nice to properly support IXFR.
You should be aware that right now the server only supports SIG0 based auth for Dynamic DNS. There is a TSIG based option being added in #1459, though right now that is only the client-side.
I suppose if you wanted to, you could add DynamicDNS to the InMemoryAuthority, though I'd be curious about the use case, and what you would expect to happen between restarts?
@mhfowler commented on GitHub (May 11, 2021):
@bluejekyll thanks for the info! for what I'm working on right now, right now I'm planning to have a separate HTTP server which the user/client interacts with (sends IP updates to) and handles authentication. After getting these IP updates, the HTTP server then passes them onto the DNS server so that they are actually updated in the zones being served. The HTTP server has its own database (in sled) where it can store the IP addresses in a persistent way, so InMemoryAuthority is fine for now for the DNS server as it just needs to build the catalog and then serve the records, and I can store them separately.
Of course, if more of the functionality you described were available, I could do more of this within the DNS server itself, but doing it outside is also a workable solution for me. The main thing I need is a way for the HTTP server to talk to the DNS server and get it to update its records, ideally without restarting the server and rebuilding the catalog every time. For now I'm trying using the trust-dns client.
I see that SqliteAuthority is also not present in the latest release? so it sounds like dynamic dns the official way is not really possible at the moment? Maybe further down the line I could also change up my code to use more of the features of trust-dns when they are available, or implement DynamicDNS for InMemoryAuthority, or for a different type of Authority.
@mhfowler commented on GitHub (May 15, 2021):
I think I will just wait to use TrustDNS until there's a bit more documentation, so I'm closing this for now. Looking forward to see the project progress!