It seems the most popular solution is to install bind drivers for a database server ( postgresql, sqlite, mysql ) and then update the zone file.
Seems simple enough but I can't get it to work for the life of me.
// // See /usr/share/doc/bind*/sample/ for example named configuration files. It is not well documented - not a single word about it in BIND ARM. Query performance is terrible - according to this benchmark, Postgre SQL is going to be 30 times (! (the benchmark is old, but there's no reason to assume that things improved drastically). No performance penalty - all the queries still answered from to be used with database backend. Really performance is not a big problem for my scenario. I need a database or a good API to add / remove records because the environment is dynamic and each server is responsible for updating the dns server when its created.
I'm currently using Amazon Linux distribution but I've tried everything in RHEL 6.2 as well with no more luck. The first one was to compile bind with the source code changes for mysql support | | 0 | 0 | 0 | 0 my.cloud | dns01 | 259200 | A | 0 | 127.0.0.1 | | 0 | 0 | 0 | 0 (3 rows) Maybe be not really an answer to your question, but anyway.
This compiles fine with the changes and I get no errors but after running // // // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). (I was also investigating this issue recently, and here's my conclusions): DLZ support in BIND9 looks more like a "patch". It's well documented, widely used and is easy to implement.
Decided to move my windows based DNS servers to linux.
The problem is I need to be able to dynamically update zone files without having to restart bind.
If you are interested in generic API for DNS then you may want to consider get-dns which defines a thorough (read complex) DNS api set with a number of language bindings.