[systemd-devel] systemd-resolved always forwards .local requests to DNS server

Sergey Zolotorev sergey.zolotorev at gmail.com
Mon Aug 6 14:53:44 UTC 2018


I'm trying to understand what is wrong (or is there a bug in
systemd-resolved) with my systemd-resolved configuration (I use
NetworkManager to set up interfaces). systemd-resolved does not resolve
.local names and always forwards them to external DNS.

Build:

$ systemctl --version
systemd 239
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN
+PCRE2 default-hierarchy=hybrid

Settings:

$ resolvectl
Global
...
MulticastDNS setting: yes
...

Link 3 (wlp4s0)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 mDNS/IPv4 mDNS/IPv6
       LLMNR setting: yes
MulticastDNS setting: resolve
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 192.168.1.1
         DNS Servers: 192.168.1.1
          DNS Domain: ~.

/etc/nsswitch.conf:

hosts: files mymachines myhostname resolve [!UNAVAIL=return] dns

$ ping -c 1 -q wndr3800.local
PING google.com (173.194.32.196) 56(84) bytes of data.

$ ping -c 1 -q wndr3800.local
ping: printer.local: Name or service not known

If I change DNS domain to something other then mDNS starts working while
DNS works very slow:

$ resolvectl domain wlp4s0 'foobar'

$ ping -c 1 -q google.com # takes about 10-20 seconds
PING google.com (173.194.32.196) 56(84) bytes of data.

$ ping -c 1 -q wndr3800.local
PING WNDR3800.local (192.168.1.1) 56(84) bytes of data.

systemd-resolved log (for case when domain=~.):

Aug 06 17:50:10 theta systemd-resolved[18512]: Got message type=method_call
sender=:1.9072 destination=org.freedesktop.resolve1
path=/org/freedesktop/resolve1 interface=org.freedesktop.resolve1.Manager
member=ResolveHostname cookie=2 reply_cookie=0 signature=isit
error-name=n/a error-message=n/a
Aug 06 17:50:10 theta systemd-resolved[18512]: Looking up RR for
wndr3800.local IN A.
Aug 06 17:50:10 theta systemd-resolved[18512]: Looking up RR for
wndr3800.local IN AAAA.
Aug 06 17:50:10 theta systemd-resolved[18512]: Sent message
type=method_call sender=n/a destination=org.freedesktop.DBus
path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=AddMatch
cookie=12134 reply_cookie=0 signature=s error-name=n/a error-message=n/a
Aug 06 17:50:10 theta systemd-resolved[18512]: Sent message
type=method_call sender=n/a destination=org.freedesktop.DBus
path=/org/freedesktop/DBus interface=org.freedesktop.DBus
member=GetNameOwner cookie=12135 reply_cookie=0 signature=s error-name=n/a
error-message=n/a
Aug 06 17:50:10 theta systemd-resolved[18512]: Got message
type=method_return sender=org.freedesktop.DBus destination=:1.5717 path=n/a
interface=n/a member=n/a cookie=5959 reply_cookie=12135 signature=s
error-name=n/a error-message=n/a
Aug 06 17:50:10 theta systemd-resolved[18512]: Cache miss for
wndr3800.local IN A
Aug 06 17:50:10 theta systemd-resolved[18512]: Transaction 7869 for
<wndr3800.local IN A> scope dns on wlp4s0/*.
Aug 06 17:50:10 theta systemd-resolved[18512]: Using feature level UDP for
transaction 7869.
Aug 06 17:50:10 theta systemd-resolved[18512]: Using DNS server 192.168.1.1
for transaction 7869.
Aug 06 17:50:10 theta systemd-resolved[18512]: Sending query packet with id
7869.
Aug 06 17:50:10 theta systemd-resolved[18512]: Got message
type=method_return sender=org.freedesktop.DBus destination=:1.5717 path=n/a
interface=n/a member=n/a cookie=5958 reply_cookie=12134 signature=n/a
error-name=n/a error-message=n/a
Aug 06 17:50:10 theta systemd-resolved[18512]: Match
type='signal',sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0=':1.9072'
successfully installed.
Aug 06 17:50:10 theta systemd-resolved[18512]: Processing incoming packet
on transaction 7869 (rcode=NXDOMAIN).
Aug 06 17:50:10 theta systemd-resolved[18512]: Added NXDOMAIN cache entry
for wndr3800.local IN ANY 60s
Aug 06 17:50:10 theta systemd-resolved[18512]: Transaction 7869 for
<wndr3800.local IN A> on scope dns on wlp4s0/* now complete with
<rcode-failure> from network (unsigned).
Aug 06 17:50:10 theta systemd-resolved[18512]: Sent message type=error
sender=n/a destination=:1.9072 path=n/a interface=n/a member=n/a
cookie=12136 reply_cookie=2 signature=s
error-name=org.freedesktop.resolve1.DnsError.NXDOMAIN
error-message='wndr3800.local' not found
Aug 06 17:50:10 theta systemd-resolved[18512]: Sent message
type=method_call sender=n/a destination=org.freedesktop.DBus
path=/org/freedesktop/DBus interface=org.freedesktop.DBus
member=RemoveMatch cookie=12137 reply_cookie=0 signature=s error-name=n/a
error-message=n/a
Aug 06 17:50:10 theta systemd-resolved[18512]: Freeing transaction 7869.

-- 
Sergey Zolotorev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20180806/88d98ca6/attachment.html>


More information about the systemd-devel mailing list