Bekanntermaßen kümmert sich auf einem Linux-System der Name Service Switch (NSS) um die Auflösung von Namen. Dies trifft nicht nur auf Benutzer- oder Gruppennamen zu, sondern auch auf Rechnernamen, die es in IP-Adressen und umgekehrt aufzulösen gilt. Anwendungen greifen hierfür auf Funktionen der GNU C Library (glibc) zurück. So existiert für die Auflösung von Hostnamen in IP-Adressen die Funktion »getaddrinfo()
«
beziehungsweise »getnameinfo()
«
für IP-Adressen in Hostnamen.
Der NSS ist komplett modular aufgebaut und kann daher unterschiedliche Quellen abfragen, um die Anfragen aufzulösen. Die Quellen sind zusammen mit den jeweiligen Systemdatenbanken in der Datei "/etc/nsswitch.conf" definiert. Für die DNS-Datenbank könnte ein typischer Eintrag wie folgt aussehen:
grep hosts /etc/nsswitch.conf
hosts: files dns
Dieser Eintrag besagt, dass NSS zuerst auf das Modul "files" zurückgreift, um Anfragen nach einer IP-Adresse beziehungsweise einem Hostnamen zu beantworten. Das files-Modul versucht, diese Anfragen anhand von statischen Einträgen aus der Datei "/etc/hosts" aufzulösen. Gelingt dies nicht, kommt das nächste Modul "dns" zum Einsatz. Dieses greift nun auf die Datei "/etc/resolv.conf" zurück, um dort nachzusehen, an welchen DNS-Resolver die Anfrage weiterzuleiten ist. Somit kümmert sich jede Anwendung mithilfe des NSS-Resolvers selbst darum, die Auflösung eines Namens oder einer IP-Adresse durchzuführen. Antworten werden auch nicht gecached, sodass der gleiche Name oder die gleiche IP-Adresse immer wieder über den soeben beschriebenen Mechanismus aufgelöst werden muss.
Um dieses Problem zu beheben, gibt es sogenannte Stub-Resolver, oftmals auch einfach als DNS-Forwarder
...Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.