You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A single DNS request is enough to put dnscrypt-proxy in an infinite forwarding loop to the point where it disrupt services and it can’t answer other queries.
Expected behavior (i.e. solution)
Detect the resolution loop and return a SERVFAIL response.
Other Comments
Since this is a forwarding gone wrong, it’s easier to detect than a normal loop. When n identical queries from the same source match a forwarding rule in a short time interval , send a TXT request to _someuniqueid.forwarding-host to that forwarding server. If that same request is received by the server, then stop all lookups via the affected forwarding chain (or maybe just requests matching the request that triggered the _someuniqueid) for a second or two to break the loop.
This discussion was converted from issue #1938 on November 05, 2021 22:33.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Output of the following commands:
Version 2.1.1
How do we replicate the issue?
echo "localhost 127.0.0.1" >> /etc/dnscrypt-proxy/forwarding.conf
echo "nameserver 127.0.0.1" > /etc/resolv.conf
dig localhost @127.0.0.1
Actual behavior (i.e. the problem)
A single DNS request is enough to put dnscrypt-proxy in an infinite forwarding loop to the point where it disrupt services and it can’t answer other queries.
Expected behavior (i.e. solution)
Detect the resolution loop and return a SERVFAIL response.
Other Comments
Since this is a forwarding gone wrong, it’s easier to detect than a normal loop. When n identical queries from the same source match a forwarding rule in a short time interval , send a TXT request to
_someuniqueid.forwarding-host
to that forwarding server. If that same request is received by the server, then stop all lookups via the affected forwarding chain (or maybe just requests matching the request that triggered the _someuniqueid) for a second or two to break the loop.Beta Was this translation helpful? Give feedback.
All reactions