-
-
Notifications
You must be signed in to change notification settings - Fork 383
Forwarder returns servfail on upstream response noerror no data #946
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Yes, this is true. It would be nice to both be able to do this, but also the item that changes it for 1.18.0, that notes: Fix to ignore entirely empty responses, and try at another authority. This turns completely empty responses, a type of noerror/nodata into a servfail, but they do not conform to RFC2308, and the retry can fetch improved content. |
Adding a SOA record would also solve the issue, eg. for the upstream server to include a SOA record into the answer. Unbound could perhaps already do this, when a local-data statement with a suitable SOA record is included in config, |
There is a fix committed. Thanks for the detailed report. The fix notices the event and classifies the first nodata answer to be retried. It then probes for another server. But since it is always_nodata, that also returns nodata, or it notices no better server selection and tries again. The second time it notices the event of an empty answer, it accepts the answer. This makes the setup from the issue work, but also tries again at another server like in the issue ticket that was solved for 1.18.0, and so works for both cases. |
Thanks for the fix. Now the reply is correct with rcode noerror. As only one upstream server is configured, it gets queried twice, would it be possible to directly accept the first answer in this case ? |
I do not have sufficient information about the 1.18.0 fix case to know if that would be helpful for it. But it might be possible to implement by tracking the number of servers, right now it just attempts once again. It more certainly works with the current approach. |
Hi, Thanks a lot! |
Not sure what configuration workaround exists, unbound offers the option to tailor the results for particular queries with |
Hi @wcawijngaards, this isn't an ongoing issue, but could you help me to better understand the issue for my future reference? 🙇 I'd like to make sure I understand your comment right, as you previously mentioned:
Basically, we started seeing some issues with Let's Encrypt cert issuance, as they switched to Unbound 1.18 last month: They started failing to resolve some domains that were fine with the prior version, otherwise.
Am I understanding this right? |
Yes I think you have this correct. The issue you cite is different from the top-post issue, in that the SOA RR is removed from the response by unbound because it is out-of-zone. And then it is the similar case because the empty result that remains. The fix would then allow unbound to retry instead of ignore it all the time, and use the retried result as the answer, and that makes it work again as before. Whilst also retrying empty contents to see if it can be improved. |
Describe the bug
unbound 1.18.0 configured as forwarder : when upstream server replies with rcode NOERROR and zero answers, the forwarder replies to the client with rcode SERVFAIL.
To reproduce
local-zone: "example.com" always_nodata
Expected behavior
return rcode NOERROR with zero answers to the client as did unbound 1.17.1.
System:
unbound -V
output:Additional information
log for unbound forwarder 1.18.0
log for unbound forwarder 1.17.1
The text was updated successfully, but these errors were encountered: