Source & Issue Tracker
The source code is available at GitHub and the issue tracker is LightHouse.
- Source Code at GitHub
- Tracker at LightHouse (no longer available for BIND DLZ on Rails)
- Metrics at Ohloh
Features (current and planned)
- RESTful architecture to support a rich UI and API’s
- Multi-user support (admins, owners, API clients)
- CLI clients to show integration capabilities
- Conversion and import tools
- Zone/Record Templates
- DNS Insight
Overview
Bind is the defacto DNS server out there, and the bind-dlz extensions enhances it even further by providing support for database backends. This simplifies the management of thousands of zones, and provides added redundancy (by way of database replication) and opens the doors for web frontends that ease this even more.
Bind DLZ on Rails is built based on our experience of managing thousands of DNS records through various (often crude) techniques, that included building zone files from databases via cron, and implementing PowerDNS for its database backends.
Nothing we tried seemed convincing, and we opted to go back to Bind using bind-dlz on a MySQL 5.0 backend. Using Rails 2 for a interface just makes sense because we can build a rich interface and an REST API in a single go. We have a lot of integration needs, and this was our main driver.
Bind DLZ Information
The bind-dlz project can be found at http://bind-dlz.sourceforge.net. The documentation is in-depth on that site, I won’t repeat anything here unless its related to this project specifically.
Database Structure
The bind-dlz project allows you to use any database structure you want, since you specify the SQL statements in the configuration files. For the DNS records specifically we’ve opted for a simple two-table approach, `zones` and `records`. The `records` table will be exponentially larger than the the `zones` table, at the very least `zone` * 3 (two NS and one SOA).
Splitting the records table is possible, but the case for it isn’t string enough at this point. Maybe when we reach a couple of million rows, or someone else does, we can investigate splitting that.
Migration to bind-dlz
We plan to build various import and conversion tools after the initial release. You are welcome to submit your own converter/importer for inclusion in the project.
Testing
Bind DLZ on Rails is built using extensive RSpec suites, often termed “Behaviour Driven Development”. It is critical for a core service like DNS to be reliable and that all changes are correct and won’t impact services offered to clients.
Apart from the extensive programmatic tests, we’ll be implementing tests that actually seed a DNS database and use BIND’s dig utility to query a configured bind-dlz installation.
Thanks
Thanks to ISP in a Box for allowing us to build this project in company time and giving us the required infrastructure, support and human testing during the development, now and in the coming months.
Leave your comment