Est-il possible d'empêcher la fonction gethostbyname() de ne pas lire le cache nscd sous Linux?Forcer gethostbyname non mis en cache()
Merci d'avance!
Est-il possible d'empêcher la fonction gethostbyname() de ne pas lire le cache nscd sous Linux?Forcer gethostbyname non mis en cache()
Merci d'avance!
Pas vraiment une réponse, mais utiliser getaddrinfo(3)
à la place :)
En ce qui concerne nscd
est, voici de la page de manuel nscd.conf(5)
:
enable-cache service <yes|no> Enables or disables the specified service cache.
Vous devez savoir ce que le service
correct pour DNS est.
ne pas utiliser nscd? :)
Sérieusement, si vous comptez sur gethostbyname()
, vous pouvez utiliser libresolv
et appeler res_gethostbyname()
à la place.
Bien que cela soit considéré comme une faille de sécurité par djb au moins :)
Pensez à utiliser la djbdns client library. Très sécurisé, rapide et solide.
Merci pour le conseil, mais il semble un peu vieux (2001)? En outre, toute idée si la bibliothèque de niveau d'en-tête, ou les bibliothèques peuvent être statiques? – SyBer
Oui c'est vieux, mais très solide. Cependant, je ne connais pas le niveau d'en-tête/lien statique, mais la source est dans le domaine public, donc vous pouvez l'expérimenter. –
Et, ce n'est pas plus vieux que gethostbyname() :) –
Je ne pense pas que gethostbyname cache vraiment les entrées. C'est probablement votre DNS-cache lui-même.
En fait, il utilise le cache nscd. Le problème avec ceci a causé quand l'IP change - il prend beaucoup de temps (10 min par défaut) le nscd actualise le cache et essaie de le résoudre à nouveau. – SyBer
Appelez res_init() avant gethostbyname(). Il semble ok.
le service serait "hosts" – hayalci
Merci, cela fait longtemps que je n'ai pas joué avec ceux-ci :) –
Merci pour le getaddrinfo() - il semble qu'il ne soit pas mis en cache par nscd en effet (au moins dans la page man)? Je préfère ne pas désactiver le cache du tout, car il est seulement nécessaire pour une application particulière. – SyBer