Hi Martin, thanks for your great pre-analysis. I agree to the general issue and the changes are small enough to review although the context it implies is a lot.
Also we need to be clear that this has two stages of not-correct: 2.76: 4ace25c5d6: Treat REFUSED (not SERVFAIL) as an unsuccessful upstream response 2.77: 68f6312d4b: Stop treating SERVFAIL as a successful response from upstream servers. So: - Xenial is lacking both - Zesty is lacking the second - Artful is good Since I rarely patch dsnsmasq I wanted to ask for a check before going to an SRU with that. I provided a ppa at [1] with test builds for Xenial and Zesty. If you could try those out that would be very kind. [1]: https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3003 ** Also affects: dnsmasq (Ubuntu Zesty) Importance: Undecided Status: New ** Also affects: dnsmasq (Ubuntu Xenial) Importance: Undecided Status: New ** Changed in: dnsmasq (Ubuntu) Status: New => Fix Released -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to dnsmasq in Ubuntu. https://bugs.launchpad.net/bugs/1726017 Title: dnsmasq prematurely returns REFUSED, breaking resolver Status in dnsmasq package in Ubuntu: Fix Released Status in dnsmasq source package in Xenial: New Status in dnsmasq source package in Zesty: New Bug description: Seen with dnsmasq 2.75-1ubuntu0.16.04.3, after Trusty->Xenial update. In my local network, I have two DNS servers; 192.168.1.1 is the local DHCP/DNS server configured to reply to queries inside the local network, and 192.168.1.4 is the forwarder in my DSL Router, responsible to answer queries about the outside world. THe DHCP server returns these in the order 192.168.1.4,192.168.1.1. The internal server replies REFUSED to queries about external domains. This configuration has worked well with Ubuntu 14.04 and other Linux Distros (using Fedora and OpenSUSE internally here), as well as various other OSes. It does not work with Ubuntu 16.04. NetworkManager's dnsmasq instance pushes the REFUSED reply from 192.168.1.1 to applications and ignores the successful reply from 2.168.1.4. This causes all DNS queries to external servers to fail. I believe this is fixed in dnsmasq 2.76 and related to http://lists.thekelleys.org.uk/pipermail/dnsmasq- discuss/2016q1/010263.html http://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commitdiff;h=68f6312d4bae30b78daafcd6f51dc441b8685b1e http://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=object;h=4ace25c5d6 According to these sources, the bug was introduced with http://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=object;h=51967f9807665dae403f1497b827165c5fa1084b In my local setup at least, I can work around the problem by using the "strict-order" option to dnsmasq. echo strict-order >/etc/NetworkManager/dnsmasq.d/order.conf But that's not a general solution. If dnsmasq has several forwarders, and some return SERVFAIL or REFUSED and others return SUCCESS, the successful answer should be returned to clients, independent of the strict-order setting. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1726017/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp