DNS a 127.0.0.53 di systemd sta ignorando alcune ricerche


14

Il DNS di systemd amato a 127.0.0.53 sembra funzionare tranne quando chiamo per macchine locali per nome. Ma se eseguo una query per loro e specifico specificamente il server DNS locale (il mio router), ottengo la risposta corretta. Ma il file di configurazione dice che sta anche usando il router come indirizzo di ricerca. qualche idea?

Sto eseguendo Ubuntu 18.04 sul mio laptop Dell.

Risultati errati:

$ nslookup web1

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find web1: SERVFAIL

Anche non riesce

$ nslookup -i wlp3s0 web1
nslookup: couldn't get address for 'web1': not found

Risultati corretti:

$ nslookup web1 192.168.1.1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

Informazioni di configurazione systemd-resolver

$ systemd-resolve --status

Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 3 (wlp3s0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.1
          DNS Domain: wp.comcast.net

Link 2 (enp2s0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Informazioni sulla configurazione NetworkManager

$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

Quindi, come posso ottenere nslookup per restituire la risposta corretta? Link 3 sembra essere l'informazione corretta (la mia connessione wifi) e il mio DNS sul router sta restituendo la risposta corretta ma la cache locale non cerca mai di cercare l'indirizzo (o almeno così sembra).



Non ho dns = dnsmasq nel mio file di configurazione. Sto aggiornando la mia domanda per dimostrarlo.
schworak,

Quale versione di Ubuntu stai utilizzando e puoi anche aggiornare il tuo post con la configurazione IP?

Sto eseguendo Ubuntu 18.04 su un laptop Dell.
schworak,

potresti provarenslookup -i wlp3s0 web1
cmak.fr

Risposte:


9

Il tuo file resolv.conf non puntava nel posto sbagliato - ../run/systemd/resolve/stub-resolv.conf è dove dovrebbe puntare di default.

Il problema è che systemd-resolvednon passa nomi non punteggiati su DNS. Apparentemente questo funziona "come progettato". Vedi questo problema github che afferma che "risolto non consentirà mai le ricerche a etichetta singola di filtrare su DNS unicast".

O se non siete d'accordo con il ragionamento in quel numero GitHub, c'è un modo per risolvere questo problema. Non richiede nemmeno di apportare modifiche alla configurazione predefinita sul tuo computer Ubuntu:

  1. Innanzitutto, il DNS della LAN deve avere un nome di dominio.

    Se stai usando dnsmasq, aggiungi quanto segue /etc/dnsmasq.confsul tuo server DNS:

    expand-hosts
    domain=your-domain # replace "your-domain" with domain of your choice
    

    Ora dovresti essere in grado di risolvere i nomi host LAN se aggiungi il dominio:

    nslookup web1.your-domain
    
  2. In secondo luogo, assicurati che il nome del dominio della tua LAN sia impostato anche nel tuo server DHCP se è diverso dal tuo server DNS. Sul mio server DHCP (il mio router), questa impostazione è chiamata semplicemente "Nome dominio".

    Se quindi rinnovi il contratto di locazione DHCP sulla tua casella Ubuntu, dovresti visualizzare una direttiva di ricerca in /run/systemd/resolve/stub-resolv.conf:

    nameserver 127.0.0.53
    search your-domain
    

Ora guardando in alto web1lo espanderà a web1.your-domain, che poi risolverà usando DNS.

$ nslookup web1
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   web1.your-domain
Address: 192.168.1.107

Nota che se usi diginvece di nslookup, dignon usi il percorso di ricerca di default - usa la sua +searchopzione per abilitarlo.


Prima di riavviare, ha cercato bene web1.mydomain.com. Ma ovviamente cercare solo web1 non ha funzionato. Quindi ho riavviato e per tutta la vita non ho idea di dove stia rilevando il dominio Comcast ma ora se cerco web1 risponde con l'IP corretto ma mostra il dominio comcast invece del mio dominio. Si risolve quindi non sono troppo preoccupato ma che diamine ????
schworak,

@schworak Weird! Il tuo server DHCP è anche il tuo modem Comcast? Vedi quel dominio che appare in /etc/resolv.confo nell'output di uno nmcli -g allo systemd-resolve --status? Forse prova a guardare cosa c'è nel tuo contratto di locazione DHCP ?
Laurence Gonsalves,

Non è il modem comcast. Ho un router SysLink con DDWRT in esecuzione. Le impostazioni di comcast vengono totalmente sostituite. Il nome del comcast viene visualizzato nel file resolv.conf che viene generato automaticamente all'avvio. Non sono troppo preoccupato per questo, ma è strano.
schworak,

@LaurenceGonsalves Grazie mille per il link al problema github. Avevo trovato soluzioni alternative al problema, ma questo in realtà mi ha aiutato a capire il problema alla radice.
Gregory Arenius,

19

Ho trovato la soluzione che ha funzionato per me.

il mio file resolv.conf puntava nel posto sbagliato. Sembra un bug in Ubuntu come è successo sul mio laptop (la macchina su cui ho notato per la prima volta questo problema) e su una nuova installazione di Ubuntu 18.04 Server.

Il predefinito

$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 39 Apr 26 12:07 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

L'ho cancellato e ho indicato il file corretto. Dopo il riavvio, questo ha risolto il mio problema. E sono stato anche in grado di cambiare rete sul mio laptop e il DNS è cambiato correttamente. Ovviamente quando sono su reti esterne non riesco a risolvere nessuno dei miei computer locali ma è previsto. Non appena torno alla mia rete locale, tutte le macchine locali si risolvono correttamente perché il mio router è il DNS.

La correzione

$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 32 May 29 08:48 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

$ sudo reboot

Dopodiché, tutto ha funzionato come mi aspettavo e 127.0.0.53 non viene più utilizzato.

I risultati corretti

$ nslookup web1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

$ nslookup google.com

Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.7.174
Name:   google.com
Address: 2607:f8b0:4004:80e::200e

Si prega di segnalare questo errore utilizzando ubuntu-bug resolvconf.
Chai T. Rex,

Quando inizio a inviare dice resolvconf (non installato). Resolvconf e systemd-resolve sono la stessa cosa?
schworak,

systemd-resolveè fornito dal systemdpacchetto , quindi prova ubuntu-bug systemdinvece.
Chai T. Rex,

Grazie! Non avevo mai usato quella funzionalità di segnalazione bug prima. Molto bella.
schworak,

1
Wow, questo è pazzo. Grazie. Questo bug è mai stato corretto? È un bug specifico di Docker? Penso che resolv.confsia impostato in questo modo per la rete docker bridge DNS giusto?
void.pointer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.