Arbeitsgruppe Software DNS

Aus FunkFeuer Wiki
Wechseln zu: Navigation, Suche

Immer wieder tauchen Beschwerden über DNs probleme im Funkfuer Netz auf,..

Dieses WoW versucht nun rauszufinden/klären woran das liegt, und wie man dies beheben könnte

DNS Protokoll

Ist udp basiert, fehlerkorrektur muss dns also selber machen,.. Hierbei gibt es gleich etliche unterschiede zwischen den Betriebsystemem

Nur ein DNS Server?

Trägt man mehrere DNS Server in seinem Betreibsystem ein, verwendet es automatisch die anderen wenn der erste nicht oder verzöget antwortet,.

als Nebeneffekt werden dadruch auch mehr DNS requests versendet als wenn man nur einen eingetragen hat,..

also besser mehr als einen eintragen, je nach Betreibssystem werden meist aber nicht mehr als 3 "gleichzeitig" verwendet

DNS Lookups in Linux (Ubuntu)

Standardmässig sendet Linux alle 4 (bei 3+ DNS Servern) bzw. 5 Sekunden einen Request,.. (d.h. wenns das erste paket verloren geht, dauerts mindestens 5 Skunden )-;)

Maximal 4 mal pro DNS Server

und es werden nur maximal 3 verschiedene Srever verwendet,..

bei nur 1 DNS Server kommts somit nach 20 Sekunden zum timeout (d.h. unresolveable), bei 2 nach 40 Sekunden, und bei 3+ Servern nach 55 Sekunden

DNS Lookup in Windows

In Windows kann ein DNS Lookup standardmässig nur 15 Sekunden dauern (was desweilen zu kurz ist)

Immerhin sendet Windows aber wenn der erste lookup fehlschlägt/auf sich warten lässt nach 1,2,4 und 8 Sekudnen weitere, danach wartet es noch 7 Sekunden auf etcaige Antworten, .. (d.h. ein 8 Sekündliches komplett funkloch (ode rein transienter olsr rooting loop) reicht völlig aus um nen Lookup in Windows zum scheintern zu bringen)

Die lookups nach 4 und 8 Sekunden gehen an ALLE eingetragenen DNS Server, die ersten nur an den geraden aktiven primary DNS Server (d.h. mit vielen DNS Servern sendet Windows sehr viele Lookups, die chancen bei hohen packetloss trotzdem ne Antwort zu kriegen steigen also linear mit der Anzahlder eingetragenen Server (getestet mit bis zu 7 Servern))

Weiters ist Windows in der Lage selbst den Fakt das es KEINE Antwort bekommen hat in seinen eigenen Cache aufzunehmen,.. (Was extrem fragwürdig ist!!!)

und somit wird es nach einem erfolglosen Versuch für weitere 5 Minuten garkein weiteres Mal nen DNS Request für diese Domain senden, sondern sofort unresolveable zurückmelden,..

Mit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters MaxNegativeCacheTtl=0 kann man wenigsten einstellen wielang ein negatives Lookup Ergebnis gecached werden soll

Dies betrifft zwar leider auch echte Antworten eins echten DNS Server das diese Domain wirklich nicht existiert (was wahrhaftig cachenswert wäre), aber verglichen damit glaub standardmässig 5 Minuten lang eine definitv exisiterende WEbseite nicht öffnen zu können, ist es wohl angebracht hier einen Wert < 10 Sekunden einzutragen,..

Eine klügere selektivere Lösung wäre aber vorteilhaft,.. Ideen?

DNSMASQ oder anderen DNS Forwarder so patchen das er innerhalb von 15 Sekunden eine Antwort zurückschickt, mit einem 0 Sekunden cachedauer,.. allerdings hat dies wohl recht negative Auswirkungen auf Linux Clients usw,..

Somit ists wohl am besten windows clients das cachen von negativen und keinen Antworten mit einem sehr kurzen MaxNegativeCacheTtl zu verübeln, aber einen lokalen DNS-Cache zu verwenden der sich dann wenigstens (nur) echte negative Antworten merkt,..

ein Möglichkeit dafür, ist dnsmasq am funkfeuer router laufen zu haben,..

DNS Lookups in Openwrt (DNSMASQ)

wie brauchbar diese wirklich ist, ist noch genauer auszutesten,.. (Allerdings war er bei manchen tests auf lossy links scheinbar schneller als erwartet) evt. sendet er also nicht erst nach 4-5 Sekunden den zweiten request,..

Standardmässig cached er nur 150 Einträge,.. die und vieles andere lässt sich aber inder dnsmasq.conf bzw. /etc/local.dnsmasq.conf ändern