Getting DNS updates to update slave servers rather than wait for TTL expiration.

My largest client is getting annoyed at me, and I’ve tried to hack it into the code, but it’s not working.

Heres’ the thing. User makes a change to their dns zone, and they click apply changes. This applies the change to the local DNS server using rndc reload (zonename), which is fine, but I need it to run that command on all of the slave servers too. Right now it just waits for TTL expiration on the slaves.

Any way to easily fix this, or is it a bug/feature request?

Hey Tony,

Let’s call it a bug. File it in the bug tracker and Jamie will fix it. (Though I do greatly admire your “dig in and fix it” attitude, sometimes it’s best to place the blame where it belongs and let Jamie fix it.) :wink:


I’ve posted a comment to that bug explaining how to configure BIND to automatically update slave servers when a record changes on the master…

Also, in the next Virtualmin release it will configure this automatically.

For those searching later:

Bind -> Zone Defaults

Notify Slaves of Updates

Can’t believe I overlooked that…oi.

FYI - this DID NOT fix my problem. :frowning:

I’m not sure what’s wrong. I’ve updated to the latest webmin and virtual server module, but that doesn’t fix it either.

Changing the ‘Bind -> Zone Defaults’ page will not help, as it just sets defaults for new domains. You need to update all existing domains to notify slaves, by going to the BIND module, clicking on each domain, clicking on ‘Edit Zone Options’ and filling in the ‘Also notify slaves’ field. Also, make sure ‘Notify slaves of changes?’ is set to ‘Yes’.

Ouch. That sucks.

Don’t suppose you could give me a hint as to what the config line is for that so I can run a system-wide regexp to change that setting?

Also…even with that global setting, or setting in on individual zones still does not work, just tested it. We’ve created new zones since making that change, no impact. I’ve set it on a zone, saved, restarted webmin, made a change to the zone, saved, and it doesn’t push to the slaves, even though the screen makes a comment about running rndc reload when the button is pushed. :frowning:

Sorry for spamming the thread - but…

If the global setting only impacts new zones, then what is the logic behind the wording in the individual zone?

Notify slaves of changes? Yes No Default

Erm…why is there a “Default”? Shouldn’t it simply be yes or no?

If you check /var/log/messages on the slave system, is anything logged that suggests why a zone transfer may have failed?

Similarly, in /var/log/messages on the master, does anything get logged when you click the Apply button that might indicate an error talking to slaves? For example, if there was a firewall blocking port 53 between them, that would cause problems.

Also, the reason for that ‘Default’ option is to fall back to the global setting for notifying slaves. In your case, I would recommend explicitly selecting ‘Yes’.

got the same problem also, I have to do a "force update" of the zone on the slave server. Please heeeeeeelp.
PS: A new domain works good until there is a update

One thing to check is that your master server is setup to notify the slave when a change is made to the domain. On the master system, if you go to Webmin -> Servers -> BIND DNS Server -> your domain -> Zone Options, make sure the slave’s IP is in the ‘Also notify slaves’ field.

If not, you should add it for all zones, and click the Apply button. The latest version of Virtualmin does this automatically, for new domains.


Do you have the slaves included in your slave cluster? That should run the update all the way across the included servers. Otherwise, you’re stuck waiting on propagation.

Yes I do.

It works fine initially. It’s when a user makes a change. I’ve looked at the code, and it only runs rndc reload (zone.tld) locally, it does nothing on the slave servers.

Do changes replicate when you make changes in the Webmin Bind module? I am curious if this is a server wide issue or specific to the Virtualmin module.

Same results either way. The only way I can force immediate replication is to remove a server from the cluster and re-add. That takes a bit with 300 some domains total. :

Same results either way. The only way I can force immediate replication is to remove a server from the cluster and re-add. That takes a bit with 300 some domains total. :

Can you go to the slave server and run rndc reload "zonename" and watch the logs for errors? Let us know what you see.

No errors. Works beautifully if I do that. In fact I have to do that every time. :\