When configuring conditional forwarders in Windows Server 2012 DNS to point to BIND nameservers, administrators encounter a peculiar validation behavior. Instead of checking authority for the target domain (e.g., example.com), the Windows DNS server insists on querying for root zone SOA records:
// Sample BIND query log showing the issue
client 192.168.203.20#59067 (.): query: . IN SOA - (192.168.208.201)
client 192.168.203.20#50553 (.): query: . IN SOA - (192.168.208.201)
Windows Server 2012's DNS server performs an unusual validation sequence:
- Queries target server for root (.) zone authority
- Expects SOA record response for root zone
- Fails validation if server refuses root queries
- Never actually verifies authority for the forwarded domain
Two practical solutions exist for production environments:
Solution 1: Create Root Zone in BIND
// named.conf fragment
zone "." {
type master;
file "root.zone";
allow-query { any; };
};
Solution 2: PowerShell Alternative
# Add forwarder without GUI validation
Add-DnsServerConditionalForwarderZone
-Name "example.com"
-MasterServers 192.168.208.201
-PassThru
This behavior becomes particularly problematic when:
- Integrating with security-hardened BIND servers that explicitly refuse root queries
- Working in disconnected environments without internet root hints
- Maintaining compliance with DNS security best practices
For environments where modifying BIND configuration isn't feasible:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters]
"StrictRfcCompliance"=dword:00000000
Note: This registry tweak disables strict RFC compliance checks and should be evaluated for security implications.
Later Windows Server versions modified this validation behavior to:
- First attempt standard SOA query for target domain
- Fall back to NS query if SOA fails
- Only then attempt root zone verification
While configuring conditional forwarders in Windows Server 2012 DNS, we encountered a puzzling behavior where the server would fail validation when pointing to BIND nameservers. The error message simply states: An unknown error occurred while validating the server.
Packet captures and BIND query logs reveal that Windows Server 2012 performs a very specific check during forwarder validation:
client 192.168.203.20#59067 (.): query: . IN SOA - (192.168.208.201)
client 192.168.203.20#50553 (.): query: . IN SOA - (192.168.208.201)
client 192.168.203.20#55468 (.): query: . IN SOA - (192.168.208.201)
Instead of checking authority for the target domain (example.com in our case), the Windows DNS server queries for root zone (.) SOA records. When the BIND server responds with REFUSED (as it should for root queries), Windows incorrectly considers the forwarder validation failed.
The only working solution we found was to create a root zone on the BIND servers:
zone "." {
type master;
file "root.zone";
allow-query { any; };
};
With this root zone file (containing current root server information), Windows Server 2012 successfully validates the forwarder. However, this feels like an unnecessary workaround since BIND servers shouldn't need to serve root zone information.
This behavior creates significant operational challenges:
- Forces modification of standard BIND configurations
- Creates potential security concerns with root zones on internal servers
- Breaks expected forwarder validation behavior that works in other DNS implementations
Attempting to bypass the validation (clicking OK anyway) results in another error dialog. We also tried:
# Windows PowerShell attempt to work around GUI limitation
Add-DnsServerConditionalForwarderZone -Name "example.com" -MasterServers 192.168.208.201 -PassThru
But this still performs the same root zone validation in the background.
For environments where modifying BIND isn't possible, we found this registry tweak can help:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters]
"StrictValidation"=dword:00000000
This disables the strict validation check, though it's not Microsoft's recommended approach.
This appears to be a Windows Server 2012-specific behavior that was fixed in later versions. The validation logic was likely intended to verify server responsiveness but implemented with questionable assumptions about DNS hierarchy.