INTERNET4U

Jak na Internet server ? (3)

Zatím jsem se věnoval nastavením routingu. Nyní si představme, že se v uvedené lokální síti chceme z některého PC připojovat k serveru (třeba pomocí telnetu).

Domain Name Service

Osobně sice nepovažuji příkaz 'telnet 200.0.5.65' za nic krkolomného (sám často IP adresy takto používám), ale uživatelé mohou mít na celou věc jiný názor.

Proto vznikl hostlist, soubor, v němž jsou uvedena jména počítačů a k nim náležící IP adresy. Na unixových systémech bývá hostlistem soubor /etc/hosts, na počítačích s OS/2 bývá hostlistem soubor X:\TCPIP\ETC\hosts nebo ve X:\MPTN\ETC\hosts, na počítačích s MS-Windows pak X:\WINDOWS\hosts, kde X: je systémový disk. Takhle by mohl vypadat hostlist pro uvedenou síť:

200.0.5.66 pc1
200.0.5.67 pc2
200.0.5.68 pc3
200.0.5.130 pc4
200.0.5.131 pc5
200.0.5.132 pc6
200.0.5.65 server

Pomocí tohoto hostlistu je možné výše uvedený příkaz 'telnet 200.0.5.65' nahradit příkazem 'telnet' 'server'. Uvádět druhé a případná další síťová rozhraní serveru je naprosto zbytečné.

Tento soubor by pak měl být uložen na všech počítačích na této síti - už to je však poněkud nepraktické, neboť např. po přidání jednoho počítače do domény by bylo třeba updatovaný soubor na všechny počítače v síti znovu nakopírovat. V takhle malé síti to ještě není takový problém, ale představte si síť s tisíci počítači, nebo třeba celý Internet. Navíc v takových sítích by hostlist nabíral takovou velikost, že byste si na něj museli koupit celé diskové pole...

Proto vznikl systém DNS, Domain Name Service (poněkud kostrbatý překlad Jmenná služba používat raději ani nebudu). DNS nás zbavuje všech nevýhod hostlistu, je však mnohem složitější (a to i na pochopení).

Základem celé služby DNS je nameserver. Nameserverem je myšlen počítač, na němž běží DNS program (jehož nejčastější implementace je známá pod názvem BIND, což ovšem nemá nic společného s přivazováním a provazy, ale je to zkratka z Berkeley Internet Name Domain. Většinou se ale onen program jmenuje 'named'. Služby DNS využívají TCP/IP portů (socketů) 42 a 53.

Nameserveru se ptá na adresu IP počítače se specifikovaným jménem program zvaný resolver - ten je již téměř vždy součástí stacku TCP/IP, takže se o něj nemusíte starat. Konfigurační soubor od resolveru je na Unixu /etc/resolv.conf, v OS/2 X:\TCPIP\BIN\resolv, popř. X:\MTPN\BIN\resolv, v MS-Windows bývá konfigurace resolveru sice uvedena jinak, ale nakonec se stejně generuje soubor X:\WINDOWS\resolv, kde X: je jméno systémového disku. Formát souboru resolv je následující:

domain domena.cz

nameserver 200.0.5.65
nameserver 200.0.5.68
domain jina_domena.com
nameserver 123.45.67.8

Vždy první je uvedeno jméno domény, dále pak primární nameserver a případně též další sekundární nameservery. Adresa nameserveru 'musí' být číselná (jinak by šlo o klasický rekurzivní deadlock, protože pak nelze získat IP adresu serveru, neboť nelze získat IP adresu serveru, jelikož nelze získat IP adresu serveru atd...). Resolver se ptá na IP adresu počítače ve zmíněné doméně na serveru uvedeného vždy pro danou doménu na prvním místě, nedostane-li se mu odpovědi, ptá se dalšího atd. Pokud se resolver táže na jméno počítače, jehož doména není v resolv.conf uvedena, táže se prvního nameserveru, který v resolv.conf najde, pokud se mu nepodaří se spojit se serverem, vznáší dotaz na další nameserver atd.

Tolik o části klientské, která je relativně jednoduchá, nyní přijde na řadu část serverová.

V principu rozlišujeme tři druhy nameserverů, které, ač se neliší běžícím softwarem, liší se funkcí - nameservery primární, sekundární a nameservery cache only.

Primární nameserver je pro každou doménu jen jeden a obsahuje celý DNS záznam své domény (nebo více domén, neboť jakýkoli nameserver může spravovat libovolné množství domén - resp. omezení jsou jen hardwarového rázu).

Sekundární nameservery kopírují z primárního nameserveru tyto záznamy o spravovaných doménách a cache-only nameservery slouží jen jako cache - zaznamenávají si přístupy a získání adresy z doménového jména urychlují - nutno podotknout, že tuto činnost konají i ostatní nameservery, když přes ně nějaký DNS záznam putuje.

A jak takový nameserver nastavit ? Dále ukáži soubor named.boot, používaný programem named/BIND, pro primární server domény domena.cz a pro sekundární server domény druha_domena.cz:

Nyní si definujeme DNS záznam naší domény (soubor domena.cz.db):

Jméno počítače s IP adresou definujeme pomocí záznamu typu A. Záznam typu NS definuje nameserver pro specifikovanou (nebo také pro implicitní) doménu. Poměrně zajímavý je záznam MX, definující, kam má směřovat pošta pro tu kterou doménu (blíže v dalších pokračováních o Internetovém E-mailu). Záznam CNAME definuje nick (přezdívku) pro nějaký počítač - v tomto případě pro počítač server.domena.cz definuji přezdívku www (kvůli obvyklé URL adresaci - na Web server na tomto počítači bude možno přistupovat přes http://www.domena.cz/) a také přezdívku mail (kvůli menší pracnosti konfigurace některých klientských mailových programů). Význam SOA zde blíže rozvádět nebudu, použijte dokumentaci od bindu (v Unixu vyvoláte příkazem 'man named'). Nezapomeňte na tečky za jmény počítačů (definují konec jména, jinak by z počítače server.domena.cz byl počítač server.domena.cz.domena.cz atd.). U reverzního name-lookingu se používá ještě záznamů typu PTR.

Konfigurační záznam domény druha_domena.cz musí být přítomen na primárním nameserveru domény druha_domena.cz, odkud si jej náš server sám automaticky převezme, a naopak, případný sekundární nameserver si převezme DNS záznam naší domény z našeho primárního nameserveru. Pro jednoduchost neuvádím nastavení reverzního nameserveru - pokud dokážete nastavit nameserver, pak reverzní nameserver dáte dohromady také.

Jen pro informaci - DNS server nemusí pracovat jen v síti zapojené do Internetu, ale i v síti, která v Internetu není, popř. v síti, která je za firewallem. Zde si musíte server nastavit jako kořenový, což vcelku není problém, jen je potřeba opět číst dokumentaci.

Zbyněk Pospíchal


Horké novinky | internet4U homepage