Que fait «sudo echo nameserver 8.8.8.8> /etc/resolv.conf»?


13

Quelqu'un peut-il me dire ce qui se sudo echo nameserver 8.8.8.8 > /etc/resolv.confpasse?

J'avais l'habitude d'avoir une connexion Internet aléatoire pendant 15 secondes à 3 minutes mais après avoir utilisé cette commande, la connexion Internet fonctionne comme un charme. Je suis simplement curieux de savoir ce qu'a fait cette ligne de commande magique.


3
Je suis surpris que cela fonctionne réellement - sudo ne devrait s'appliquer qu'à l'écho ici, pas à la redirection, et un utilisateur non root ne devrait pas avoir accès à /etc/resolv.conf
Max

@Max Vous avez absolument raison. J'ai raté cette partie - mis à jour ma réponse.
gertvdijk

Réponses:


27

Il remplace le serveur de noms (DNS) utilisé sur votre machine par le service DNS public de Google . Si l'exécution de cette commande vous aide, vous rencontrez probablement des problèmes DNS dans les paramètres par défaut fournis par votre réseau (DHCP). Bien qu'il soit préférable de résoudre la cause première du problème, il s'agit d'une réponse générale à votre question.


Explication de la commande

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo élève les privilèges pour être root dans ce cas.
  • echosort juste les arguments suivants à la sortie standard (dans ce cas, il sort nameserver 8.8.8.8)
  • > redirige la sortie standard vers un fichier (l'écrase) dans un shell Unix standard.
  • /etc/resolv.conf est le fichier dans lequel la sortie est écrite.
  • Avoir une ligne nameserver 8.8.8.8en /etc/resolv.confrend le système en utilisant le serveur de noms dont l' adresse IP 8.8.8.8pour la résolution des noms de domaine aux adresses IP. (version très courte de ce qui se passe réellement)
  • 8.8.8.8est l'une des adresses publiées par Google pour savoir où leurs services DNS publics écoutent.

sudo erreur

Bien que cette explication semble plausible, cela ne fonctionnera pas, en raison d'une erreur que vous obtiendrez:

bash: /etc/resolv.conf: Permission denied

Pourquoi? La redirection de sortie est gérée par votre shell (ici: Bash) et n'est pas prise en compte pour la commande utilisée pour sudo. Similaire à la façon dont la multiplication en mathématiques a priorité sur l'ajout. Donc, c'est juste echoqu'il a des privilèges élevés, mais pas votre shell! Pour résoudre ce problème, il faut exécuter cette commande comme

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

ou, en utilisant un tube et teeen le sortant dans un fichier:

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

Ubuntu et Network Manager

Sur Ubuntu, ce n'est qu'un changement temporaire, car Network Manager "gère" le /etc/resolv.conffichier. Les modifications locales seront écrasées. C'est pourquoi vous devez configurer cela dans Network Manager pour qu'il soit persistant.


Configuration à l'aide de Network Manager

Je recommanderais de configurer correctement votre PC à l'aide de Network Manager. Je suppose que vous utilisez DHCP sur votre réseau ici (le plus courant). Ensuite, effectuez la même opération que l'équivalent de la commande que vous utilisiez:

  1. Ouvrez Modifier les connexions :

    entrez la description de l'image ici

  2. Modifiez le profil de connexion que vous utilisez.

    entrez la description de l'image ici

  3. Sur l' onglet Paramètres IPv4 :

    • Méthode: adresses automatiques (DHCP) uniquement

      Ce paramètre lui permet d'effectuer une demande DHCP régulière pour la configuration de l'adresse IP de votre hôte, mais il ignorera les autres options non obligatoires comme les serveurs DNS suggérées.

    • Serveurs DNS: 8.8.8.8
    • Appuyez sur Enregistrer

    entrez la description de l'image ici

Terminé.


Notes IMPORTANTES

Dans un réseau local ou d'entreprise, le serveur DNS local peut être utilisé pour les hôtes locaux. Vous perdrez cette fonctionnalité en demandant directement aux serveurs de Google de résoudre les noms pour vous. Ainsi, si par exemple le serveur DNS local sait ce qu'est une «imprimante», vous perdrez l'utilisation de votre imprimante sous ce nom.

Veuillez donc plutôt réparer votre serveur DNS local. Si c'est juste un simple redirecteur vers un serveur DNS cassé de votre FAI et que vous ne pouvez pas changer cela (routeur tout-en-un géré par FAI par exemple), alors cette 8.8.8.8solution pourrait être votre seule option.


1
Une autre remarque importante: Google recueille probablement sur qui recherche quoi dans DNS, alors pensez si vous êtes à l'aise avec cela. Il existe de nombreux autres serveurs DNS publics que vous pourriez utiliser, et ils sont généralement fiables. On dirait que l'OP utilisait un mauvais serveur DNS, qui pouvait ou non être un serveur local. (J'ai eu des routeurs ADSL de base qui font un travail remarquablement pauvre avec le DNS).
mc0e
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.