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

Add zones without nsd-control #323

Closed
orlitzky opened this issue Apr 6, 2024 · 8 comments · Fixed by #373
Closed

Add zones without nsd-control #323

orlitzky opened this issue Apr 6, 2024 · 8 comments · Fixed by #373
Assignees

Comments

@orlitzky
Copy link
Contributor

orlitzky commented Apr 6, 2024

If I change one of my zones, I can reload it using systemctl reload nsd. This makes use of systemd's ExecReload, which can be overridden but typically just sends SIGHUP to the daemon's PID. This is especially nice because the unprivileged nsd user is allowed to send SIGHUP to his own process, so changing zones does not require root.

If I add a zone, however, I have to change nsd.conf or one of its include files, and I've noticed that SIGHUP will not cause nsd to "reload" the new zone. Instead, nsd-control refers to that as "reconfig". If nsd-control is not enabled, a full restart of the daemon is therefore required to add a zone, and that requires root.

Is there some way around this? The description of the systemd feature says that it "triggers a configuration reload," and it would be nice if there was a way to force a reconfig instead of just a zone reload using that mechanism. Maybe a reconfig could be triggered with SIGUSR2?

In short, the problem I'm trying to solve is to be able to add new zones locally without root privileges and without nsd-control.

@k0ekk0ek
Copy link
Contributor

Hi @orlitzky! I'm sorry this slipped through. I'll take a look at this next week.

@k0ekk0ek k0ekk0ek self-assigned this Apr 19, 2024
@orlitzky
Copy link
Contributor Author

No problem, it's not urgent, thank you.

We don't add zones that often so I've been logging in as root and restarting the daemon myself as necessary. If the answer turns out to be "use nsd-control" then I can live with that too :)

@k0ekk0ek
Copy link
Contributor

Hi @orlitzky! Detecting new zones on SIGHUP seems like desired behavior. We'll change the behavior to do that, shouldn't be too hard to do, but I won't get around to it immediately. Thanks for the suggestion 👍

@orlitzky
Copy link
Contributor Author

Sounds good, thank you.

@k0ekk0ek
Copy link
Contributor

k0ekk0ek commented Aug 9, 2024

@orlitzky, #373 should add the functionality described on this ticket.

k0ekk0ek added a commit to k0ekk0ek/nsd that referenced this issue Aug 9, 2024
k0ekk0ek added a commit to k0ekk0ek/nsd that referenced this issue Aug 9, 2024
@anandb-ripencc
Copy link
Contributor

Reload zones, patterns and tsig keys, and re-open log file on SIGHUP is a very useful addition to NSD, and should have been there much earlier, IMHO. Is there any reason it's not just a default, instead of yet another option in nsd.conf that one has to enable?

Additionally, the change in the nsd man page isn't very clear about all the things affected by SIGHUP. It now says "Reopen logfile (assists rotation) and optionally update TSIG keys and zones.". However, a SIGHUP now does:

  1. Updates patterns
  2. Updates TSIG keys
  3. Updates zone definitions
  4. Examines mtimes of existing primary zones and reload them
  5. Reopens the log file (to help with log rotation)

I think all the 5 consequences of a SIGHUP should be clearly documented in the nsd man page.

Additionally, is the effect of nsd-control reload the same as a SIGHUP? Is the reconfig command of nsd-control even needed now?

I urge you to examine this change more carefully, and unify the way reload/reconfig is done in NSD, to avoid confusion and duplication.

@k0ekk0ek
Copy link
Contributor

Hi @anandb-ripencc!

Is there any reason it's not just a default, instead of yet another option in nsd.conf that one has to enable?

It's a change in behavior. It makes sense to make it the default, but we can do that in a later release (at least a minor, I've created #374).

I left it very broad on purpose thinking that adding too much detail doesn't help the user either? My reasoning was the user would check nsd.conf(5), but we can change it if you insist. Suggestions?

Additionally, is the effect of nsd-control reload the same as a SIGHUP?

It is not the same. nsd-control repattern allows you to reload the configuration remote but doesn't require a SIGHUP and does not re-examine zone files.

@anandb-ripencc
Copy link
Contributor

Hi Jeroen. I've put all my detailed thoughts about this, and related issues, in the comments of #374. You can leave this as closed, and we can continue the discussion that that issue.

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

Successfully merging a pull request may close this issue.

3 participants