Cosa fa "sudo echo nameserver 8.8.8.8> /etc/resolv.conf"?


13

Qualcuno può dirmi cosa sudo echo nameserver 8.8.8.8 > /etc/resolv.conffa?

Avevo una caduta casuale della connessione Internet per 15 secondi a 3 minuti, ma dopo aver usato questo comando, la connessione Internet funziona come un fascino. Sono solo curioso di sapere cosa ha fatto questa linea di comando magica.


3
Sono sorpreso che funzioni davvero - sudo dovrebbe applicarsi solo all'eco qui, non al reindirizzamento, e un utente non root non dovrebbe avere accesso a /etc/resolv.conf
Max

@Max Hai perfettamente ragione. Ho perso quella parte - ho aggiornato la mia risposta.
gertvdijk,

Risposte:


27

Sostituisce il nameserver (DNS) utilizzato sul tuo computer dal servizio DNS pubblico di Google . Se l'esecuzione di questo comando ti aiuta, hai probabilmente problemi DNS nelle impostazioni predefinite fornite dalla tua rete (DHCP). Mentre sarebbe meglio risolvere la causa principale del problema, questa è una risposta generale alla tua domanda.


Spiegazione del comando

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo eleva i privilegi per essere root in questo caso.
  • echogenera solo gli argomenti seguenti all'output standard (in questo caso restituisce nameserver 8.8.8.8)
  • > reindirizza l'output standard su un file (lo sovrascrive) in una normale shell Unix.
  • /etc/resolv.conf è il file in cui viene scritto l'output.
  • Avere una linea nameserver 8.8.8.8dentro/etc/resolv.conf rende il sistema che utilizza il nameserver con indirizzo IP 8.8.8.8per risolvere i nomi di dominio in indirizzi IP. (versione molto breve di ciò che accade realmente)
  • 8.8.8.8 è uno degli indirizzi pubblicati da Google su dove sono in ascolto i loro servizi DNS pubblici.

sudo sbaglio

Mentre questa spiegazione sembra plausibile, non funzionerà, a causa di un errore otterrai:

bash: /etc/resolv.conf: Permission denied

Perché? Il reindirizzamento dell'output viene gestito dalla shell (qui: Bash) e non viene preso in considerazione per il comando utilizzato per sudo. Simile a come la moltiplicazione in matematica abbia la precedenza sull'aggiunta. Quindi, è solo echoche ha privilegi elevati, ma la tua shell no! Per risolvere questo, si dovrebbe eseguire questo comando come

sudo sh -c "echo nameserver 8.8.8.8 > /etc/resolv.conf"

oppure, usando una pipe e tee per emetterla in un file:

echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf  #prints to screen as well

Ubuntu e Network Manager

Su Ubuntu questo è solo un cambiamento temporaneo, poiché Network Manager "gestisce" il /etc/resolv.conffile. Le modifiche locali verranno sovrascritte. Ecco perché dovresti configurarlo in Network Manager per averlo persistente.


Configurazione tramite Network Manager

Consiglierei di configurare correttamente il PC usando Network Manager. Suppongo che tu stia utilizzando DHCP sulla tua rete qui (più comune). Quindi fai questo per eseguire lo stesso equivalente al comando che stavi usando:

  1. Apri Modifica connessioni :

    inserisci qui la descrizione dell'immagine

  2. Modifica il profilo di connessione che stai utilizzando.

    inserisci qui la descrizione dell'immagine

  3. Nella scheda Impostazioni IPv4 :

    • Metodo: solo indirizzi automatici (DHCP)

      Questa impostazione consente di eseguire una normale richiesta DHCP per la configurazione dell'indirizzo IP dell'host, ma ignorerà altre opzioni non obbligatorie come i server DNS suggeriti.

    • Server DNS: 8.8.8.8
    • Premi Salva

    inserisci qui la descrizione dell'immagine

Fatto.


Note importanti

In una rete locale o aziendale il server DNS locale potrebbe essere utilizzato per host locali. Perderai questa funzionalità chiedendo direttamente ai server di Google di risolvere i nomi per te. Quindi, se per esempio il server DNS locale sapesse cos'è la "stampante", allora perderai usando la tua stampante con quel nome.

Quindi, per favore, correggi invece il tuo server DNS locale. Se è solo un semplice server di inoltro a un server DNS danneggiato del tuo ISP e non puoi modificarlo (ad esempio un router all-in-one gestito dall'ISP), questa 8.8.8.8soluzione potrebbe essere la tua unica opzione.


1
Un'altra nota importante: google presumibilmente sta raccogliendo chi sta cercando cosa nel DNS, quindi pensa se ti senti a tuo agio. Esistono molti altri server DNS pubblici che è possibile utilizzare e generalmente sono affidabili. Sembra che l'OP stesse utilizzando un server DNS danneggiato, che potrebbe essere o meno un server locale. (Ho avuto router ADSL per materie prime che svolgono un lavoro notevolmente scadente con dns).
MC0e,
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.