Was macht "sudo echo nameserver 8.8.8.8> /etc/resolv.conf"?

13

Kann mir bitte jemand sagen was das sudo echo nameserver 8.8.8.8 > /etc/resolv.confmacht?

Früher hatte ich zufällige Unterbrechungen der Internetverbindung für 15 Sekunden bis 3 Minuten, aber nachdem ich diesen Befehl verwendet habe, funktioniert die Internetverbindung wie ein Zauber. Ich bin nur neugierig, was diese magische Befehlszeile getan hat.

Jeanno
quelle
3
Ich bin überrascht, dass dies tatsächlich funktioniert - sudo sollte nur für das Echo hier gelten, nicht für die Umleitung, und ein Benutzer ohne Rootberechtigung sollte keinen Zugriff auf /etc/resolv.conf
Max
@Max Du hast absolut recht. Ich habe diesen Teil verpasst - habe meine Antwort aktualisiert.
Gertvdijk

Antworten:

27

Es ersetzt den Nameserver (DNS), der vom öffentlichen DNS-Dienst von Google auf Ihrem Computer verwendet wird . Wenn Sie diesen Befehl ausführen, haben Sie möglicherweise DNS-Probleme in den von Ihrem Netzwerk vorgegebenen Standardeinstellungen (DHCP). Es ist zwar besser, die Hauptursache des Problems zu beheben, dies ist jedoch eine allgemeine Antwort auf Ihre Frage.


Erklärung des Befehls

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo Erhöht in diesem Fall die Root-Berechtigung.
  • echogibt nur die Argumente aus, die der Standardausgabe folgen (in diesem Fall wird sie ausgegebennameserver 8.8.8.8 )
  • > Leitet die Standardausgabe in eine Datei in einer regulären Unix-Shell um (überschreibt sie).
  • /etc/resolv.conf ist die Datei, in die die Ausgabe geschrieben wird.
  • Mit einem Line- nameserver 8.8.8.8In verwendet /etc/resolv.confdas System den Nameserver mit der IP-Adresse, 8.8.8.8um Domainnamen in IP-Adressen aufzulösen. (sehr kurze Version dessen, was tatsächlich passiert)
  • 8.8.8.8ist eine der von Google veröffentlichten Adressen , an der die öffentlichen DNS-Dienste von Google empfangsbereit sind.

sudo Fehler

Obwohl diese Erklärung plausibel klingt, funktioniert sie aufgrund eines Fehlers nicht:

bash: /etc/resolv.conf: Permission denied

Warum? Die Ausgabeumleitung wird von Ihrer Shell (hier: Bash) übernommen und für den Befehl, der für verwendet wird, nicht berücksichtigt sudo. Ähnlich wie das Multiplizieren in Mathematik Vorrang vor dem Addieren hat. Also, es ist nur so, echodass es erhöhte Privilegien hat, aber deine Shell hat es nicht! Um dies zu lösen, sollte man diesen Befehl wie folgt ausführen

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

oder, indem Sie eine Pipe verwenden und teein eine Datei ausgeben:

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

Ubuntu und Network Manager

Unter Ubuntu ist dies nur eine vorübergehende Änderung, da Network Manager die /etc/resolv.confDatei "verwaltet" . Lokale Änderungen werden überschrieben. Aus diesem Grund sollten Sie dies in Network Manager so konfigurieren, dass es dauerhaft bleibt.


Konfiguration mit Network Manager

Ich würde empfehlen, Ihren PC ordnungsgemäß mit Network Manager zu konfigurieren. Ich gehe davon aus, dass Sie DHCP in Ihrem Netzwerk verwenden (am häufigsten). Führen Sie dann die folgenden Schritte aus, um das Gleiche wie bei dem Befehl auszuführen, den Sie verwendet haben:

  1. Öffnen Sie Verbindungen bearbeiten :

    Bildbeschreibung hier eingeben

  2. Bearbeiten Sie das von Ihnen verwendete Verbindungsprofil.

    Bildbeschreibung hier eingeben

  3. Auf der Registerkarte IPv4-Einstellungen :

    • Methode: Nur automatische (DHCP) Adressen

      Diese Einstellung veranlasst eine reguläre DHCP-Anforderung für die IP-Adresskonfiguration Ihres Hosts, ignoriert jedoch andere nicht obligatorische Optionen, wie die vorgeschlagenen DNS-Server.

    • DNS-Server: 8.8.8.8
    • Klicken Sie auf Speichern

    Bildbeschreibung hier eingeben

Erledigt.


Wichtige Notizen

In einem lokalen oder Unternehmensnetzwerk kann der lokale DNS-Server für lokale Hosts verwendet werden. Sie verlieren diese Funktionalität, indem Sie die Server von Google direkt auffordern, Namen für Sie aufzulösen. Wenn zum Beispiel der lokale DNS-Server wissen würde, was "Drucker" ist, verlieren Sie die Verwendung Ihres Druckers mit diesem Namen.

Korrigieren Sie stattdessen Ihren lokalen DNS-Server. Wenn es sich nur um eine einfache Weiterleitung an einen defekten DNS-Server Ihres Internetdienstanbieters handelt und Sie dies nicht ändern können (z. B. von einem Internetdienstanbieter verwalteter All-in-One-Router), ist diese 8.8.8.8Lösung möglicherweise Ihre einzige Option.

gertvdijk
quelle
1
Ein weiterer wichtiger Hinweis: Google sammelt vermutlich, wer was in DNS nachschlägt. Überlegen Sie also, ob Sie damit vertraut sind. Es gibt viele andere öffentliche DNS-Server, die Sie verwenden können, und sie sind im Allgemeinen zuverlässig. Klingt so, als ob das OP einen fehlerhaften DNS-Server verwendet hätte, der möglicherweise lokal war oder nicht. (Ich habe Standard-ADSL-Router gehabt, die bemerkenswert schlechte Arbeit mit DNS leisten).
mc0e