Bug 1577470

Summary: REFUSED / SERVFAIL
Product: [Fedora] Fedora Reporter: Harald Reindl <h.reindl>
Component: dnsmasqAssignee: Petr Menšík <pemensik>
Status: CLOSED EOL QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 27CC: code, dougsland, itamar, jima, laine, p, pemensik, thozza, veillard
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-11-30 23:42:04 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Harald Reindl 2018-05-12 09:40:43 UTC
when the server is dnsmasq you get all sort of funny results from
SERVFAIL to REFUSED combined with the right answer - hell whatever "nslookup" and freinds asking for answer with a NXDOMAIN like every other nameserver does

that now even goes so far that named is no longer able to resolve zone-delegations pointing to a dnsmasq which makes it so easy to have a developers /etc/hosts on the other side of a vpn tunnel reachable for others instead force him to maintain a named setup

[root@testserver:~]$ nslookup rhsoft.testserver.example.com 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   rhsoft.testserver.example.com
Address: 127.0.0.1
** server can't find rhsoft.testserver.example.com: REFUSED
___________________

[root@flow-home:~]$ nslookup contentlounge.flow-home.example.net
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   contentlounge.flow-home.example.net
Address: 10.0.0.244
** server can't find contentlounge.flow-home.example.net: SERVFAIL
___________________

[root@testserver:~]$ host rhsoft.testserver.example.com 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

rhsoft.testserver.example.com has address 127.0.0.1
Host rhsoft.testserver.example.com not found: 5(REFUSED)
Host rhsoft.testserver.example.com not found: 5(REFUSED)
___________________

[root@testserver:~]$ dig rhsoft.testserver.example.com @127.0.0.1

; <<>> DiG 9.11.3-RedHat-9.11.3-4.fc27 <<>>
rhsoft.testserver.example.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42729
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;rhsoft.testserver.example.com.  IN      A

;; ANSWER SECTION:
rhsoft.testserver.example.com. 30 IN     A       127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Do Apr 26 10:40:44 CEST 2018
;; MSG SIZE  rcvd: 73

Comment 1 Harald Reindl 2018-05-12 09:46:28 UTC
jesus christ that heavior is just plain wrong - you MUST answer NXDOMAIN for non existing records

nslokup is not reliable tool for debugging DNS problems. nslookup asks the
DNS server for more data than you ask it for and thus can show error message
when data you ask are available, but data it searches for are not.

> [root@testserver:~]$ host rhsoft.testserver.example.com 127.0.0.1
> Using domain server:
> Name: 127.0.0.1
> Address: 127.0.0.1#53
> Aliases:
>
> rhsoft.testserver.example.com has address 127.0.0.1
> Host rhsoft.testserver.example.com not found: 5(REFUSED)
> Host rhsoft.testserver.example.com not found: 5(REFUSED)

"host" by default searches for A, AAAA and MX (as described in "-t" option),
this shows that dnsmasq has returned "127.0.0.1" for A, and REFUSED for AAAA
and MX records.

> [root@testserver:~]$ dig rhsoft.testserver.example.com @127.0.0.1

> ;; ANSWER SECTION:
> rhsoft.testserver.example.com. 30 IN     A       127.0.0.1

dig by default only asks for A which is why you got proper answer here. 
_____________________________________

[root@testserver:~]$ dig MX rhsoft.testserver.rhsoft.net @127.0.0.1
; <<>> DiG 9.11.3-RedHat-9.11.3-4.fc27 <<>> MX rhsoft.testserver.rhsoft.net @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 32246
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;rhsoft.testserver.rhsoft.net.  IN      MX

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sa Mai 12 11:44:18 CEST 2018
;; MSG SIZE  rcvd: 46

Comment 2 Petr Menšík 2018-05-30 20:48:05 UTC
Hi, could you please include more details about your setup? How is bind configured to forward queries to dnsmasq? How exactly is dnsmasq configured to handle testserver.example.com forwards?

Dnsmasq does not support authoritative mode. I think it always forwards non-cached names to forward servers. It would forward AAAA and MX queries, which may be forwarded back to it. But there would have to be configuration that would correctly reply NXDOMAIN or NOERROR for existing names.

Correct response should be NOERROR for a name that has A record, but does not have AAAA record that were asked for it.

Comment 3 Harald Reindl 2018-05-31 13:08:44 UTC
as i said: zone-delegation
subdomain IN NS a-record-pointing-to-dfnsmasq-machine


> Dnsmasq does not support authoritative mode. 
> I think it always forwards non-cached names to forward server

there is nothing like "non-cached names" in case of "warning: no upstream servers configured" and even if - when i ask it about something in "addn-hosts" it has to respond with the ipv4-address and for any other reccord-types NXDOMAIN and not RFEUSED/SERVFAIL

that all worked fine for years and if we don't get that fixed in a reasonable timeframe i have to throw away and sadly add the burden of maintain 2 named-zones on each and every developer machine (the whole purpose of this setup is to expose the local apache-vhosts over vpn/zone-delegation within the comany networks)

[root@testserver:~]$ cat /etc/dnsmasq.conf
user=dnsmasq
group=dnsmasq
interface=lo
bind-interfaces
no-resolv
no-hosts
addn-hosts=/etc/hosts.dnsmasq
local-ttl=30

[root@testserver:~]$ cat /etc/hosts.dnsmasq | grep corecms
127.0.0.1 corecms.testserver
127.0.0.1 corecms.testserver.rhsoft.net

[root@testserver:~]$ nslookup corecms.testserver.rhsoft.net 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   corecms.testserver.rhsoft.net
Address: 127.0.0.1
** server can't find corecms.testserver.rhsoft.net: REFUSED


[root@testserver:~]$ cat messages
May 31 15:03:36 testserver systemd[1]: Stopping DNS Cache/Forwarder...
May 31 15:03:36 testserver dnsmasq[542]: exiting on receipt of SIGTERM
May 31 15:03:36 testserver systemd[1]: Stopped DNS Cache/Forwarder.
May 31 15:03:36 testserver systemd[1]: Started DNS Cache/Forwarder.
May 31 15:03:36 testserver dnsmasq[1605]: started, version 2.79 cachesize 150
May 31 15:03:36 testserver dnsmasq[1605]: compile time options: IPv6 GNU-getopt DBus no-i18n IDN2 DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth DNSSEC loop-detect inotify
May 31 15:03:36 testserver dnsmasq[1605]: warning: no upstream servers configured
May 31 15:03:36 testserver dnsmasq[1605]: read /etc/hosts.dnsmasq - 18 addresses

Comment 4 Harald Reindl 2018-11-07 13:42:41 UTC
jesus christ why was there no response with months?

> Dnsmasq does not support authoritative mode. 
> I think it always forwards non-cached names to forward servers

it does, it just uses /etc/hosts unless you configure a different file and the point is that it idiotically says "REFUSED" when asked for a AAAA record instead of NXDOMAIN when there is no forwarding nameserver configured by intention

it worked over years to delegate development sub-domains on our primary named to the dnsmasq on developer-machines which now completly fails, forwarding in named don't work at all for a subdomain when it hosts the parent zone

the point is that i am fucking not interested add some dzoen hostnames to the auth-nameservers nor educate the developer behind his VPN how to setup and maintain named when all the years just edit /etc/hosts where enough so that others can see the websites he is working on


[root@testserver:~]$ nslookup corecms.testserver.rhsoft.net 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   corecms.testserver.rhsoft.net
Address: 127.0.0.1
** server can't find corecms.testserver.rhsoft.net: REFUSED

---------------------

[root@testserver:~]$ dig A corecms.testserver.rhsoft.net @127.0.0.1

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-10.P2.fc28 <<>> A corecms.testserver.rhsoft.net @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30072
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;corecms.testserver.rhsoft.net. IN      A

;; ANSWER SECTION:
corecms.testserver.rhsoft.net. 30 IN    A       127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mi Nov 07 14:30:37 CET 2018
;; MSG SIZE  rcvd: 74

---------------------

[root@testserver:~]$ dig AAAA corecms.testserver.rhsoft.net @127.0.0.1

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-10.P2.fc28 <<>> AAAA corecms.testserver.rhsoft.net @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 26212
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;corecms.testserver.rhsoft.net. IN      AAAA

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mi Nov 07 14:30:43 CET 2018
;; MSG SIZE  rcvd: 47

Comment 5 Ben Cotton 2018-11-27 13:37:33 UTC
This message is a reminder that Fedora 27 is nearing its end of life.
On 2018-Nov-30  Fedora will stop maintaining and issuing updates for
Fedora 27. It is Fedora's policy to close all bug reports from releases
that are no longer maintained. At that time this bug will be closed as
EOL if it remains open with a Fedora  'version' of '27'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 27 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 6 Ben Cotton 2018-11-30 23:42:04 UTC
Fedora 27 changed to end-of-life (EOL) status on 2018-11-30. Fedora 27 is
no longer maintained, which means that it will not receive any further
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version. If you
are unable to reopen this bug, please file a new report against the
current release. If you experience problems, please add a comment to this
bug.

Thank you for reporting this bug and we are sorry it could not be fixed.