GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso impostare il mio DNS quando resolv.conf viene sovrascritto?

Credo che se vuoi sovrascrivere il server dei nomi DNS devi semplicemente aggiungere una riga simile a questa nel tuo base file sotto resolv.conf.d .

Esempio

$ sudo vim /etc/resolvconf/resolv.conf.d/base

Quindi inserisci il tuo elenco di server dei nomi in questo modo:

nameserver 8.8.8.8
nameserver 8.8.4.4

Infine aggiorna resolvconf :

$ sudo resolvconf -u

Se dai un'occhiata alla pagina man di resolvconf descrive i vari file sotto /etc/resolvconf/resolv.conf.d/ .

   /etc/resolvconf/resolv.conf.d/base
          File  containing  basic  resolver  information.  The lines in this 
          file are included in the resolver configuration file even when no
          interfaces are configured.

   /etc/resolvconf/resolv.conf.d/head
          File to be prepended to the dynamically generated resolver 
          configuration file.  Normally this is just a comment line.

   /etc/resolvconf/resolv.conf.d/tail
          File to be appended to the dynamically generated resolver 
          configuration file.  To append nothing, make this  an  empty  
          file.   This file is a good place to put a resolver options line 
          if one is needed, e.g.,

              options inet6

Anche se c'è un avviso in cima al head file:

$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

questo avviso è lì in modo che quando questi file vengono costruiti, l'avviso alla fine si farà strada nel resolv.conf risultante file che questi file verranno utilizzati per creare. Quindi avresti potuto facilmente aggiungere il nameserver righe descritte sopra per base file, al head anche il file.

Riferimenti

  • Mantieni server dei nomi DNS per Ubuntu 14.04
  • Come faccio ad aggiungere un server DNS tramite resolv.conf?

Anche io sono interessato a questa domanda e ho provato la soluzione proposta da @sim.

Per testarlo, metto

nameserver 8.8.8.8

in /etc/resolvconf/resolv.conf.d/base e

nameserver 8.8.4.4

in /etc/resolvconf/resolv.conf.d/head

Quindi ho riavviato la rete con

sudo service network-manager restart

Il risultato è che /etc/resolv.conf sembra

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1

e nm-tool afferma che i dnsserver sono

DNS:             208.67.222.222
DNS:             208.67.220.220

che sono quelli forniti dal mio router. D'altra parte scavare un indirizzo lo dice

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Se ho ragione, concludo da tutto ciò che

  1. solo la parte "head" viene letta da resolvonf:la parte "base" è in qualche modo controllata da dnsmasq
  2. il dnsserver è effettivamente forzato a 8.8.4.4 indipendentemente dal server fornito da dhcp, MA si perde la memorizzazione nella cache fornita da dnsmasq, poiché la richiesta viene sempre inviata a 8.8.4.4
  3. dnsmasq utilizza ancora SOLO il dnsserver fornito da dhcp.

Tutto sommato, funziona ma non credo che sia il risultato desiderato richiesto. Una soluzione più ravvicinata penso sia la seguente. Modifica

sudo vim /etc/dhcp/dhclient.conf

quindi aggiungi

supersede domain-name-servers 8.8.8.8;

Il risultato è il seguente:resolv.conf contiene solo 127.0.0.1, il che significa che la cache dnsmasq è stata richiamata e nm-tool dice

DNS:             8.8.8.8

il che significa che se il nome cercato non è nella cache, allora viene richiesto su 8.8.8.8 e non sul server fornito da dhcp.

Un'altra opzione (forse migliore) è usare "prepend" invece di "supersede":in questo modo, se il nome non viene risolto da 8.8.8.8, allora la richiesta ricade sull'altro server. Infatti, nm-tool dice

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220

Ho scoperto che puoi cambiare i nameserver che dnsmasq utilizza aggiungendo le seguenti righe a /etc/dnsmasq.conf :

server=8.8.8.8
server=8.8.4.4

Non avevo un /etc/dnsmasq.conf file, poiché è installato dal pacchetto dnsmasq, ma Ubuntu viene fornito solo con dnsmasq-base. Ho eseguito sudo apt-get install dnsmasq , quindi modificato /etc/dnsmasq.conf , quindi sudo service dnsmasq restart e sudo service network-manager restart .

Ho eseguito sudo tail -n 200 /var/log/syslog per controllare il mio registro di sistema e verificare che dnsmasq stava usando i nameserver che ho specificato:

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53

Linux
  1. Come posso configurare curl per utilizzare in modo permanente un proxy?

  2. Come faccio a modificare resolv.conf?

  3. Come ottenere un file con il nome corretto quando viene reindirizzato?

  4. Come impostare un file come NON eseguibile?

  5. Come impostare autorizzazioni file specifiche durante il reindirizzamento dell'output?

Come configurare Raspberry Pi come server DNS

Come impostare i server dei nomi DNS su Ubuntu 18.04

Come configurare il server Web Lighttpd su Ubuntu 18.04

Come utilizzare Systemd per riavviare un servizio in caso di inattività?

resolv.conf continua a essere sovrascritto quando dnsmasq viene riavviato, interrompendo dnsmasq

Come impostare il resolver DNS in Fedora usando il gestore di rete?