2

While trying to fix a DNS issue with NetworkManager's ModemManager on Ubuntu, I came across this difference in the output of systemd-resolve --status when connected. (ping ip works, manually editing /etc/resolv.conf fixes the problem, and setting FallbackDNS also fixes the problem, but all with side-effects.

Working installation - PPP modem (Ubuntu 17.10)

Link 3 (wwp0s20u6)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 198.142.0.51
                      211.29.132.12

Broken installation - PPP modem (Same hardware - Lubuntu 17.04)

Link 2 (wwp0s20u6)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

These are both versions of Ubuntu and identical hardware. The configs of the network connections in /etc/NetworkManager/system-connections are also identical.

On links with DHCP like ethernet and Wifi adapters, the DNS scope is added to the link and DNS works correctly on both machines. e.g.

Broken installation - WiFi adapter working

Link 3 (wlan0)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.0.1

So, I speculate that it's not a problem with systemd-resolved itself, but with something that tells systemd-resolved it should be looking for DNS.

What are systemd link "Scopes"?

Why would one machine assign the "DNS" scope and the other not?

0

systemd-resolve is a front end to the systemd-resolved service, which describes itself as a "Network Name Resolution manager". systemd-resolved.service is configured in /etc/systemd/resolved.conf. This file can contain the option DNS=, which should have as value a list of DNS server addresses. If this option is missing, /etc/resolv.conf is used instead.

/etc/resolv.conf in turn can be a symlink to /run/systemd/resolve/resolv.conf, which is maintained by systemd-resolved itself, or /etc/resolv.conf can be created by some other program independently of systemd-resolved.

My guess is that your Lubuntu machine does not have a DNS= entry in /etc/systemd/resolved.conf and /etc/resolv.conf is missing, or it does not contain DNS server entries.

LLMNR (RFC 4794) stands for "Link-Local Multicast Name Resolution", and is an alternative to DNS for resolving names. LLMNR does not have a central service, but each host responds with its own addresses when a query for a matching name is sent as a multicast datagram over the local LAN. As the name says, LLMNR is restricted to the local network; it has link-local scope. A competing protocol to LLMNR is Multicast DNS (RFC 6762).

  • DNS servers are in both cases supplied by the server or ModemManager. There is no DNS= in either machine. I tried adding DNS=8.8.8.8 and it didn't add 'DNS' to Current Scopes, unfortunately. :( – tudor Nov 17 '17 at 0:00
  • Additionally, the DNS scope is added to other non-ModemManager links like ethernet and WiFi adapters with DHCP. – tudor Nov 17 '17 at 0:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.