Manage DNS zones and records directly in Drupal.
The DNS module provides a modern, extensible system for defining and managing DNS data using Drupal content entities. It supports common and modern record types, strict validation, and a plugin-based architecture for future extensions and provider integrations.
Full documentation is available at project.pages.drupalcode.org/dns, including user guides, developer documentation, and migration instructions.
✨ Features
- Zone management
- Create, edit, and delete DNS zones
- Unicode (IDN) support with automatic Punycode normalization
- Clean, canonical URLs based on zone names
- Per-zone collaborator delegation with fine-grained capabilities (view/edit/delete zone, CRUD records)
- Record management
- Full CRUD for DNS records within each zone
- Built-in support for common and modern record types:
- A, AAAA, CNAME, NS, MX, TXT, PTR, CAA, SRV, HTTPS, SVCB
- Validation based on DNS RFCs (including CNAME exclusivity rules)
- Modern Drupal architecture
- Zones and records are content entities
- Works with Views, REST, JSON:API, and other entity-based systems
- Plugin-based record type system for extensibility
- Views integration
- Built-in admin listing for records
- Zone pages include embedded record listings
- Custom Views fields for record data
- IDN-aware
- Enter domains like
münchen.de - Stored internally as Punycode
- Displayed to users in Unicode
- Enter domains like
- Migration from Drupal 7
- Built-in Migrate support for
dns_zonesanddns_records - Tolerant handling of imperfect legacy data with logged review output
- Built-in Migrate support for
- Tested and CI-enabled
- Extensive unit, kernel, and functional test coverage
- Drupal.org CI (phpcs, phpstan, phpunit, etc.)
🔐 Access model
DNS uses a two-layer access system:
- Site-wide permissions (roles) control general capabilities (create zones, administer DNS)
- Per-zone delegation allows assigning fine-grained capabilities to specific users via collaborators
Records inherit access from their parent zone.
🚧 Project status
This is a complete rewrite of the legacy Drupal 7 DNS module.
- Current branch: 2.x
- Status: alpha
- Suitable for testing and early adoption; review before using for production-critical DNS workflows
The 2.x branch is a new architecture, not an in-place upgrade of the 7.x codebase.
⚠️ Current limitations
- No DNS provider integration yet
- Support for Cloudflare, Route 53, PowerDNS, etc. is planned
- Specialty record types in optional module
- Additional DNS types (DNAME, TLSA, SSHFP, etc.) are provided via the optional
dns_extrasmodule
- Additional DNS types (DNAME, TLSA, SSHFP, etc.) are provided via the optional
🧩 Extensibility
The module is designed to be extended:
- Add new DNS record types via plugins:
#[RecordType( id: "my_type", label: "My record type" )] - Future provider modules will:
- Implement DNS APIs
- Add provider-specific record types or extensions
🛣 Roadmap
- DNS provider integration (Cloudflare, Route 53, etc.)
- SPF builder/validator for TXT records
- IANA TLD validation
- DNS drift detection (compare stored vs live DNS)
📦 Requirements
- Drupal 10.3+, 11.x
(Drupal 12 compatibility is tracked but not yet guaranteed)
🔄 Drupal 7 users
- The 7.x-1.x branch remains available for Drupal 7 sites
- Use the built-in migration path when upgrading to 2.x
📚 Documentation
Comprehensive documentation is available at project.pages.drupalcode.org/dns, including:
- User guides and concepts
- Migration instructions from Drupal 7
- Developer documentation and extension points
💬 Feedback
Bug reports, feature requests, and architecture feedback are welcome in the project issue queue.
🧠 Why this module?
- DNS-aware validation and correctness
- Modern Drupal architecture (entities + plugins)
- Extensibility for record types and future providers
- Real-world usability (Views, APIs, IDN handling)
Project information
- Project categories: Developer tools
9 sites report using this module
- By mikl on , updated
Stable releases for this project are covered by the security advisory policy.
There are currently no supported stable releases.
Releases
Adds per-zone collaborator delegation with capability-based access control, fixes access edge cases, and hardens validation, docs, and migration behavior.
Development version: 2.x-dev updated 4 May 2026 at 01:07 UTC


