--- title: RFC 2136 Dynamic DNS Provider description: Automate DNS records on HMAC-TSIG-compatible authoritative servers such as BIND, PowerDNS, Knot DNS, and Technitium via RFC 2136 dynamic updates. ---
RFC 2136 (Dynamic DNS)¶
RFC 2136 defines programmatic DNS updates. Server support alone is not enough: the server's update authorization must also match the authentication dnsweaver implements.
dnsweaver supports unsigned updates and shared-secret TSIG using HMAC-MD5, HMAC-SHA256, or HMAC-SHA512. It does not implement Kerberos/TKEY negotiation (GSS-TSIG) or SIG(0). Use HMAC-SHA256 or HMAC-SHA512 for production and restrict the key to the records dnsweaver manages.
Supported DNS Servers¶
This is a protocol and authentication compatibility map, not a retained live-version qualification matrix. The repository's RFC 2136 integration tests are opt-in and do not establish support for every server/version below.
| Server | Server capability | Compatibility with dnsweaver | Notes |
|---|---|---|---|
| BIND 9 | RFC 2136 with update policy/TSIG | Expected compatible with HMAC TSIG | Configure allow-update or update-policy for the dnsweaver key. |
| PowerDNS Authoritative | RFC 2136 when dnsupdate=yes; backend support varies |
Expected compatible with HMAC TSIG | Enable a supported backend and bind the zone to the key with TSIG-ALLOW-DNSUPDATE. |
| Knot DNS | RFC 2136 via an ACL with the update action |
Expected compatible with HMAC TSIG | Attach a TSIG key to the update ACL and restrict owners/types where practical. |
| Technitium DNS Server | RFC 2136 for primary zones with TSIG policy | Expected compatible with HMAC TSIG | The dedicated HTTP provider remains available when API-specific behavior is needed. |
| Windows DNS | RFC 2136; AD-integrated zones default to Kerberos secure updates | Not compatible with secure-only zones | dnsweaver has no GSS-TSIG/Kerberos client. Unsigned updates require a zone that allows nonsecure updates and are not recommended. |
| NSD | Does not implement dynamic update | Not compatible | NSD's TSIG support is for transfers/control paths, not RFC 2136 updates. |
When to use RFC 2136 vs dedicated providers
Use RFC 2136 when your DNS server supports it but has no dedicated dnsweaver provider, or when you want a single configuration for multiple RFC 2136 servers.
Use dedicated providers (Technitium, Cloudflare, etc.) when they offer richer features like proxy mode, zone management, or better observability.
Basic Configuration¶
environment:
- DNSWEAVER_INSTANCES=bind
- DNSWEAVER_BIND_TYPE=rfc2136
- DNSWEAVER_BIND_SERVER=ns1.example.com:53
- DNSWEAVER_BIND_ZONE=example.com.
- DNSWEAVER_BIND_DOMAINS=*.example.com
- DNSWEAVER_BIND_RECORD_TYPE=A
- DNSWEAVER_BIND_TARGET=192.0.2.100
# TSIG Authentication (strongly recommended)
- DNSWEAVER_BIND_TSIG_KEY_NAME=dnsweaver.
- DNSWEAVER_BIND_TSIG_SECRET_FILE=/run/secrets/tsig_key
- DNSWEAVER_BIND_TSIG_ALGORITHM=hmac-sha256
Configuration Reference¶
| Variable | Required | Default | Description |
|---|---|---|---|
TYPE |
Yes | - | Must be rfc2136 |
SERVER |
Yes | - | DNS server address (host:port) |
ZONE |
Yes | - | Zone name (must end with .) |
DOMAINS |
Yes | - | Glob patterns to match |
RECORD_TYPE |
Yes | - | A, AAAA, CNAME, SRV, or TXT |
TARGET |
Yes | - | Record value |
TSIG_KEY_NAME |
No | - | TSIG key name (must end with .) |
TSIG_SECRET |
No | - | Base64-encoded TSIG secret |
TSIG_SECRET_FILE |
No | - | Path to file containing TSIG secret |
TSIG_ALGORITHM |
No | hmac-sha256 |
hmac-sha256, hmac-sha512, hmac-md5 |
TTL |
No | 300 |
Record TTL in seconds |
TIMEOUT |
No | 10 |
DNS operation timeout (seconds) |
USE_TCP |
No | false |
Force TCP transport |
TSIG Authentication¶
TSIG (Transaction SIGnature) provides shared-secret authentication for DNS updates. While optional in dnsweaver, it is strongly recommended for production use. This is HMAC TSIG, not the Kerberos-backed GSS-TSIG used by Windows secure dynamic updates.
Generating a Key¶
Server Configuration¶
- Go to Settings → General → enable Enable DNS-over-UDP Dynamic Updates
- Configure TSIG key under Settings → TSIG Keys
- Set zone to allow updates from the TSIG key
Record Types¶
| Type | Supported | Notes |
|---|---|---|
| A | ✅ | IPv4 address |
| AAAA | ✅ | IPv6 address |
| CNAME | ✅ | Alias |
| TXT | ✅ | Used for ownership tracking |
| SRV | ✅ | Service discovery |
MX and PTR records
MX and PTR are supported by the underlying protocol but not yet exposed in the provider interface.
Capabilities¶
The RFC 2136 provider supports:
- Ownership TXT records: Full ownership tracking for orphan cleanup
- Native updates: Atomic update operations via DNS UPDATE protocol
- All major record types: A, AAAA, CNAME, TXT, SRV
List() limitation
RFC 2136 doesn't provide a standard way to enumerate records. The provider maintains dnsweaver catalog TXT records, then queries each catalogued hostname and its ownership record. It does not enumerate arbitrary zone contents and does not require AXFR for ordinary reconciliation.
Troubleshooting¶
"REFUSED" Response¶
- Check that the zone allows dynamic updates
- Verify TSIG key name and secret match server configuration
- Ensure the record name is within the configured zone
"NOTAUTH" Response¶
- The DNS server is not authoritative for the zone
- Check zone configuration on the server
"TSIG verification failed"¶
- TSIG key name must end with a dot (e.g.,
dnsweaver.) - Secret must be base64-encoded
- Algorithm must match server configuration
Timeout¶
- Verify network connectivity to DNS server port 53
- Check if UDP is blocked (try
USE_TCP=true) - Increase
TIMEOUTvalue
Security Considerations¶
Never allow unauthenticated updates in production
Always use TSIG authentication. Unauthenticated updates allow anyone to modify your DNS records.
- Use TSIG authentication for all production deployments
- Restrict update permissions on the DNS server to specific zones/records
- Secure secret storage using Docker secrets or a vault
- Network isolation — limit DNS update traffic to trusted networks
References¶
- RFC 2136 — Dynamic Updates in the Domain Name System
- RFC 2845 — Secret Key Transaction Authentication (TSIG)
- RFC 4635 — HMAC SHA TSIG Algorithm Identifiers
- Windows secure dynamic update — Kerberos/TKEY/GSS-TSIG behavior that dnsweaver does not implement