Moj sistem za pohitritev DNS operacij

Danes pa razmeroma na dolgo in široko glede mojega sistema lokalnega DNS “caching-a”, katerega sem (sicer šele danes) začel poimenovati “moj lokalni dvo-nivojski DNS kešing sistem”, kar v končni fazi preprosto pomeni to, da moj sistem išče po dveh “local” lokacijah na mojem računalniku (najprej OS vedno pogleda v hosts fajl, šele nato uporabi “DNS Client” NT-service in remote DNS serverje; glej tudi spodaj), preden se, če je seveda sploh potrebno, poveže z remote/external DNS serverji; pa še te uporabljam, kot boste videli, na nek zelo poseben način. Predvidevam tudi, da je vsakomur (ki se na to vsaj malo spozna) jasno, da je v principu “DNSIP/name resolving” nasploh ena od najhitrejših operacij, ker kot protokol uporablja UDP in ne TCP (ali bolje, se vrši/izvaja preko UDP-ja), ki pa, če se prav spomnim, ne potrebuje “confirm” paketkov ali nekaj takega…

Za začetek kot nekakšen uvod o bistvu zadeve. Torej najprej čisto na kratko o v gornjem odstavku omenjenem “two-level” sistemu: kot prvo so IP host-name entry-ji shranjeni v mojem “hosts” fajlu (ime je brez file-ektensiona), katerega moram zato seveda redno “updejtati” (ta fajl se nahaja pri Windows XP v “%systemroot%\system32\drivers\etc\” direktoriju) in kot drugo oz. naslednji “level” so entry-ji, kateri se nahajajo v “presets.txt” fajlu od mojega programa DNSKong: http://pyrenean.com/?page_value=-1 iz strani “Pyrenean” (ta program je t.i. “caching, filtering and blocking local-only psuedo-DNS server”) in pa tudi v samem DNSKong-ovem “cache-u” v RAM-u.

Kakorkoli že bodi, kot rečeno je stvar čisto preprosta: moj sistem se konekta na OpenDNS: http://www.opendns.com DNS server šele takrat, ko v “hosts” fajlu (tako OS prioritizira “DNS query-je”, torej da najprej prečekira “hosts” fajl), in kasneje v “cache-u” v RAM-u in v “presets.txt” fajlu od mojega DNSKong programa ne najde “resolved IP-ja”. Torej na koncu vse skupaj deluje preko dveh (oziroma z OpenDNS celo treh) “level-ov”, kar pomeni, da gre sistem preveriti vse te lokalne zaloge in šele nato v tistih redkih primerih, ko se tak IP ne nahaja na nobeni od omenjenih lokacij, konekta OpenDNS serverje.

Sledi malo več podatkov o zastonjskem DNS sistemu imenovanem OpenDNS, že omenjenem zgoraj. Torej OpenDNS je, kot piše na njihovi strani pod “Kind words — Josh Goldman, Senior Editor, Computer Shopper”: “OpenDNS is just a superior DNS service, managing to not only speed up service, but correct misspelled URLs and help defeat phishing sites at the same time.”, jaz pa sem tole za mojo stran prefraziral takole:

OpenDNS is a globally available DNS (a DNS server) that anyone can use and which additionally also offers a protection from phishing sites and even correcting typos on the fly.

Kot vidite ne ponuja samo DNS resolvanja ampak tudi “phishing” zaščito in popravljanje napak v “typed URL-jih”. Zakaj pa naj bi bil OpenDNS sploh hitrejši od (slovenskih) ISP-jevih DNS serverjev?? Zato, ker ima OpenDNS zares ogromen “cache” napram recimo ISP-jevim serverjem, kateri morajo kakor razumem za vsak request konektat nek drug “name server”. Dalje, tukajle spodaj imate tudi link do strani, kjer je omenjen OpenDNS; najprej link do “review-a” na “Wired News”: http://www.wired.com/…/0,71345-0.html, kratek opis OpenDNS-ja pa se pojavi tudi v tem dokumentu: http://www.pcmag.com/…/0,1895,2006325,00.asp na “PC Magazine” strani.

OpenDNS | Providing A Safer And Faster DNS

OpenDNS grafika/logo

Kot vedno dodajam tudi link do topic-a, ki sem ga o OpenDNS-ju že pred časom odprl na “Ars Technica” forumu, naslovljen pa je “A really cool and free OpenDNS service“: http://episteme.arstechnica.com/…/131000311831, medtem ko za linke do pomembnih “FAQ”, “What We Do”, “Get Started – Windows XP” in “Who We Are” dokumentov na OpenDNS strani (in pa tudi za bolj obširen opis), pa glej “events9.html” dokument: http://tadej-ivan.50webs.com/…/events9.html na moji domači strani; natančneje, glej pod 26.9.2006 (part 2) “events-entry”. Edina dva problema, ki sem ju na začetku sam videl pri vsem tem pa sta sledeča. Kot prvo sem se zamislil nad dejstvom, da so OpenDNS serverji trenutno locirani samo v U.S., kar seveda posledično poveča t.i. “latency”; to se bo rešilo vsak hip, ko bodo k sedanji OpenDNS infrastrukturi “vključili” tudi Evropo s OpenDNS serverjem v Londonu, Velika Britanija. Res pa je, da mi že sedaj hitro dela, torej vsaj toliko hitro kot prej, počasneje pa nikakor ne. Kot drugo pa glede ogromnega “cache-a” (IP resolvan v host-name), vsi namreč vemo, da pri principu “kešanja” nasploh, (pre)velik cache zgibi ves svoj pomen, ker mora biti tudi sam cache queried/searched, kar pa lahko na koncu traja dalj, kot resolvati IP na “standarden” način; torej z kontaktiranjem ISP-jevega DNS serverja; za več o tem glej dokument “Cache”: http://en.wikipedia.org/wiki/Cache na “Wikipedia” strani.

Nadaljujem pa z opisom delovanja tudi že omenjenega DNSKong programa. Torej, DNSKong je “local caching, filtering and blocking DNS server” program (deluje preko “listening” na 127.0.0.1 ali localhost, torej naslovu lokalne mašine), kateri filtrira name request-e od vseh aplikacij na PC-ju. Skratka, načeloma DNSKong uporablja tri osnovne fajle: “named.txt” fajl (kateri vsebuje posamezne dela imen v URL-jih), “pass.txt” fajl (enako kot “named.txt” vsebuje posamezne dela imen, samo da so te za razliko od tistih v “named.txt” eksplicitno dovoljene) in pa kot zadnji “presets.txt” fajl (ki je “local IP vs. host-name cache”, po vlogi podoben “hosts” fajlu), glede na njihovo specifično uporabo pa obstajata dva temeljna načina: prvi je t.i. “block all” način, ki “po default-u” blokira vse IP-je razen tistih konkretnih nekaj, katere uporabljaš vsak dan in jim zato seveda zaupaš (to dosežeš pa tako, da dodaš .com, .net, .org itd. top/root-level domain imena v “named.txt”, v “pass.txt” pa tiste katere dovoliš) in pa drugi ali “pass all” način, kateri načeloma dovoli vse, razen tistih, katere si sam dodal v “named.txt” fajl, jaz osebno pa uporabljam slednjega. Kot mi je pa zaupal sam avtor programa:

DNSKong uses a fast lookup method (a data structure being a completely balanced AVL tree) along with a dynamic cache in the computer heap storage to maintain the filter data. DNSKong uses an internal memory structure for the cache and filters. The cache is cleared each time you stop and start dnskong. Think of the memory structure as a list of domain names along with the IP although it is a bit more complicated than that. Dnskong looks up the name in the list and then uses the stored value for resolution. Presets are also stored in the same list. Essentially the idea is to minimize the number of lookups needed to find an IP for a domain. The time to lookup a name is proportional to the order of log base 10 of the total number of entries in “presets.txt” and “named.txt”files combined (i.e. “O(log(N))”); basically, we can compare performance using this. Since “log(1000) = 3″ and “log(1000000) = 6″ we would expect lookups to take twice as long for a million entries as they do for 1000 entries.

… dodal pa je tudi to, da bi lahko pospešil delovanje/zmanjšal rabo spomina z večanjem/manjšanjem t.i. “granularity-ja”. Naj tudi omenim, da je bil avtor program tako prijazen, da je posebej zame dodal “Socktime=” opcijo pod [Preferences] “header” v “DNSKong.ini” fajl. Aja in pa še to, če boste že obiskali to stran, potem prečekiraje tudi dugi program z imenom eDexter: http://pyrenean.com/?page_value=-2, kateri, kot sem sam malo spremenil opis programa na njegovi strani: “replaces what’s displayed by the default when using hosts-file blocking with its in-built images or third-party ones“, podpira/omogoča pa tudi “proxy blocking” s pomočjo PAC fajla. No, nazaj k DNSKong-u: samo konfiguriranje Windows-a za uporabo DNSKong-a znajo biti mogoče malo “geek-ovska” za koga, je pa v bistvu vse skupaj na moč preprosto; vse kar je treba narediti je: disejblat “DNS Client” in “DHCP Client” NT-service in naštimati IP od ISP-jevega DNS serverja (ali OpenDNS-jevega, če se seveda tako odločite) pod “Default and Alternate DNS Server” nastavitvami v “Internet Options” CP appletu, ali natančneje pod “Connections” tab, “Settings”, “Properties”, potem “Networking” tab, “Internet Protocol (TCP/IP)”, spet “Properties” in na koncu “General” tab.

Aha in pa mimogrede, en podoben tak “caching, local DNS server” program pa je FastCache program: http://www.analogx.com/…/fc.htm iz strani “AnalogX” (pod “Network Downloads” sekcijo), ki pa v primerjavi z DNSKong-om ne ponuja “IP filtering” in “IP blocking” opcij.

Za zaključek pa, tako kot zgoraj pri OpenDNS-ju, sledi nekaj bolj ali manj relevantnih linkov. Najprej je tu link do že narejenega kompleta t.i. “pre-set” filtrov za program DNSKong (torej gre za kombinacije treh zgoraj omenjenih fajlov), ki ga zdownloadate v obliki “taygas.zip” fajla, glej tole stran, potem dva linka do “support” strani, z raznimi nasveti in opisi postopkov kako konfiguriraš DNSKong-a: “Bbruce Pacificnet”: http://www.pacificnet.net/~bbruce, “Gorilla Design Studio”: http://accs-net.com/hosts/DNSKong.html in pa kot zadnje, najprej topic na forumu “Ready Response” z naslovom “Review: DNSKong program“: https://www.readyresponse.org/…/…t=1815, kot drugo pa topic na “CastleCops” forumu naslovljen “DNSKong – a personal caching/filtering psuedo-DNS server“: http://castlecops.com/postp529007.html (kjer sem bil svojčas t.i. “1st Responder Trainee”), medtem ko lahko za detajle o DNSKong programu skočite še na dokument DNSKong na “Wikipedia” portal (mimogrede, ta dokument sem ustvaril jaz, moj “user name” oz. “member name” ali “nick” pa je “Wayfarer“. Oba programa, torej DNSKong in eDexter, pa sta na voljo za zdownloadati tudi na moji osebni “userinfo-satyr.html” strani na “CastleCops” forumu spodaj pod “Last 10 Downloads Submitted by satyr”.

Tadej

One Response to “Moj sistem za pohitritev DNS operacij”

  1. I believe everything composed made a great deal of sense. However, think on this, suppose you added a little content? I mean, I don’t wish to tell you how to run your blog, but suppose you added something to maybe get a person’s attention? I mean Moj sistem za pohitritev DNS operacij Tadej: spletne objave is a little plain. You could peek at Yahoo’s front page and watch how they write news titles to get viewers to open the links. You might try adding a video or a pic or two to grab people interested about what you’ve written. Just my opinion, it might make your blog a little livelier.

Leave a Reply