Catalog Zones
Catalog Zones (RFC 9432) provide automated zone provisioning between DNS servers. A catalog zone contains a list of member zones that should be served, eliminating the need to manually synchronize zone configuration across primary and secondary servers.Overview
Since version 4.9.0, NSD supports Catalog Zones version “2” as specified in RFC 9432. NSD can function as both:- Catalog Consumer: Automatically provisions zones from a catalog
- Catalog Producer: Maintains a catalog that consumers use
NSD is limited to processing a single catalog consumer zone. Multiple producer zones are supported.
Catalog Zone Concepts
Member Zones
Member zones are the actual DNS zones (likeexample.com) that are listed in the catalog. The catalog zone itself (like catalog.invalid) only contains metadata about which zones should be served.
Group Properties
Member zones can have agroup property that references a pattern name. This allows different zones to use different configuration patterns (transfer settings, access controls, etc.).
Catalog Member ID
Each member zone gets a unique identifier in the catalog, displayed as a subdomain like:Consumer Configuration
Basic Consumer Setup
pattern:
name: "member-zone-config"
# Primary server for member zones
request-xfr: 198.51.100.1 NOKEY
allow-notify: 198.51.100.1 NOKEY
zone:
name: "catalog1.invalid"
catalog: consumer
catalog-member-pattern: "member-zone-config"
# Transfer catalog from primary
request-xfr: 192.0.2.1 NOKEY
allow-notify: 192.0.2.1 NOKEY
# Hide catalog contents
allow-query: BLOCKED
Advanced Consumer Configuration
- With TSIG
- With TLS
- Multiple Groups
Group Property Support
From the source documentation, NSD supports RFC 9432 group properties. Member zones can specify which pattern to use:- Missing: Uses
catalog-member-pattern - Invalid (pattern doesn’t exist): Uses
catalog-member-pattern - Valid (matches a pattern name): Uses that pattern
Producer Configuration
Basic Producer Setup
pattern:
name: "group0"
catalog-producer-zone: "catalog1.invalid"
pattern:
name: "group1"
catalog-producer-zone: "catalog1.invalid"
zone:
name: "catalog1.invalid"
catalog: producer
# Enable IXFR for efficient updates
store-ixfr: yes
# Provide transfers to consumers
provide-xfr: 203.0.113.1 NOKEY
notify: 203.0.113.1 NOKEY
# Hide catalog contents
allow-query: BLOCKED
Advanced Producer Configuration
- With TLS Server
- Multiple Consumers
Managing Member Zones
Adding Member Zones
Removing Member Zones
Listing Member Zones
Monitoring and Status
Check Catalog Status
Check Member Status
Invalid Catalog Diagnosis
If a catalog zone is invalid,
nsd-control zonestatus shows the reason. Common reasons:- Invalid catalog zone format
- Broken member zone references
- Missing NSEC3PARAM records (if DNSSEC-signed)
- Syntax errors in catalog zone file
Zone List Persistence
From the documentation: Member zones are stored in the zone list file (configured withzonelistfile option).
- cat: Indicates catalog member zone
- zone name: The member zone name
- pattern: Pattern used for this member
- member-id: Unique catalog member identifier (8 hex characters)
Catalog Zone Content
For producers, NSD automatically generates catalog zone content. The zone is reconstructed from the zone list file on startup.Catalog Zone Format (RFC 9432)
Security Considerations
Privacy Protection
Catalog zones expose your nameserver’s zone list. RFC 9432 recommends:zone:
name: "catalog1.invalid"
catalog: consumer # or producer
# Block all queries
allow-query: 0.0.0.0/0 BLOCKED
allow-query: ::0/0 BLOCKED
# TLS authentication
tls-auth:
name: catalog-server
auth-domain-name: catalog.example.com
# Catalog with XFR-over-TLS
zone:
name: "catalog1.invalid"
catalog: consumer
catalog-member-pattern: "members"
# Encrypted transfer
request-xfr: 192.0.2.1@853 NOKEY catalog-server
allow-notify: 192.0.2.1 NOKEY
allow-query: BLOCKED
Troubleshooting
Member Zones Not Appearing
Member Zones Not Appearing
Symptom: Catalog consumer doesn’t show member zonesDiagnosis:Common Causes:
- Catalog zone not transferred yet
- Invalid catalog zone format
- Pattern name in group doesn’t match any defined pattern
- Network/firewall issues preventing transfer
Pattern Not Found
Pattern Not Found
Symptom: Member zones use wrong pattern or fail to loadDiagnosis:Cause: The
group property references a pattern that doesn’t existSolution:Catalog Serial Not Incrementing
Catalog Serial Not Incrementing
Symptom: Changes to member zones don’t propagateCause: For producers, NSD automatically updates the serial when zones are added/removed via
nsd-controlSolution:Multiple Consumer Zones Configured
Multiple Consumer Zones Configured
Symptom: Catalog processing disabled, log shows warningCause: NSD only supports one catalog consumer zoneSolution: Remove or comment out extra consumer zone configurations
Performance Considerations
Memory Usage
- Per catalog zone: ~1-2 KB base overhead
- Per member entry: ~200-500 bytes
- Large catalogs: 10,000 members ≈ 2-5 MB
Update Performance
Catalog updates use IXFR when possible:Recommended Limits
- Members per catalog: < 10,000 for optimal performance
- Update frequency: Batch changes to reduce serial increments
- Consumer refresh: Use appropriate SOA refresh/retry timers
Migration Strategies
From Manual Configuration to Catalog
# Add all current zones to catalog
nsd-control addzone zone1.example.com members
nsd-control addzone zone2.example.com members
# ... repeat for all zones
# On secondary servers, add catalog consumer configuration
# Remove individual zone configurations
# Reload NSD
nsd-control reconfig
Related Topics
- TSIG Configuration - Secure catalog transfers
- Zone Expiry - Understanding zone timing
- Zone Transfers - AXFR and IXFR
- Pattern Configuration - Configuring zone patterns