Gibt es eine Möglichkeit zu verhindern, dass die Funktion gethostbyname() den nscd-Cache unter Linux nicht liest?Forcieren nicht zwischengespeicherter gethostbyname()
Vielen Dank im Voraus!
Gibt es eine Möglichkeit zu verhindern, dass die Funktion gethostbyname() den nscd-Cache unter Linux nicht liest?Forcieren nicht zwischengespeicherter gethostbyname()
Vielen Dank im Voraus!
nicht wirklich eine Antwort, aber getaddrinfo(3)
statt
Wie :) verwenden weit nscd
betrifft, ist hier von der nscd.conf(5)
Handbuch Seite:
enable-cache service <yes|no> Enables or disables the specified service cache.
Sie werden, was die für DNS richtig service
finden müssen aus ist.
nscd nicht verwenden? :)
Ernsthaft, wenn Sie sich auf gethostbyname()
verlassen möchten, können Sie libresolv
verwenden und stattdessen res_gethostbyname()
anrufen.
Obwohl, dass eine Sicherheitslücke durch djb zumindest in Betracht gezogen wird :)
Betrachten Sie die djbdns client library verwenden. Sehr sicher, schnell und solide.
Danke für den Tipp, aber es sieht etwas alt aus (2001)? Auch eine Idee, ob es Header-Level-Bibliothek oder die Bibliotheken können statisch verknüpft sein? – SyBer
Ja, es ist alt, aber sehr solide. Ich weiß zwar nicht über Header-Ebene/statische Verknüpfung, aber die Quelle ist in der Public Domain, so dass Sie damit experimentieren können. –
Und es ist nicht älter als gethostbyname() :) –
Ich glaube nicht, dass gethostbyname Einträge wirklich zwischenspeichert. Es ist höchstwahrscheinlich Ihr DNS-Cache selbst.
Tatsächlich verwendet es Nscd-Cache. Das Problem damit verursacht, wenn die IP-Änderungen - es dauert A LOT (10 min standardmäßig) Zeit der Nscd den Cache aktualisieren und versuchen, es erneut zu lösen. – SyBer
Rufen Sie res_init() vor gethostbyname() auf. Es scheint in Ordnung zu sein.
der Dienst wäre "Hosts" – hayalci
Danke, es ist eine Weile her, seit ich mit denen spielte :) –
Danke für die getaddrinfo() - es sieht aus wie es nicht im Cache von nscd in der Tat (zumindest in man-Seite)? Ich möchte den Cache überhaupt nicht deaktivieren, da er nur für bestimmte Apps benötigt wird. – SyBer