¿Cómo puedo vaciar la caché de DNS?

27

¿Cómo puedo borrar mi caché DNS en mi teléfono Android? (Droid3, Gingerbread, enraizado para ser específico)

Idealmente, estoy buscando un comando para ejecutar a través de un emulador de terminal, algo similar a

ipconfig /flushdns

En una máquina de ventanas.

¿Cuál es la versión de Linux de esto?

Steve Robbins
fuente
¿Necesita hacer esto para una aplicación del sistema, una aplicación de terceros o su aplicación?
onik
¿Tercero, supongo? Lo necesito para cuando hago ping a un servidor a través de Terminal Emulator.
Steve Robbins
Actualice su título para reflejar que desea una respuesta basada en CLI. Este es el ranking en Google y el 99% de las personas que buscan este título no tienen habilidades de root o CLI.
PJ Brunet

Respuestas:

11

En un sistema Linux típico, la caché se borra al ejecutarse /etc/init.d/nscd restart, pero al menos mi ROM no usa nscd para almacenar en caché DNS. Puedes comprobar si el tuyo lo hace, pero lo dudo. He visto sugerencias de que borrar la memoria caché del navegador también eliminaría la memoria caché DNS, pero una forma segura es hacer un reinicio completo (apagado, quitar la batería durante 30 segundos, volver a conectar la batería y arrancar).

onik
fuente
1
Toda mi búsqueda en Google también muestra la sugerencia de "reinicio completo".
Chahk
Estoy votando negativamente porque la respuesta requiere root y / o supone un acceso de shell que no es realista para la mayoría de los usuarios de Android. El resto de la respuesta no resolvió mi problema. También creo que Matthew Read debería reconsiderar el bloqueo de la pregunta porque esto no es absolutamente un "trato hecho". DNS es extremadamente complejo y habrá respuestas más legítimas de personas sin cuentas de Android aquí todavía, soy un ejemplo de eso. FWIW Tengo más de 10 reputación y todavía no puedo responder la pregunta.
PJ Brunet
@PJBrunet Para ser exactos, tienes 1 repetición y 100 repeticiones del bono de asociación, lo que no cuenta ya que no lo has ganado en este sitio. Consulte ¿Qué es una pregunta "protegida"? para más detalles. En cuanto a la pregunta, la desprotegeré por ahora.
onik
14

Las direcciones se almacenan en caché durante 600 segundos (10 minutos) de forma predeterminada. Las búsquedas fallidas se almacenan en caché durante 10 segundos. Por todo lo que he visto, no hay nada integrado para vaciar el caché. Aparentemente, este es un error reportado en Android debido a la forma en que almacena el caché DNS. Al borrar el caché del navegador no se toca el DNS, el "restablecimiento completo" lo borra porque simplemente se agota el tiempo de espera.

¿Podemos preguntar la razón subyacente para la necesidad de borrar el caché de DNS? Quizás hay otra solución que se pierde porque no estamos mirando el panorama general.

usuario8522
fuente
2
No estoy seguro sobre el OP, pero tengo un caso de uso donde mi red doméstica sirve direcciones como server.home.mydomain.com, pero mi ISP resuelve * .mydomain.com (para cualquier valor de "*" esto aún no está asignado) a www.midominio.com si mi teléfono está en 3G / 4G, por lo que a veces no puedo acceder a mi red doméstica hasta que se agota el tiempo de caché.
TomG
Parece que el almacenamiento en caché forzado de 10 minutos se solucionó en JB; consulte esta confirmación . Para versiones anteriores, el comportamiento de la memoria caché de Java podría ajustarse de networkaddress.cache.ttlvez networkaddress.cache.negative.ttlen cuando build.prop.
Sergey Vlasov
Ahora, todavía hay algunos (quizás diferentes) problemas de DNS incluso en 4.3: las tabletas en wifi pueden no obtener una dirección IP para los nombres que las máquinas Linux y Windows (en la red que aloja el wifi) pueden resolver.
Jon Shemitz
7

La única forma de hacer esto en Android es hacer un reinicio completo. Las herramientas de línea de comandos necesarias normalmente no están disponibles, sin embargo, en mis pruebas, un reinicio completo siempre me ha funcionado (Galaxy Nexus y HTC Desire, varias ROM).

Esto es una molestia, pero es más rápido que el tiempo de espera de caché de 10 minutos.

Martín
fuente
¿Cómo se realiza esto?
Steve Robbins
1
- Mantenga presionado el botón de encendido - Elija "Apagar" - Permita que el teléfono se apague por completo - Retire la batería y espere 30 segundos - Devuelva la batería - Vuelva a encender el teléfono. En mi experiencia, no es necesario quitar la batería, pero algunos han informado que no funciona si omite este paso.
Martin
2
Quitar la batería no tiene sentido. Reiniciar funciona. Sospecho que el tiempo adicional para eso simplemente permite que se agote el tiempo de espera de alguna caché DNS externa.
Matthias Urlichs
5

También hay aplicaciones como Internet Booster que prometen "borrar el caché de DNS" (entre otras cosas). No lo probé yo mismo y, además, parece que no hay forma de hacerlo solo (solo un botón "optimizar" que "aplica mejoras"); También sus efectos pueden diferir entre dispositivos (dice la descripción de la aplicación), pero podría ser mejor que un reinicio. Por cierto: aunque no menciona la raíz como requisito, aún podría ser necesaria.

Hay varias "aplicaciones similares" en Google Play, pero tenga en cuenta que la mayoría de ellas incluyen anuncios de Airpush y / o quieren permisos excesivos, por eso no los mencioné aquí.


Otra posible solución (no probada por mí mismo) que encontré en MadPC , aparentemente citando la respuesta del usuario 8522 antes de decir:

La última opción, pero más intensiva para los propios usuarios, a menos que quieran esperar la actualización: haga que sus usuarios accedan a configuración -> aplicaciones -> Ubicación de red -> Borrar datos

Otro breve tutorial menciona una manera fácil y diferente de limpiar DNS (de nuevo, no lo probé yo mismo): simplemente cambie al modo avión (¡uy, no hay red?) Y viceversa (ah, ahí está) debería ser el truco. Puede sonar estúpido, pero me imagino que al ingresar al modo avión, Android hace algo similar /etc/init.d/networking stop, que tiene un efecto DNS como efecto secundario.


Una solución muy fácil fue suministrada por Dtumaykin en los comentarios a continuación: simplemente cambiar al modo avión y viceversa ya podría hacerlo (por supuesto, con el efecto secundario de la red cayendo durante un par de segundos;) aunque podría no funcionar en algunos dispositivos, vale la pena intentarlo: no hay instalaciones adicionales, y se realiza fácilmente incluso con n00bs.

Si alguien probó una de esas soluciones, la confirmación (o lo contrario) seguramente será bienvenida :)

Izzy
fuente
3
Hay comandos de shell ndc resolver flushdefaultify ndc resolver flushif wlan0; requieren raíz. También existe el método NetworkManagementService.flushDefaultDnsCache () , que solo requería CHANGE_NETWORK_STATE antes de JB, pero luego se bloqueó a CONNECTIVITY_INTERNAL. Por lo tanto, aparentemente había una forma hack de limpiar el caché de DNS sin root (después del ajuste build.prop para eliminar el caché de nivel Java), pero no funcionará en JB.
Sergey Vlasov
Gracias por la información adicional, @SergeyVlasov! ¿Sabe si alguno de los métodos que mencionó se desencadena por las dos soluciones propuestas mencionadas en último lugar en mi respuesta (o si funcionan, pero por una razón diferente)?
Izzy
44
El modo avión activado y desactivado funcionó para mí. Samsung Galaxy S4 Mini y CM12.1.
dtumaykin
No puedo responder porque Matthew Read cerró la pregunta. Por favor, dame una bofetada :-) El reinicio duro no funcionó para mí, el modo avión no funcionó, el borrado de "ubicación" (según la respuesta) no funcionó, las horas de espera tampoco funcionaron. En el pasado, simplemente resolví esto cerrando la pestaña del navegador y abriendo una nueva pestaña. Hay una aplicación 8.8.8.8 "sin raíz" (DNS de Google), sin embargo, no puedo otorgar acceso VPN porque ya tengo una aplicación VPN que pagué. La solución para mí fue cambiar la configuración de "ubicación virtual" de la VPN o la solución era detener e iniciar mi VPN. Suponiendo que mi VPN tiene su propia caché de DNS.
PJ Brunet
@PJBrunet No voy a abofetear a un mod (demasiado peligroso, podría cerrar mi cuenta;) y además, mis brazos no son lo suficientemente largos como para llegar a ultramar). Pero obtener 10 rep no es demasiado difícil (haga una buena pregunta obteniendo 2 votos a favor, o escriba una respuesta obteniendo 1 voto a favor); con eso, vuelve aquí y escribe tu respuesta :) ¡Gracias por compartir!
Izzy
2

En las versiones modernas de Android hay una opción para borrar el caché DNS de Chrome en Chrome: // net-internals / # dns

Joao Costa
fuente
no funcionó para mí, todavía tenía que hacer un reinicio difícil
Cerveser
0

En mi caso, solo tenía un nombre de dominio que necesitaba enjuagar. Sugerencias como alternar el Modo avión, realizar un reinicio completo o las acciones en chrome: // net-internals / # dns no me funcionaron. En cambio, cambié temporalmente mi configuración de WiFi para usar el servidor de nombres de Google en 8.8.8.8.

Estos son los pasos que tomé:

  • Configuración -> WiFi -> toque la conexión actual y anote la dirección IP actual
  • Haga clic largo en la conexión actual -> Modificar red
  • Marque "Configuración avanzada"
  • Cambie "Configuración de IP" a "estático"
  • Establecer "dirección IP" a la IP actual desde el primer paso
  • Establezca "Gateway" en su dirección IP pero con .1 como el cuarto número (esto es solo una suposición. Si sabe que es algo diferente, úselo)
  • Establezca "DNS 1" en 8.8.8.8

Después de estos pasos, cuando pingedité el nombre de dominio en la consola, se resolvió con la dirección IP correcta y pareció escribir sobre la antigua en caché. Presumiblemente, visitar el dominio en un navegador tendrá el mismo efecto.

Cuando volví a WiFi y configuré "Configuración de IP" de nuevo a "DHCP", el dominio correcto continuó resolviéndose en la dirección IP actual.

Esto está en un Sony Xperia Z3 con Android 5.1.1

pix
fuente
0

En un Adroid 5.1 Mobile que ha tomado un DNS incorrecto, ya que se cambió a mucho entre dos WLAN; (Un signo de interrogación en una conexión WLAN. No quería restaurar mi teléfono como lo hice una vez .. Engelsiz: DNS Changer lo arregló; )

usuario237310
fuente