E-mailovou konferenci pracovní skupiny DNSEXT, jež se zabývá rozšiřováním protokolu DNS, aktuálně rozbouřila diskuze nad novým návrhem Client IP information in DNS requests (Informace o klientské IP adrese v DNS dotazech). Návrh na nový standard společně podaly společnosti Google a Neustar. Sám Google před nedávnou dobou spustil službu Google Public DNS, a tudíž představuje zástupce provozovatele veřejného resolveru. Naopak Neustar stojí na opačném konci, provozuje několik TLD a autoritativní DNS servery získané akvizicí firmy UltraDNS. To jen tak na vysvětlenou, proč se tito dva hráči pouštějí do tahanic okolo DNS.
Problematický návrh přidává do DNS zprávy volitelnou položku, která obsahuje IP adresu (resp. adresu sítě) klienta, který položil dotaz rekurzivnímu resolveru. Možná vás teď napadá otázka, k čemu je tato informace autoritativnímu DNS serveru dobrá?
Obecně k ničemu. Tento návrh přinese užitek pouze malé skupině provozovatelů DNS serverů – hlavní využití by tento návrh měl při distribuci obsahu (CDN), kdy už v dnešní době dochází na základě IP adresy rekurzivního resolveru k přizpůsobení odpovědi, kterou poskytne autoritativní DNS server. Typickým příkladem je například právě Google.
Ondřej Surý je jako vedoucí Laboratoří CZ.NIC
odpovědný za tým hledající problémy spojené
s bezpečností Internetu a navrhující jejich řešení.
Teoretické znalosti získal Ondřej studiem
informatiky na MFF UK v Praze, praktické pak
ve společnosti ACTIVE 24. Ve sdružení CZ.NIC
pracuje od roku 2005. Je rovněž zakladatelem
českého lokálního týmu Ubuntu Linux.
Jak to funguje
Pokud se zeptám na adresu www.google.com ze svého pracovního počítače (tedy aktuálně s IP adresou přidělenou CZ.NICu), dostanu tuto odpověď:
www.google.com. IN CNAME www.l.google.com.
www.l.google.com. IN A 74.125.87.105
www.l.google.com. IN A 74.125.87.147
www.l.google.com. IN A 74.125.87.99
www.l.google.com. IN A 74.125.87.104
www.l.google.com. IN A 74.125.87.103
Pokud se zeptám z našeho DNS serveru v Londýnském LINXu, dostanu odpověď úplně jinou:
www.google.com. IN CNAME www.l.google.com.
www.l.google.com. IN CNAME www-tmmdi.l.google.com.
www-tmmdi.l.google.com. IN A 216.239.59.99
www-tmmdi.l.google.com. IN A 216.239.59.103
www-tmmdi.l.google.com. IN A 216.239.59.147
www-tmmdi.l.google.com. IN A 216.239.59.104
Náš DNS uzel v Kaliforni vidí opět jiné IP adresy:
www.google.com. IN CNAME www.l.google.com.
www.l.google.com. IN A 74.125.87.99
www.l.google.com. IN A 74.125.87.103
www.l.google.com. IN A 74.125.87.104
www.l.google.com. IN A 74.125.87.105
www.l.google.com. IN A 74.125.87.147
Těmito DNS triky se dá geograficky rozložit zátěž mezi různé lokality. S příchodem veřejných otevřených rekurzivních resolverů (provozovaných jako služba) ovšem nastává problém. Jak budou vypadat stejné dotazy ze stejných lokalit, když začnu používat například servery OpenDNS.
Z Česka:
www.google.com. IN CNAME google.navigation.opendns.com.
google.navigation.opendns.com. IN A 208.69.34.230
google.navigation.opendns.com. IN A 208.69.34.231
Z Kalifornie:
www.google.com. IN CNAME google.navigation.opendns.com.
google.navigation.opendns.com. IN A 208.67.219.230
google.navigation.opendns.com. IN A 208.67.219.231
Přesměrováním na vlastní server OpenDNS řeší problém, který představuje neschopnost předat informaci o lokaci DNS klienta autoritativnímu serveru, k přesměrování dochází teprve na úrovni HTTP protokolu. Mimochodem všimněte si, jak OpenDNS bez zeptání vstupuje do vašeho DNS provozu. O důvod více, proč používat DNSSEC a nepoužívat OpenDNS.
Google se svou službou Google Public DNS řeší stejný problém. Sám pro sebe by tento protokol nepotřeboval, protože informaci o klientovi má, nicméně dalším třetím stranám ji není schopný předat.
Proč to vidím, jako cestu do pekel
Návrh, o kterém se aktuálně diskutuje v pracovní skupině DNSEXT, tento problém řeší přidáním volitelné (EDNS0 option) informace o klientské IP adrese, jak v DNS dotazu, tak v DNS odpovědi. Bez hlubšího zamyšlení se může tento nápad jevit jako dobrý. Nicméně pokud se zamyslíme nad dalšími souvislostmi, tak objevíme několik důvodů, proč by tento návrh neměl projít.
Důvod první: Myslím si, že změny důležitých protokolů jako je DNS, by neměly probíhat kvůli zájmům malé skupiny uživatelů tohoto protokolu. Celý návrh je šitý na míru několika málo poskytovatelům veřejných DNS resolverů, které se ptají autoritativních DNS serverů, které používají (dle některých špinavé) triky pro distribuci různého obsahu. Vnímám tento návrh jako nekoncepční, protože se snaží dolepit do DNS protokolu funkci, na kterou nebyl tento protokol postaven.
Důvod druhý: Lokalizace obsahu dle IP adresy není příliš spolehlivá. Pravděpodobně funguje ve většině případů, ale například nerozumím tomu, proč mě stránka google.com tvrdošíjně přesměrovává na www.google.cz a mluví na mne česky i přesto, že mám v nastavení prohlížeče nastaveno, že chci zobrazovat stránky v jazyce anglickém. Při cestě do zahraničí mají některé stránky (nejen google.com) tendenci na mne mluvit jazykem země, ve které se aktuálně nacházím. A mnohdy bývá problematické z této lokalizační pasti uniknout a dostat se alespoň na anglickou verzi stránek.
Důvod třetí: Celý návrh je postavený jako opt-out. Pokud si klient nepřeje, aby resolver předával informaci o jeho IP adrese, může stejnou cestou předat speciální IP adresu 0.0.0.0/0, kterou by měl resolver ctít a předat ji v této formě dále. Bohužel to ovšem znamená, že pokud nechcete, aby se autoritativní server dozvěděl vaši IP adresu, musíte mít podporu pro tuto volbu implementovanou ve vašem operačním systému. Osobně tento důvod vnímám jako nejzávažnější, protože mění stávající stav a nutí všechny uživatele k aktualizaci, která ani nemusí být dostupná.
Důvod čtvrtý: Tento návrh ubírá další kousíček soukromí, tedy předává informaci, kterou v tuto chvíli měl pouze resolver dalším třetím stranám (provozovatelům autoritativních DNS). Navíc o tom, zda-li dochází k tomuto předávání vaší IP adresy, se nemáte nikterak šanci dozvědět, alespoň současná verze návrhu žádné takové rozšíření neobsahuje.
Jak to bude vypadat dále? Pracovní skupiny v IETF pracují na principu konsenzu. Pokud už se musí hlasovat, tak se hlasuje hučením. Google je sice silný hráč, ale do pracovní skupiny IETF se může zapojit kdokoli a každý hlas má stejnou váhu. Ze stávající diskuze vyplývá, že návrh má více odpůrců než zastánců, a domnívám se tedy, že minimálně v této podobě schválen nebude.