¿Qué hace "sudo echo nameserver 8.8.8.8> /etc/resolv.conf"?

13

¿Alguien puede decirme qué sudo echo nameserver 8.8.8.8 > /etc/resolv.confhace?

Solía ​​tener una caída aleatoria de la conexión a Internet durante 15 segundos a 3 minutos, pero después de usar este comando, la conexión a Internet funciona de maravilla. Tengo curiosidad por saber qué hizo esta línea de comando mágica.

Jeanno
fuente
3
Me sorprende que esto realmente funcione: sudo solo debería aplicarse al eco aquí, no a la redirección, y un usuario no root no debería tener acceso a /etc/resolv.conf
Max
@Max Tienes toda la razón. Me perdí esa parte, actualicé mi respuesta.
gertvdijk

Respuestas:

27

Reemplaza el servidor de nombres (DNS) utilizado en su máquina por el servicio DNS público de Google . Si ejecutar ese comando lo ayuda, está teniendo problemas de DNS en la configuración predeterminada provista por su red probablemente (DHCP). Si bien sería mejor resolver la causa raíz del problema, esta es una respuesta general a su pregunta.


Explicación del comando

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo eleva los privilegios para ser root en este caso.
  • echosolo muestra los argumentos que siguen a la salida estándar (en este caso, genera nameserver 8.8.8.8)
  • > redirige la salida estándar a un archivo (lo sobrescribe) en un shell normal de Unix.
  • /etc/resolv.conf es el archivo donde se escribe la salida.
  • Tener una línea nameserver 8.8.8.8de entrada /etc/resolv.confhace que el sistema use el servidor de nombres que tiene una dirección IP 8.8.8.8para resolver nombres de dominio en direcciones IP. (versión muy corta de lo que realmente sucede)
  • 8.8.8.8es una de las direcciones publicadas por Google sobre dónde escuchan sus servicios públicos de DNS.

sudo Error

Si bien esta explicación parece plausible, esto no funcionará, debido a un error que obtendrá:

bash: /etc/resolv.conf: Permission denied

¿Por qué? La redirección de salida es manejada por su shell (aquí: Bash) y no se tiene en cuenta para el comando utilizado sudo. Similar a cómo multiplicar en matemáticas tiene prioridad sobre sumar. Entonces, es solo echoque tiene privilegios elevados, ¡pero su shell no! Para resolver esto, uno debe ejecutar este comando como

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

o, usando una tubería y teepara enviarlo a un archivo:

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

Ubuntu y administrador de red

En Ubuntu esto es solo un cambio temporal, ya que Network Manager "administra" el /etc/resolv.confarchivo. Las modificaciones locales se sobrescribirán. Es por eso que debe configurar esto en Network Manager para que sea persistente.


Configuración usando Network Manager

Recomendaría configurar su PC correctamente utilizando Network Manager. Supongo que está utilizando DHCP en su red aquí (lo más común). Luego haga esto para realizar lo mismo que el equivalente al comando que estaba usando:

  1. Abrir Editar conexiones :

    ingrese la descripción de la imagen aquí

  2. Edite el perfil de conexión que está utilizando.

    ingrese la descripción de la imagen aquí

  3. En la pestaña Configuración de IPv4 :

    • Método: solo direcciones automáticas (DHCP)

      Esta configuración hace que realice una solicitud DHCP regular para la configuración de la dirección IP de su host, pero ignorará otras opciones no obligatorias como los servidores DNS sugeridos.

    • Servidores DNS: 8.8.8.8
    • Presiona Guardar

    ingrese la descripción de la imagen aquí

Hecho.


Notas importantes

En una red local o corporativa, el servidor DNS local puede usarse para hosts locales. Perderá esta funcionalidad pidiendo directamente a los servidores de Google que resuelvan los nombres por usted. Entonces, si por ejemplo el servidor DNS local sabría qué es "impresora", perderá el uso de su impresora con ese nombre.

Entonces, por favor, arregle su servidor DNS local. Si es solo un reenviador simple a un servidor DNS roto de su ISP y no puede cambiar eso (por ejemplo, un enrutador todo en uno administrado por ISP), entonces esta 8.8.8.8solución podría ser su única opción.

gertvdijk
fuente
1
Otra nota importante: presumiblemente Google está recopilando quién está buscando qué en DNS, así que piense si se siente cómodo con eso. Hay muchos otros servidores DNS públicos que podría usar, y generalmente son confiables. Parece que el OP estaba usando un servidor DNS incorrecto, que puede o no haber sido local. (He tenido enrutadores ADSL básicos que hacen un trabajo notablemente pobre con dns).
mc0e