2011-08-03 10 views
5

Cualquier persona se encuentra con este antes:Cómo vaciar la caché para la respuesta socket.gethostbyname?

Después de la actualización de DNS records..I hacer una excavación para 'test.somedomain.com' consigo 167.69.143.234, sin embargo cuando hago un socket.gethostbyname ('test.somedomain. com ') Obtengo 167.69.6.234.

Supongo que socket todavía está usando el caché ... ¿cómo lo borro? o tirarlo?

Mi código es muy simple:

Linux Termianl

dig test.somedomain.com 

Python:

import socket 
socket.gethostbyname('test.somedomain.com') 

Cabe devuelve la dirección 167.69.143.234 ya que es el actualizado en DNS.

Respuesta

6

Python's socket.gethostbyname utiliza el sistema operativo de resolución y no tiene API para borrar su caché. La memoria caché (que puede ser un servidor DNS de almacenamiento en caché utilizado por el sistema operativo o un sistema operativo o componente de biblioteca estándar) es un elemento fundamental del sistema DNS y "la forma correcta" de enfrentarlo es esperar hasta el valor TTL del registro caduca (el sistema operativo debería eliminar el valor obsoleto de la memoria caché). Al actualizar el DNS, probablemente debería haber ajustado previamente el TTL del valor anterior.

También podría usar una implementación de Python DNS, como DNSPython en lugar de usar socket.gethostbyname - debería tener el control total sobre la caché de resolución (pero no las cachés de NS que utiliza el resolver). Sin embargo, probablemente no solucionará su problema (con un código existente, supongo).

2

El DNS no está en caché en Linux de forma predeterminada y requiere un daemon como sssd o nscd. Simplemente puede reiniciar el daemon para forzar la extracción de la nueva dirección.

Nota para usuarios de Windows: hay una memoria caché predeterminada que se puede borrar con ipconfig /flushdns.

Como alternativa, puede tener una entrada codificada en /etc/hosts, verifique primero. Las herramientas como o nslookup consultarán el servidor DNS directamente y omitirán el subsistema de la biblioteca NSS.

Cuestiones relacionadas