Enterprise DNS management

The code for this is on Github:- https://github.com/andrewjstringer/EnterpriseWebDNS.

Project Aims

The idea behind this project is to provide a web based front end to BIND DNS suitable for use in an enterprise environment. The DNS records are stored in a database, but BIND 9 syntax checked files are written out to be used by a stock, unmodified BIND. In an emergency, these zone files could be edited by hand as they are indistinguishable from manually created ones. This is important because linking BIND to a database for production use may invalidate any vendor support agreements.

Enterprise DNS differs from the web based control panels used typically by ISPs where there are many domains with a few A records linked with http server and mail access.

Enterprise DNS aims to support a smaller number of domains but with a large number of A, CNAME and other records, with subdomains. Importantly access control is built in from the ground up so for example the Server team can create records for servers, these records are then “owned” by the server team. Any attempts to change these records by another team will be disallowed. Additionally, the team member making the change is recorded.

The code is written in Perl and the current database is MySQL. The SQL and Perl is written to be portable to other database engines but no attempts will be made to run the Perl /database / web front end on any other than a unix/linux system, indeed the only condition I will place on the code is that I specifically forbid it from being used under any type of Windows OS.

Currently this supports IPv4 only, however IPv6 support will be added later.

Current Status

Subsystem Started Completed
Web page for forms yes working
Create A record yes partial
Create CNAME record yes partial
Check A or CNAME records yes partial
Add new Teams/members yes no
Write out Zone file header no no
Write out Zone file records yes no

Database schema

Web Front End


rb-projects-dns/dnsmgmt.txt · Last modified: 17/12/2015 11:47 by andrew