A while ago I had a project to build a DNS management application for a client, which has since been refined and improved further, and finally released as “NamedManager” now that I’ve had time to re-do the documentation for a public audience.
NamedManager is an AGPL web-based DNS management system designed to make the adding, adjusting and removal of zones/records easy and reliable by a simple yet effective interface.
Rather than attempting to develop a new name server, NamedManager supports the tried and tested Bind name server and can integrate nicely into existing complex Bind configurations including servers with multiple views without clobbering custom configurations.
It’s written in PHP 5 and uses a MySQL database for storing the DNS record information, which is then converted into Bind compatible configuration files and copied to the name servers, an act which ensures that any loss of the NamedManager application or database will not result in a loss of DNS services.
It’s a stable application, having been in some large production environments for over a year, although there’s certainly more work wanted on the application, such as the addition of IPv6 PTR records and improved UI around SRV and SPF record entry.
NamedManager includes an interface for tracking the sync status of the latest changes across all your name servers, as well as understanding the differences between internal only and publicly accessible name servers and generating the appropriate NS records for domains automatically.
An included daemon can (optional) watch the Bind name server logs and send them back to the web interface, so that you can watch all your name servers via an AJAX log interface to make it easier to watch for issues or debug queries.
Both forwards domains for IPv4 and IPv6 are supported, and IPv4 reverse domains are also supported (IPv6 reverse to come in future release), along with the ability to import Bind zone files (works for most, unless yours is too ugly/complex) into the application.
For developers, NamedManager features a SOAP API which can be used to manage DNS records – this has been used to hook into other provisioning tools (eg: cloud instance management tools) to reduce manual effort for keeping records clean and tidy,
The code structure of NamedManager would make it possible to add support for additional name servers as desired, I would be keen to see support for PowerDNS and Amazon Route 53 as options in future – as always, patches welcome. ;-)
If you’re interested in checking it out, view the NamedManager project page here and follow the instructions to install from RPM, source tarball or SVN.
I was actually writing a DNS Management tool as well, but I was going around it in a slightly different way, instead of actually writing BIND compatible files, I was planning to use AXFR import existing domains into MySQL, then using DNS Updates to push new or update hosts back into the zone file.
I was also planning to have support for “views”. At the moment I’m maintaining two sets of zone files, one for external use, and another set for internal. It’s a pain! :)
Nice approach, I like the sound of it from a technical POV, probably end up being harder to write than what I did with NamedManager however. :-)
NamedManager actually has some support for views, in that you can define groups of name servers such as “internal” and “external” and define which domains belong to which groups, although it’s not quite as polished as I’d like.
The AXFR approach for importing domains is IMHO way better than importing zonefiles directly. I have an pretty old (obviously strange) style of organizing my zonefiles and have no chance to import them without heavy editing. The style works in bind very well.
But anyhow, I am sure, NamedManager will replace my ugly set of bash scripts to maintain Domain entries.
I agree, AXFR would be a better technical solution – if anyone decides to look at porting NamedManager to work with name servers other than Bind, AXFR may be the best way to support them.
That being said, from a technical development POV it might be just easier to make NamedManager understand a SQL-based name server such as PowerDNS and use that for AXFR transfers to any other kind of name server running as the public slaves.
Can I say your indefero main page is quite plain?…lol..
Yeah I need to make time to go and theme it at some point, to better promote my brand and the different applications.
Time is a rare and valuable commodity around here however…
The NamedManager project is very good and has the good performance. I want to know if NamedManager support “view”, It’s that Bind can send different resolution of one domain name according to different visited IP, for example, the customers from A ISP get the resolution IP1, the customers from B ISP get the resolution IP2…..and so on.
Thanks a lot.
Sorry it doesn’t support views currently. You can push domains to particular groups of name servers, but there’s no support for serving different views of the same domain.
You could do a work around by having NamedManager handle the domain and then do a copy and adjustment of the domain to the different view definitions on the name server, but it would require a bit of hackary.
Thank you for your response. I think there maybe other way to let NamedManager support “views” . I will try.
PS: When I let NamedManager run on my test server, namedmanager_logpush got the warning as follow:
PHP Warning: feof() expects parameter 1 to be resource, null given in /home/edy/software/namedmanager/bind/namedmanager_logpush.php on line 130
PHP Warning: fgets() expects parameter 1 to be resource, null given in /home/edy/software/namedmanager/bind/namedmanager_logpush.php on line 136
and the warning repeated and repeated again. So, any idea?
Is there any documentation on how to use namedmanager?
I was testing out the app and had a few questions:
1. How would you recommend bulk imports into an existing domain? I need to add 50 hosts records for servers that are installed. I saw the zone import function, but it appeared to only create a new zone and not import records.
2. How would you add comments to dns records to be stored in the named file?