PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bind8/9 - Rekursion vs. Iteration



Harry
16.10.02, 15:24
Hallo,

weiß hier jemand zufällig, welches Verfahren ein bind8/9-Server beim Name-Lookup per Default verwendet: Rekursive Auflösung oder Iterative Auflösung?

Welche Optionen in der Konfiguration dienen beim bind8/9 dazu, entweder das eine oder das andere Verfahren global oder für definierte Zonen zu konfigurieren?

Harry

Zambo
16.10.02, 16:51
Hallo HARRY, Du kennst mich vom Router-Forum her, wegen meines Firewall-Problems.
Gut das Du mir die Stichworte "Interation" und "Rekursion" genannt hast. Dazu habe ich eben auf die Schnelle folgendes gefunden:

SET [NO]RECURSE

Mit diesem Parameter kann der Abfragemodus bestimmt werden.
Rekursion bedeutet, dass der gefragte Nameserver solche Fragen, die er
nicht beantworten kann, an andere in der Hierarchie hoeherstehende
Nameserver weiterleitet und die Antwort dem fragenden Resolver als
Ergebnis zurueckgibt.

Bei Iteration (set norec) werden vom Nameserver nur solche Fragen
aufgeloest, fuer die er Informationen als RR-Datensaetze oder im Cache
besitzt, ansonsten bekommt der Resolver als Antwort eine Liste von
Nameservern, die weiter befragt werden koennen.

> set norec
> awesome.berkeley.edu.
Server: rusmv8.rus.uni-stuttgart.de
Address: 129.69.1.9

Authoritative answers can be found from:
UCBARPA.Berkeley.EDU inet address = 128.32.130.11
UCBVAX.Berkeley.EDU inet address = 128.32.133.1
VIOLET.Berkeley.EDU inet address = 128.32.136.22
> set rec
> awesome.berkeley.edu.
Server: rusmv8.rus.uni-stuttgart.de
Address: 129.69.1.9

Name: awesome.berkeley.edu
Address: 128.32.232.10


Gefunden auf URL:
www.uni-mannheim.de/rum/archiv/kommunikation/anwendungen/nameservices/dns/komplett.html

Jasper
16.10.02, 17:58
Original geschrieben von Harry
Hallo,

weiß hier jemand zufällig, welches Verfahren ein bind8/9-Server beim Name-Lookup per Default verwendet: Rekursive Auflösung oder Iterative Auflösung?

Welche Optionen in der Konfiguration dienen beim bind8/9 dazu, entweder das eine oder das andere Verfahren global oder für definierte Zonen zu konfigurieren?



default ist rekursive queries erlauben. kann mittels 'recursion' in 'options' geändert werden.
bind (neuere versionen) selbst fragt nur iterativ ab um seinen cache aufzubauen.
ausnahme sind forwarder. an diese werden recursive queries geschickt. es ist also unklug, einen iterativen nameserver als forwarder einzutragen.

-j

Harry
16.10.02, 18:30
Hallo Zambo,

da hast Du einen sehr schönen Artikel gefunden.
Wenn wir alle bisherigen Infos einmal zusammentragen (aus dem Router-Forum und aus diesem hier), dann ergibt sich somit folgendes Bild:

1. Ein DNS-Resolver kann eine Name-Query an einen DNS stellen und dabei entscheiden, ob er Rekursion in der Anfrage fordert oder nicht.

2. Ein DNS-Server kann Anfragen entweder rekursiv beantworten oder iterativ; per Default sollten die DNS-Server (außer die root-Nameserver) Anfragen rekursiv beantworten jedoch haben wir in aktuellen bind-Versionen ein iteratives Verhalten.

3. Die Resolver-Bibliothek unter Linux ist ein sog. Stub-Resolver und der stellt lediglich rekursive Queries; er kann mit einer nicht rekursiven Antwort eines DNS-Servers auch gar nicht umgehen. In einem solchen Fall würde der DNS-Server eine Liste der Root-Nameserver zurückliefern aber das interessiert einen Stub-Resolver nicht weiter und die Auflösung scheitert.

4. Andere Resolver, wie beispielsweise dig oder nslookup, können über Optionen Anfragen sowohl mit gesetztem Rekursionsflag als auch ohne durchführen. Auch hier hängt die rekursive Beantwortung wiederum von den Einstellungen des DNS-Servers ab.

Ich habe die unterschiedlichen Varianten gerade mittels Network-Dump genauer betrachtet und dann sieht man schon recht exakt, was die Clients und Server so alles treiben (können).

@Zambo
Dein Problem mit den gedroppten UDP-Datagrammen auf Port 53 hängt also mit ziemlicher Sicherheit an dem DNS-Server, den Du auf Deinem Internet-Gateway nutzt, um von diesem Anfragen weiterzuleiten, da dieser per Default Name-Queries iterativ auflöst.

@Jasper
Danke für den Hinweis. Kennst Du eine Möglichkeit, einem bind8/9 die iterative Auflösung zu untersagen? Bisher habe ich lediglich die Möglichkeit gefunden, rekursive Auflösungen zu unterbinden aber das führt sowieso zu einer iterativen Auflösung.

Harry

Jasper
17.10.02, 08:07
2. Ein DNS-Server kann Anfragen entweder rekursiv beantworten oder iterativ; per Default sollten die DNS-Server (außer die root-Nameserver) Anfragen rekursiv beantworten jedoch haben wir in aktuellen bind-Versionen ein iteratives Verhalten.


wenn der dns-server für clients (stub-resolver) zuständig ist, dann MUSS er rekursive anfragen erlauben. viele nameserver (der extern erreichbare dns-server einer firma bspw.)
kommunizieren nur mit anderen dns-servern. da reicht iterativ, ausser er ist ein forwarder.
grosse dns-server (toplevel, manche secondlevel) laufen generell iterativ, weil ansonsten der cache sehr gross werden würde.
wenn die gewünschte adresse sich aber schon im cache befindet, wird die anfrage komplett beantwortet.



Danke für den Hinweis. Kennst Du eine Möglichkeit, einem bind8/9 die iterative Auflösung zu untersagen? Bisher habe ich lediglich die Möglichkeit gefunden, rekursive Auflösungen zu unterbinden aber das führt sowieso zu einer iterativen Auflösung.


nein, mir ist keine konfigurationsmöglichkeit bekannt. iterativ ist sozusagen der kleinste gemeinsam nenner, das müssen alle können, rekursiv ist optional.

-j