La ricerca del dns del dominio .local di Ubuntu 18.04 non funziona


18

Sto usando un Raspberry Pi 3 con Ubuntu 18.04. Nella mia azienda abbiamo un server DNS e un paio di domini con ".local". So tecnicamente che questo non è corretto e dovrebbe essere invece ".lan", perché .local è riservato ai DNS multicast. Ma è così e non può essere facilmente modificato. Quindi sul mio computer Windows posso eseguire il ping e navigare a quei nomi di dominio senza problemi. Sul mio Ubuntu tuttavia non posso.

Non riesco a usare gli IP perché alcuni domini si trovano sulla stessa macchina e il server web IIS ordina le cose che vanno dove.

Ho cercato e si presenta abbastanza spesso:

Tuttavia, cambiare /etc/nsswitch.conf non mi aiuta. Provai

  • host: file mdns4_minimal [NOTFOUND = return] dns nomehost # predefinito
  • host: file dns
  • host: file mdns4_minimal [NOTFOUND = continua] dns nomehost
  • host: file mdns4 [NOTFOUND = return] dns nomehost
  • host: file mdns4 [NOTFOUND = continua] dns nomehost
  • host: file dns mdsn4_minimal nomehost
  • host: dns
  • alcuni altri

Nessuno dei quali ha funzionato. Ho provato a riavviare anche dopo una modifica. Ho provato a dire ad avahi che il domain-name = alocal in /etc/avahi/avahi-daemon.conf, non ha funzionato dopo il riavvio del servizio, non ha funzionato dopo il riavvio. Dopo che questo non ha funzionato, ho provato a disabilitare completamente il servizio avahi-daemon.

sudo systemctl disable avahi-daemon

Dopo un riavvio ho provato di nuovo un paio di permutazioni in /etc/nsswitch.conf, senza alcun effetto.

con le mie impostazioni correnti in host (file dns) ottengo questa risposta:

dig login.name.local # not the actual name

; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33538
;; flags: qr rd ra; QUERY: 1, ANSWER:0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; Query time: 2msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

Tuttavia quando istruisco scavare per interrogare direttamente il server ottengo la risposta corretta:

dig @dnsIP login.name.local
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57866
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; ANSWER SECTION:
login.name.local. 3600 IN    A        serverIP

;; Query time: 2msec
;; SERVER: dnsIP#53(dnsIP)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

Questa versione di Ubuntu utilizza netplan con il gestore della rete. L'IP DNS corretto è sicuramente nell'elenco. (in effetti è il DNS primario.) Anche dnsIp è lo stesso di serverIP, ma questo non dovrebbe essere un problema.

Effettua il ping o la connessione tramite browser e ovviamente non funziona. Nessuno usa la query dns.

Sono in perdita su cosa fare. Certamente non possiamo passare a un nome di dominio diverso. Ho inserito il nomeserver in / etc / hosts ma questa è solo una soluzione temporanea.


cambiando resolv.conf come jeremfg mi ha suggerito di funzionare dopo aver inseguito la coda per diverse ore. Tnx.
user3529828

Risposte:


13

Ho riscontrato un problema molto simile (se non esattamente lo stesso) su Linux Mint 19 (Tara). Sono riuscito a risolverlo combinando 3 diverse informazioni. Sembra essere tutto correlato alle recenti modifiche con systemd risolto.

Innanzitutto, sì, ho dovuto configurare /etc/nsswitch.conf come facevi e ti aspetteresti. Fintanto che dns viene prima di mdns dovresti essere bravo. Ho finito semplicemente:

hosts:          files dns myhostname

rif: /unix//a/457172/271210

Prima di aggiornare a questa versione di Mint, questa è l'unica cosa che dovevo fare. Ora ho anche finito per apportare le altre due modifiche seguenti per farlo funzionare ...


Dopo di che ho configurato il mio dominio di ricerca in modo che il sistema risolto funzionasse come volevo. Quindi ho modificato il file /etc/systemd/resolved.conf , l' impostazione Domini nella sezione [risoluzione] . Nel mio caso è finito per apparire come:

[Resolve]
#DNS=
#FallbackDNS=
Domains=trilliant.local
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

rif: /ubuntu//a/1031271/872881

Ho anche cambiato la configurazione di avahi in qualcos'altro ("mdns" se ricordo bene, ma non importa). Non dovrebbe essere richiesto comunque dalla mia comprensione. Basta aggiungere per completezza.


Ma nulla ha funzionato fino a quando non ho chiamato il seguente:

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

rif: /ubuntu//a/938703/872881

Dopo aver chiamato questo, tutto ha iniziato a funzionare perfettamente e come previsto!

Quindi è possibile che non ho davvero bisogno di cambiare il file /etc/systemd/resolved.conf ma ho mantenuto questa modifica poiché aveva senso e mi permetteva di digitare solo il nome di una macchina, senza il nome di dominio completo completo, affinché la risoluzione DNS funzionasse .


Avresti potuto mettere l'ultima riga all'inizio e immagino che otterresti più voti facendo così.
HongboZhu,

@HongboZhu Lo farei se sapessi per certo che è l'unica modifica richiesta per far funzionare i domini locali. Sono abbastanza sicuro che dovresti ancora preferire dns a mdns anche nella configurazione del resolver. Presumo che il tuo commento riguardi la configurazione del dominio nel mezzo? In tal caso, sì, suppongo di poterlo mettere alla fine come modifica facoltativa. Ma gli altri due pezzi sono richiesti IMHO.
jeremfg,

1
Sulla mia nuova installazione 18.04.2, basta cambiare l'ordinamento "hosts" su nsswitch.conf funziona già.
Tomofumi,

17

La risposta accettata non ha risolto il mio problema. Non aveva nulla a che fare con avahi: non avevo installato il servizio avahi. Ho il mio sistema impostato per ottenere il suo IP E le sue impostazioni del server DNS dal DHCP. Tuttavia, il DNS fornito da DHCP non è stato verificato per le query utilizzando .local

Il vero problema è che Ubuntu 18.4 ha il suo resolv.conf collegato a un file stub che punta all'host locale per la risoluzione dei nomi. Localhost dns la risoluzione dei nomi significa che il sistema rifiuta di controllare il server DNS fornito per i nomi .local, ritenendo (erroneamente) che tali nomi non siano validi. Questa è la configurazione predefinita di /etc/resolv.conf:

ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Jan 22 13:26 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

il contenuto del file stub è (commenti rimossi):

 cat /run/systemd/resolve/stub-resolv.conf
 .. removed comments..  
nameserver 127.0.0.53
    search reddog.microsoft.com

la configurazione di risoluzione "reale" ha l'impostazione "corretta" dns (da dhcp):

cat /run/systemd/resolve/resolv.conf

..removed comments..
nameserver 10.168.200.250 # This is my server that can resolve .local
nameserver 208.67.220.220 # these are optional, fallback dns servers
nameserver 208.67.222.222
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.8.8
search reddog.microsoft.com

Per fare in modo che il sistema utilizzi il risolutore DNS preferito anziché localhost, è necessario modificare il collegamento simbolico in modo che punti a /run/systemd/resolve/resolv.conf anziché a /run/systemd/resolve/stub-resolv.conf:

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

Immediatamente dopo, la risoluzione di .local ha iniziato a funzionare. non è necessario riavviare o riavviare alcun servizio.


Ho disinstallato Avahi e poi ho seguito i tuoi passi. Questo l'ha fatto per me. Grazie Signore. (Usando Ubuntu 18.04 Desktop).
José L. Patiño,

Grazie. Questa è stata la risposta per me. Perché non "funziona" fuori dalla scatola?
adampski,

qual è la differenza tra la tua soluzione e la risposta accettata? Per entrambi, si possono saltare i primi 2/3 della risposta, anche se è lo stesso :-)
HongboZhu

Questa è l'unica risposta che ho visto finora che replica il comportamento nelle versioni precedenti di Ubuntu (e altri Linux), ovvero l'elenco dei server DNS è fornito da DHCP e la risoluzione dell'indirizzo non viene mai memorizzata nella cache locale.
Slicedpan

2

Per me il modo di lavorare per Ubuntu 18.04 è:

Modifica avahi conf:

sudo vim /etc/avahi/avahi-daemon.conf

e cambia .local in .alocal:

[server]
domain-name=.alocal

quindi apri resolved.conf:

sudo vim /etc/systemd/resolved.conf

e decommenta e modifica domini:

[Resolve]
...
Domains=yourdomain.local
...

e infine riavviare i servizi:

sudo service systemd-resolved restart
sudo service avahi-daemon restart

Nel mio caso ho solo bisogno di cambiare Domainsin /etc/systemd/resolved.conf(e riavviare il servizio).
tokosh

2
Questo non l'ha fatto per me. ancora niente
FalcoGer,

Stessa versione di Ubuntu. Utilizzando openvpn. Questa soluzione funziona bene con VPN su molte macchine nel mio team.
razvanone,

2

Ciò che ha funzionato per me è stato l'aggiunta del DNS locale come nameserver a /etc/resolvconf/resolv.conf.d/head(come descritto qui ).

  1. Installa il pacchetto resolvconf.

    sudo apt install resolvconf
    
  2. Modifica /etc/resolvconf/resolv.conf.d/heade aggiungi quanto segue:

    nameserver 8.8.4.4  
    nameserver 8.8.8.8  
    
  3. Riavviare il servizio resolvconf.

    sudo service resolvconf restart
    

La correzione dovrebbe essere permanente.


Il file head contiene un avviso per non modificare il file, perché è generato da resolvconf?
John Mee,

@JohnMee Il headfile è l' origine utilizzata per generare /run/resolvconf/resolv.conf. Tuttavia, non modificherei anche questo file.
Melebio

0

La mia situazione era simile ma in qualche modo diversa: usiamo nomi di server come myserversu Windows ma questo non funzionava su Ubuntu 16.04 e dovevo usarlo myserver.mycompany.local. Dopo l'aggiornamento a 18.04, ho ottenuto il seguente comportamento:

$ ping myserver.mycompany.local
ping: myserver.mycompany.local: Name or service not known

$ ping myserver
PING myserver.mycompany.local (192.168.x.y) 56(84) bytes of data.
64 bytes from myserver.mycompany.local (192.168.x.y): icmp_seq=1 ttl=62 time=3.05 ms
...

Ho semplicemente dovuto sostituire myserver.mycompany.localcon myservernelle mie applicazioni.

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.