resolver

RESOLVER(3)                Linux-Programmierhandbuch               RESOLVER(3)



BEZEICHNUNG
       res_ninit, res_nquery, res_nsearch, res_nquerydomain, res_nmkquery,
       res_nsend, res_init, res_query, res_search, res_querydomain,
       res_mkquery, res_send, dn_comp, dn_expand - Resolver-Routinen

ÃBERSICHT
       #include <netinet/in.h>
       #include <arpa/nameser.h>
       #include <resolv.h>
       #include <netinet/in.h>
       #include <arpa/nameser.h>
       #include <resolv.h>
       extern struct __res_state _res;

       struct __res_state;
       typedef struct __res_state *res_state;

       int res_ninit(res_state statep);

       int res_nquery(res_state statep,
                  const char *dname, int class, int type,
                  unsigned char *answer, int anslen);

       int res_nsearch(res_state statep,
                  const char *dname, int class, int type,
                  unsigned char *answer, int anslen);

       int res_nquerydomain(res_state statep,
                  const char *name, const char *domain,
                  int class, int type, unsigned char *answer,
                  int anslen);

       int res_nmkquery(res_state statep,
                  int op, const char *dname, int class,
                  int type, const unsigned char *data, int datalen,
                  const unsigned char *newrr,
                  unsigned char *buf, int buflen);

       int res_nsend(res_state statep,
                  const unsigned char *msg, int msglen,
                  unsigned char *answer, int anslen);

       int dn_comp(const char *exp_dn, unsigned char *comp_dn,
                  int length, unsigned char **dnptrs,
                  unsigned char **lastdnptr);

       int dn_expand(const unsigned char *msg,
                  const unsigned char *eomorig,
                  const unsigned char *comp_dn, char *exp_dn,
                  int length);

   Veraltet
       extern struct __res_state _res;

       int res_init(void);

       int res_query(const char *dname, int class, int type,
                  unsigned char *answer, int anslen);

       int res_search(const char *dname, int class, int type,
                  unsigned char *answer, int anslen);

       int res_querydomain(const char *name, const char *domain,
                  int class, int type, unsigned char *answer,
                  int anslen);

       int res_mkquery(int op, const char *dname, int class,
                  int type, const unsigned char *data, int datalen,
                  const unsigned char *newrr,
                  unsigned char *buf, int buflen);

       int res_send(const unsigned char *msg, int msglen,
                  unsigned char *answer, int anslen);

       Linken Sie mit der Option -lresolv.

BESCHREIBUNG
       Hinweis: Diese Seite ist unvollständig (verschiedene durch Glibc
       bereitgestellte Resolver-Funktionen sind nicht beschrieben) und ist
       wahrscheinlich veraltet.

       Diese unten beschriebenen Funktionen stellen Anfragen an Internet
       Domain Nameserver und interpretieren die Rückmeldungen.

       Das API besteht aus einer Gruppe von moderneren,
       wiedereintrittsfähigen Funktionen und einer älteren Gruppe von
       überholten, nicht wiedereintrittsfähigen Funktionen. Die
       traditionellen Resolver-Schnittstellen wie res_init() und res_query()
       verwenden einigen statischen (globalen) Zustand, der in der Struktur
       _res gespeichert ist, womit die Funktionen nicht Thread-sicher werden.
       BIND 8.2 führte eine Gruppe von neuen Schnittstellen res_ninit(),
       res_nquery() und so weiter ein, die res_state als erstes Argument
       übernehmen, so dass Sie pro Thread einen Resolver-Zustand verwenden
       können.

       Die Funktionen res_ninit() und res_init() lesen die
       Konfigurationsdateien (siehe resolv.conf(5)), um den vorgegebenen
       Domainnamen und Nameserveradresse(n) zu erhalten. Wenn kein Server
       angegeben ist, wird der lokale Host verwendet. Wenn keine Domain
       angegeben ist, wird diejenige benutzt, die dem lokalen Host zugeordnet
       ist. Dies kann mit der Umgebungsvariablen LOCALDOMAIN überschrieben
       werden. res_ninit() oder res_init() werden normalerweise durch den
       ersten Aufruf von einer der anderen Funktionen ausgeführt.

       Die Funktionen res_nquery() und res_query() fragen den Nameserver nach
       dem vollständigen Domain-Namen name des spezifizierten Typs type und
       der Klasse class. Die Antwort verbleibt im Puffer answer der Länge
       anslen, der vom Aufrufenden bereitgestellt wurde.

       Die Funktionen res_nsearch() und res_search() stellen eine Anfrage und
       wartet wie res_nquery() und res_query() auf die Antwort, implementieren
       jedoch zusätzlich die Vorgabe- und Such-Regeln, die durch RES_DEFNAMES
       und RES_DNSRCH gesteuert werden (siehe im Folgenden die Beschreibung
       der _res-Optionen).

       Die Funktionen res_nquerydomain() und res_querydomain() stellen mittels
       res_nquery()/res_query() eine Anfrage auf die Verkettung von name und
       domain.

       Die folgenden Funktionen sind Routinen tieferer Ebene, die von
       res_query()/res_query() benutzt werden.

       Die Funktionen res_nmkquery() und res_mkquery() konstruieren eine
       Anfragenachricht für den Domain-Namen dname in buf der Länge buflen.
       Der Anfragetyp op ist einer der folgenden (typischerweise QUERY):

       QUERY  Standardanfrage

       IQUERY Inverse Anfrage. Diese Option wurde in Glibc 2.26 entfernt, da
              sie schon seit sehr langer Zeit nicht mehr von DNS-Servern
              unterstützt wurde.

       NS_NOTIFY_OP
              Sekundäre über Ãnderungen an der SOA (Start der Authorität)
              benachrichtigen.

       newrr wird derzeit nicht verwandt.

       Die Funktionen res_nsend() und res_send() senden eine vorformatierte
       Anfrage, die in msg gegeben ist und die Länge msglen hat und gibt die
       Antwort in answer zurück, die die Länge anslen hat. Sie rufen
       res_ninit()/res_init() auf, falls sie noch nicht aufgerufen wurde.

       Die Funktion dn_comp() komprimiert den Domain-Namen exp_dn und
       speichert ihn in dem Puffer comp_dn der Länge length. Die
       Komprimierung benutzt ein Feld von Zeigern dnptrs auf bereits
       komprimierte Namen in der aktuellen Nachricht. Der erste Zeiger zeigt
       auf den Anfang der Nachricht und die Liste endet mit NULL. Die Grenze
       des Feldes ist angegeben durch lastdnptr. Wenn dnptr NULL ist, dann
       sind Domain-Namen nicht komprimiert. Wenn lastdnptr NULL ist, dann wird
       die Liste der Namen nicht aktualisiert.

       Die Funktion dn_expand() expandiert den komprimierten Domain-Namen
       comp_dn zu einem vollen Domain-Namen, welcher in dem Puffer exp_dn der
       GröÃe length platziert ist. Der komprimierte Name ist in einer
       Anfrage- oder Antwortnachricht enthalten und msg zeigt auf den Anfang
       der Nachricht.

       Die Resolver-Routinen benutzen in einer Struktur __res_state (entweder
       als Argument statep übergeben oder im Falle der älteren, nicht
       wiedereintrittsfähigen Funktion als globale Variable _res) enthaltende
       Konfigurations- und Zustandsinformationen. Das einzige Feld in dieser
       Struktur, das normalerweise vom Benutzer manipuliert wird, ist das Feld
       options. Dieses Feld kann bitweise Oder-Verknüpfungen der folgenden
       Optionen enthalten:

       RES_INIT
              Wahr, falls res_ninit() oder res_init() aufgerufen wurde.

       RES_DEBUG
              Gibt Debugging-Meldungen aus. Diese Option ist nur dann
              verfügbar, wenn glibc mit Debugging-Unterstützung kompiliert
              wurde, was allerdings nicht die Vorgabe ist.

       RES_AAONLY (nicht implementiert; in Glibc 2.25 veraltet)
              Akzeptiere nur autoritative Antworten. res_send() fährt fort,
              bis es eine autoritative Antwort findet oder gibt einen Fehler
              zurück. Diese Option war in Glibc bis Version 2.24 vorhanden,
              aber nicht implementiert; seit Glibc 2.25 ist sie veraltet und
              ihre Verwendung führt zu einer Fehlermeldung.

       RES_USEVC
              TCP-Verbindungen statt UDP-Datagramme für Anfragen benutzen.

       RES_PRIMARY (nicht implementiert; in Glibc 2.25 veraltet)
              Nur primäre Domain-Name-Server abfragen. Diese Option war in
              Glibc bis Version 2.24 vorhanden, aber nicht implementiert; seit
              Glibc 2.25 ist sie veraltet und ihre Verwendung führt zu einer
              Fehlermeldung.

       RES_IGNTC
              Ignoriere Fehler bei verstümmelten Antworten. Versuche es nicht
              erneut mit TCP.

       RES_RECURSE
              Setze das Rekursionswunsch-Bit in Anfragen. Rekursion wird von
              dem Domainnameserver ausgeführt, nicht von res_send().
              [StandardmäÃig eingeschaltet]

       RES_DEFNAMES
              Falls gesetzt, fügt res_search() den Vorgabedomainnamen an
              Einzelkomponentennamen an, d.h. an solchen, die keinen Punkt
              enthalten. [StandardmäÃig eingeschaltet]

       RES_STAYOPEN
              Benutzt mit RES_USEVC, um die TCP-Verbindung zwischen Anfragen
              geöffnet zu halten.

       RES_DNSRCH
              Falls gesetzt, sucht res_search() nach Hostnamen in der
              aktuellen und in übergeordneten Domains. Diese Option wird von
              gethostbyname(3) benutzt. [Eingeschaltet durch Vorgabe.]

       RES_INSECURE1
              Akzeptiert eine Antwort von einem falschen Server. Dies kann zur
              Erkennung möglicher Sicherheitsrisiken verwandt werden. Sie
              müssen dafür aber Glibc mit aktivierter Fehlersuche
              übersetzen und die (nur zur Fehlersuche gedachte) Option
              RES_DEBUG verwenden.

       RES_INSECURE2
              Akzeptiert eine Antwort, die eine falsche Anfrage enthält. Dies
              kann zur Erkennung möglicher Sicherheitsrisiken verwandt
              werden. Sie müssen dafür aber Glibc mit aktivierter
              Fehlersuche übersetzen und die (nur zur Fehlersuche gedachte)
              Option RES_DEBUG verwenden.

       RES_NOALIASES
              Deaktiviert die Verwendung der Umgebungsvariablen HOSTALIASES.

       RES_USE_INET6
              Versucht innerhalb der Funktion gethostbyname(3) zuerst eine
              AAAA-Anfrage vor einer A-Anfrage und bildet IPv4-Antworten in
              eine IPv6 »getunnelte Form« ab, falls keine AAAA-Datensätze
              aber eine A-Datensatzgruppe existiert. Seit Glibc 2.25 ist diese
              Option veraltet und ihre Verwendung führt zu einer Warnung.
              Anwendungen sollten getaddrinfo(3) statt gethostbyname(3)
              verwenden.

       RES_ROTATE
              Führt zur Ringauswahl der Name-Server aus den aufgeführten.
              Damit wird die Abfragelast unter allen Servern verteilt, statt
              dass alle Clients immer zuerst den zuerst aufgeführten Server
              ausprobieren.

       RES_NOCHECKNAME (nicht implementiert; in Glibc 2.25 veraltet)
              Deaktiviert die moderne Prüfung von BIND der eingehenden
              Rechner- und Mailnamen auf ungültige Zeichen wie Unterstrich
              (_), Zeichen auÃerhalb von ASCII oder Steuerzeichen. Diese
              Option war in Glibc bis Version 2.24 vorhanden, aber nicht
              implementiert; seit Glibc 2.25 ist sie veraltet und ihre
              Verwendung führt zu einer Fehlermeldung.

       RES_KEEPTSIG (nicht implementiert; in Glibc 2.25 veraltet)
              TSIG-Datensätze nicht entfernen. Diese Option war in Glibc bis
              Version 2.24 vorhanden, aber nicht implementiert; seit Glibc
              2.25 ist sie veraltet und ihre Verwendung führt zu einer
              Fehlermeldung.

       RES_BLAST  (nicht implementiert; in Glibc 2.25 veraltet)
              Sendet jede Anfrage simultan und rekursiv an alle Server. Diese
              Option war in Glibc bis Version 2.24 vorhanden, aber nicht
              implementiert; seit Glibc 2.25 ist sie veraltet und ihre
              Verwendung führt zu einer Fehlermeldung.

       RES_USEBSTRING (Glibc 2.3.4 bis 2.24)
              Make reverse IPv6 lookups using the bit-label format described
              in RFC 2673; if this option is not set (which is the default),
              then nibble format is used.  This option was removed in glibc
              2.25, since it relied on a backward-incompatible DNS extension
              that was never deployed on the Internet.

       RES_NOIP6DOTINT (Glibc 2.24 und ältere)
              Verwendet die Zone ip6.arpa statt ip6.int in inversen
              IPv6-Ermittlungen. Dies wird seit Glibc 2.3.4 misbilligt. Diese
              Option ist in Glibc bis einschlieÃlich Version 2.24, in denen
              sie standardmäÃig aktiviert ist, enthalten. In Glibc 2.25 wurde
              diese Option entfernt.

       RES_USE_EDNS0 (seit Glibc 2.6)
              Aktiviert die Unterstützung für in RFC 2671 beschriebene
              DNS-Erweiterungen (EDNS0).

       RES_SNGLKUP (seit Glibc 2.10)
              StandardmäÃig führt Glibc IPv4- und IPv6-Ermittlungen seit
              Version 2.9 parallel durch. Einige DNS-Servergeräte können
              diese Anfragen nicht korrekt handhaben und führen zu
              Zeitüberschreitungen bei den Anfragen. Diese Option deaktiviert
              das Verhalten und lässt Glibc die IPv6- und IPv4-Anfragen
              sequenziell durchführen (allerdings verlangsamt sich der
              Auflösungsprozess dadurch etwas).

       RES_SNGLKUPREOP
              Wenn die Option RES_SNGLKUP aktiviert ist, wird für jede
              Anfrage ein neuer Socket geöffnet.

       RES_USE_DNSSEC
              DNSSEC mit Bit OK im OPT-Datensatz verwenden. Diese Option
              impliziert RES_USE_EDNS0.

       RES_NOTLDQUERY
              Nicht qualifizierte Namen nicht als Domain oberster Ebene (TLD)
              nachschlagen.

       RES_DEFAULT
              Standardoption, impliziert: RES_RECURSE, RES_DEFNAMES,
              RES_DNSRCH und RES_NOIP6DOTINT.

RÃCKGABEWERT
       Die Funktionen res_ninit() und res_init() geben 0 bei Erfolg zurück
       oder -1, falls ein Fehler auftritt.

       Die Funktionen res_nquery(), res_query(), res_nsearch(), res_search(),
       res_nquerydomain(), res_querydomain(), res_nmkquery(), res_mkquery(),
       res_nsend() und res_send() geben die Länge der Antwort zurück oder
       -1, falls ein Fehler auftritt.

       Die Funktionen dn_comp() und dn_expand() geben die Länge des
       komprimierten Namens zurück oder -1, falls ein Fehler auftritt.

DATEIEN
       /etc/resolv.conf
              Konfigurationsdatei des Resolvers (Namensauflöser)

       /etc/host.conf
              Konfigurationsdatei des Resolvers (Namensauflöser)

ATTRIBUTE
       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt
       verwandten Ausdrücke.

       ┌───────────────────────────────────┬────────────────────────┬────────────────┐
       │Schnittstelle                      Attribut               Wert           │
       ├───────────────────────────────────┼────────────────────────┼────────────────┤
       │res_ninit(), res_nquery(),         │ Multithread-Fähigkeit │ MT-Safe locale │
       │res_nsearch(), res_nquerydomain(), │                        │                │
       │res_nsend()                        │                        │                │
       ├───────────────────────────────────┼────────────────────────┼────────────────┤
       │res_nmkquery(), dn_comp(),         │ Multithread-Fähigkeit │ MT-Safe        │
       │dn_expand()                        │                        │                │
       └───────────────────────────────────┴────────────────────────┴────────────────┘

KONFORM ZU
       4.3BSD.

SIEHE AUCH
       gethostbyname(3), resolv.conf(5), resolver(5), hostname(7), named(8)

       Die Quelldatei der GNU-C-Bibliothek resolv/README.

KOLOPHON
       Diese Seite ist Teil der Veröffentlichung 4.16 des Projekts
       Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie
       Fehler gemeldet werden können sowie die aktuelle Version dieser Seite
       finden sich unter https://www.kernel.org/doc/man-pages/.


ÃBERSETZUNG
       Die deutsche Ãbersetzung dieser Handbuchseite wurde von Martin Eberhard
       Schauer <Martin.E.Schauer@gmx.de>, Dr. Tobias Quathamer
       <toddy@debian.org> und Helge Kreutzmann <debian@helgefjell.de>
       erstellt.

       Diese Ãbersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Ãbersetzung dieser Handbuchseite finden,
       schicken Sie bitte eine E-Mail an <debian-l10n-
       german@lists.debian.org>.



GNU                           15. September 2017                   RESOLVER(3)