Desativar o cache de DNS PHP

6

Preciso obter os registros mais recentes de um DNS em um script. O script está fazendo algumas operações de monitoramento. O TTL padrão do registro DNS é de 5 minutos, mas o script de monitoramento está sendo executado a cada minuto. Eu estou usando a função do PHP dns_get_record para obter os registros A, mas eu queria saber se há uma maneira que eu posso negligenciar o cache TTL e obter os registros de servidor DNS e não cache.

É claro, qualquer maneira de forçar isso para que nenhum cache de nível de rede seja aplicável e toda vez que eu executar o script, ele realmente atinge o servidor DNS?

Obrigado Sparsh Gupta

    
por Sparsh Gupta 05.08.2011 / 12:01

1 resposta

7

Não. Um cliente regular não tem a capacidade de exigir de um servidor DNS em cache que libere seu cache e repita a consulta aos servidores autoritativos. Isso ocorre por design - vou deixar a quantidade de danos DDoS que você poderia fazer como um exercício para o leitor.

Se você absolutamente positivo DEVE ter o registro não armazenado em cache, consulte seu servidor de nomes regular para o registro NS do domínio de destino e, em seguida, consulte o servidor autoritativo diretamente.

NOTA : Isso geralmente é considerado um comportamento grosseiro e não deveria ser usado como último recurso - o que, exatamente, é tão horrivelmente crítico que você absolutamente precisa de uma revisão perfeita a cada minuto no caso de um registro ter mudado sem você perceber?

... Aliás, por que seus TTLs são cinco minutos por padrão?

ETA : A maioria dos servidores DNS, especialmente os de encaminhamento, recusam-se a honrar um TTL de menos de 3600 segundos. Se você tiver sorte, o padrão será no mínimo 1 hora; se você não estiver, eles usarão como padrão o padrão normalmente aceito de 86400 segundos (24 horas) ...

    
por 05.08.2011 / 12:16