Hello George Wilson,
The problem of infinite loops in DNS recursion occurs when internal forwarders and external root servers query each other without a termination condition. Windows DNS itself doesn't offer an explicit "Recursion Depth Limit" setting like BIND, but you can harden the engine using two mechanisms. First, you can restrict recursion completely or selectively via DNS policies (Add-DnsServerQueryResolutionPolicy), so that specific zones or clients don't forward recursive queries. Second, you can set the MaxRecursionDepth and MaxRecursionTimeout values in the registry under HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters. These values are not exposed by default but are documented by Microsoft to prevent infinite loops.
In practical terms, this means: set MaxRecursionDepth to a conservative value like 3–5 so that the server discards the request after a few hop attempts, and don't unnecessarily increase the timeout, as this will increase CPU load. With PowerShell, you can also use Set-DnsServerRecursion to globally disable recursion or allow it only for specific clients. Before rolling out the recursion, you should monitor the cluster logs to ensure that the loops are actually being terminated and that legitimate internal queries are still being resolved. This way, you achieve a clean limitation without the risk of an amplification loop crippling the service again.
If my answer is helpful to you, please click "Accept the answer" to support me.
Thank you,
Domic.