14 Nástroje na ladění DNS a běžné chyby v konfiguraci DNS

Po konfiguraci name serveru a jeho spuštění musíme zkontrolovat, zda náš name server pracuje korektně. Chyby DNS jsou velice nepříjemné. Při chybě DNS se někdy aplikace ani nerozběhnou, častěji se celý systém jeví jako výrazně pomalý. Zejména při konfiguraci firewallu, pokud zjistíme dlouhé odezvy firewallu, pak s největší pravděpodobností je na vině chybně pracující DNS.

Existují i informativní RFC zabývající se problémy DNS. Např. častým chybám DNS se věnuje RFC-1537 a prostředkům na ladění DNS se věnuje RFC-1713.

Při kontrole konfigurace můžeme postupovat dvěma způsoby.

  1. První způsob kontroly spočívá vtom, že se vžijeme do role resolveru a budeme na náš DNS server posílat DNS dotazy tak, jak to dělá resolver. Budeme tedy zkoušet, zda name server odpoví na náš dotaz tak, jak očekáváme.
  2. Druhý způsob kontroly je komplexní kontrola (ladění DNS), pomocí programu, který zná pravidla DNS a kontroluje splnění těchto pravidel u domén na našem name serveru. Výsledkem kontroly je seznam chyb, které se vkonfiguraci konkrétní domény vyskytují.
Pokud máte podezření na chybně pracující DNS, tak vždy jako předstupeň otestujte dostupnost Internetu. Pokud sedíte u PC pak ověřte:
  1. Zda-li pracuje korektně TCP/IP na PC příkazem:

  2. ping 127.0.0.1
  3. Zda-li máte spojení na směrovač na LAN:

  4. ping IP-adresa_směrovače (nikoliv jméno směrovače!)
  5. Zda-li máte spojení na místní name server:

  6. ping IP-adresa_name_serveru (nikoliv jméno name serveru!)
  7. Zda-li máte spojení do světa:

  8. ping IP-adresa_ve_světě
  9. Pokud máte možnost, pak obdobně ověřte dostupnost Internetu i ze samotného name serveru.

Program nslookup

      Nejčastěji používaný program pro kontrolu DNS je program nslookup. Tento program má jednu velkou výhodu. Je dnes totiž součástí balíku TCP/IP na Unixu i Windows a nemusíme jej tedy nikde shánět a kompilovat.

      Programem nslookup posíláme DNS dotazy na DNS server a kontrolujeme, zda DNS server odpovídá správně. Pomocí programu nslookup můžeme vystupovat v roli resolveru a požadovat po name serveru konečnou odpověď na náš dotaz. Nebo můžeme pomocí programu nslookup simulovat chování name serveru, který komunikuje s jiným name serverem (tj. požadovat jen částečné odpovědi). Záleží na tom, co chceme pomocí programu nslookup testovat.

      Program nslookup posílá DNS dotazy implicitně na name server, který je na systému nastavený jako resolver. V OS Unix tedy posílá dotazy na name server uvedený v souboru /etc/resolv.conf.

      Program nslookup spustíme v interaktivním režimu příkazem nslookup, výsledkem spuštění programu je např. prompt:

      Default Server: cbu.pvtnet.cz
      Address: 194.149.105.18
      >

      Odpdověď nám oznamuje, že server cbu.pvtnet.cz je na našem cvičném systému definován v konfiguraci resolveru jako implicitní name server. Tento name server má IP adresu 194.149.105.18. Na výzvu (prompt) > zadáme svůj dotaz. Ptát se můžeme např. na IP adresu nebo jméno nějakého uzlu.

      Zadám-li na prompt jméno uzlu např. www.pvt.cz, pokusí se name server cbu.pvtnet.cz zjistit IP adresu tohoto uzlu.
       

      Dotaz:

      > www.pvt.cz
      Server: cbu.pvtnet.cz
      Address: 194.149.105.18
       
      Odpověď:

      Name: www.pvt.cz
      Address: 194.149.104.206
      >

      Zadám-li na prompt IP adresu např. 194.149.104.206, pokusí se default server zjistit doménové jméno uzlu s touto IP adresou.

      Dotaz:

      > 194.149.104.206
      Server: cbu.pvtnet.cz
      Address: 194.149.105.18
       
      Odpověď:

      Name: www.pvt.cz
      Address: 194.149.104.206
      >

      Jak je zřejmé z uvedených příkladů program nslookup implicitně hledá v DNS odpovídající větu A nebo větu PTR. Programem nslookup se však můžeme zeptat name serveru na libovolnou větu RR. Typ věty, který nás zajímá definujeme v programu nslookup pomocí příkazu

      set querytype=typ_věty, který je možné zkrátit na set q=typ_věty.

      Použití si opět ukážeme na příkladu. Tentokrát nás bude zajímat seznam serverů, na které je směrována pošta pro doménu pvt.cz. Již víme, že směrování pošty je definováno větami MX v zónovém souboru příslušné domény. Zajímají nás tedy všechny vět typu MX. Nastavíme tedy požadovaný typ vět MX takto:

      Dotaz:

      >set q=mx
      > pvt.cz.
      Server: cbu.pvtnet.cz
      Address: 194.149.105.18
       
      Odpověď:

      pvt.cz preference = 20, mail exchanger = info.pvt.net
      pvt.cz preference = 5, mail exchanger = fw.pvt.cz
      pvt.cz preference = 10, mail exchanger = mh.pvt.cz
      pvt.cz nameserver = ns.pvt.net
      pvt.cz nameserver = ns1.pvt.net
      pvt.cz nameserver = snmp0.pvt.net
      pvt.cz nameserver = ns0.pipex.net
      pvt.cz nameserver = ns1.pipex.net
      info.pvt.net internet address = 194.149.104.203
      fw.pvt.cz internet address = 194.149.101.194
      mh.pvt.cz internet address = 194.149.105.36
      ns.pvt.net internet address = 194.149.105.18
      ns1.pvt.net internet address = 194.149.103.201
      snmp0.pvt.net internet address = 194.149.103.34
      ns0.pipex.net internet address = 158.43.128.8
      ns0.pipex.net internet address = 158.43.128.103
      ns1.pipex.net internet address = 158.43.192.40
      ns1.pipex.net internet address = 158.43.192.7
      >

      Pro doménu pvt.cz je pošta směrována na uzel fw.pvt.cz a na dva záložní uzly info.pvt.net a mh.pvt.cz.

      Všimněte si, že program nslookup vypisuje nejen vlastní odpověd ale i ostatní informace z DNS paketu, který od serveru obdržel. Kromě vlastní odpovědi navíc vidíme i autoritativní servery pro doménu pvt.cz a IP adresy všech serverů v odpovědi. Tyto doplňkové informace nebudu v dalších příkladech z důvodu přehlednosti uvádět.

      Další případ, kdy se nslookup často používá, je zjištění autoritativních serverů pro doménu, Zajímají nás tentokrát jména name serverů, které se o danou doménu starají. Požadovanou informaci jednoduše získáme, když nastavíme typ věty na NS:

      Dotaz:

      > set q=ns
      > pvt.cz
      Server: cbu.pvtnet.cz
      Address: 194.149.105.18
       
      Odpověď:

      pvt.cz nameserver = ns1.pvt.net
      pvt.cz nameserver = snmp0.pvt.net
      pvt.cz nameserver = ns0.pipex.net
      pvt.cz nameserver = ns1.pipex.net
      pvt.cz nameserver = ns.pvt.net

      Doména pvt.cz je delegována na 5 autoritativních name serverů.

      Cvičení: Zjistěte autoritativní name servery pro doménu fj.

      Cvičení: Zjistěte root name servery Internetu (tj. autoritativní name servery pro tečku).

      Pokud např. nevíme, zda je doménové jméno kanonickým jménem nebo aliasem, můžeme využít nastavení set q=any a zjistit tak všechny věty vztahující se k danému doménovému jménu.

      Dotaz:

      > set q=any
      > info.pvt.net
      Server: localhost
      Address: 127.0.0.1

      Odpověď:
      info.pvt.net CPU = AlphaServer 100 OS = OSF/1
      info.pvt.net text = "e-mail: dostalek@pvt.net"
      info.pvt.net internet address = 194.149.104.203

      V našem případě je doménové jméno info.pvt.net definováno ve 3 větách, ve větě typu A, typu TXT a ve větě typu HINFO.
       

Ladící režim

      Při hledání chyby v konfiguraci nám často nestačí informace běžně vypisované programem nslookup a chceme vědět více. Použijeme tedy ladící režim programu. U programu nslookup je možné nastavit dvě úrovně ladícího režimu: režim debug a režim d2. Ladící úrovně se nastavují příkazem set.

Ladící úroveň debug

      Ladící úroveň debug vypisuje detailní informace z přicházejících DNS paketů.

      Nastavení ladící úrovně debug:

      > set debug

      Vezmete-li si k ruce kapitolu 11 (Protokol DNS), pak je výstup ladícího režimu docela dobře čitelný. Ve výpisu jsou jednotlivé sekce uvozeny nadpisem. Do výpisu je pro lepší orientaci autorem doplněn český komentář.

      Použití si ukážeme na příkladu. Zajímá nás IP adresa uzlu test100.pvt.net.
       

      Dotaz:
      > set debug

      > test100.pvt.net
      Server: runner.pvt.cz
      Address: 0.0.0.0
       
      Odpověď:

      ------------
      Got answer: První odpověď neobsahuje ještě přeloženou adresu
      HEADER: Sekce záhlaví
      opcode = QUERY, id = 1, rcode = NXDOMAIN
      header flags: response, auth. answer, want recursion, recursion avail.
      questions = 1, answers = 0, authority records = 1,additional = 0

      QUESTIONS: Sekce obsahující dotaz
      test100.pvt.net.pvt.cz, type = A, class = IN

      AUTHORITY RECORDS: Sekce o autoritativních serverech
      -> pvt.cz
      ttl = 129600 (1 day 12 hours)
      origin = mh.pvt.cz
      mail addr = hostmaster.pvt.cz
      serial = 1996020802
      refresh = 10800 (3 hours)
      retry = 3600 (1 hour)
      expire = 360000 (4 days 4 hours)
      minimum ttl = 129600 (1 day 12 hours)
      ------------

      Druhý paket pak již v našem případě obsahuje odpověď:

      ------------

      Got answer:
      HEADER:
      opcode = QUERY, id = 2, rcode = NOERROR
      header flags: response, want recursion, recursion avail.
      questions = 1, answers = 1, authority records = 4, additional = 4

      QUESTIONS:
      test100.pvt.net, type = A, class = IN

      ANSWERS:
      -> test100.pvt.net
      internet address = 194.149.100.1
      ttl = 129175 (1 day 11 hours 52 mins 55 secs)

      AUTHORITY RECORDS:
      -> pvt.NET
      nameserver = NS0.PIPEX.net
      ttl = 122697 (1 day 10 hours 4 mins 57 secs)
      -> pvt.NET
      nameserver = NS1.PIPEX.net
      ttl = 122697 (1 day 10 hours 4 mins 57 secs)
      -> pvt.NET
      nameserver = ns.pvt.net
      ttl = 122697 (1 day 10 hours 4 mins 57 secs)
      -> pvt.NET
      nameserver = NS1.PVT.net
      ttl = 122697 (1 day 10 hours 4 mins 57 secs)

      ADDITIONAL RECORDS:
      -> NS0.PIPEX.net
      internet address = 158.43.128.8
      ttl = 143625 (1 day 15 hours 53 mins 45 secs)
      -> NS1.PIPEX.net
      internet address = 158.43.192.7
      ttl = 143625 (1 day 15 hours 53 mins 45 secs)
      -> ns.pvt.net
      internet address = 194.149.105.18
      ttl = 129175 (1 day 11 hours 52 mins 55 secs)
      -> NS1.PVT.net
      internet address = 194.149.103.201
      ttl = 129175 (1 day 11 hours 52 mins 55 secs)

      ------------

      Non-authoritative answer:
      Name: test100.pvt.net
      Address: 194.149.100.1

      Resolver odeslal na name server dva dotazy a jako odpověď obdržel dva pakety. Proč se jedná o dva dotazy by nám již mělo být jasné z kapitoly o resolveru. Pokud tomu tak není napovím, pozorně se podívejte na doménové jméno, na které se v dotazu resolver ptá.

         
         

Ladící úroveň d2

      Ladící úroveň d2 detailně vypisuje obsah odcházejících paketů (dotazů) i příchozích paketů (odpovědi). Použitím ladící úrovně d2 získáme úplný přehled o komunikaci resolveru s name serverem, jehož vypovídající schopnost je téměř shodná s výstupy MS Network Monitoru.

      Použití si ukážeme na příkladu stejném jako u ladící úrovně debug. Můžete porovnat odpovědi.
       

      Dotaz:
      > set d2

      > test100.pvt.net
      Server: runner.pvt.cz
      Address: 0.0.0.0
       
      Odpověď:

      ------------
      SendRequest(), len 40
      HEADER:
      opcode = QUERY, id = 3, rcode = NOERROR
      header flags: query, want recursion
      questions = 1,answers = 0,authority records = 0,additional = 0

      QUESTIONS:
      test100.pvt.net.pvt.cz, type = A, class = IN

      ------------

      ------------
      Got answer (96 bytes):
      HEADER:
      opcode = QUERY, id = 3, rcode = NXDOMAIN
      header flags: response, auth. answer, want recursion, recursion avail.
      questions = 1, answers = 0, authority records = 1, additional = 0

      QUESTIONS:
      test100.pvt.net.pvt.cz, type = A, class = IN

      AUTHORITY RECORDS:
      -> pvt.cz
      type = SOA, class = IN, dlen = 38
      ttl = 129600 (1 day 12 hours)
      origin = mh.pvt.cz
      mail addr = hostmaster.pvt.cz
      serial = 1996020802
      refresh = 10800 (3 hours)
      retry = 3600 (1 hour)
      expire = 360000 (4 days 4 hours)
      minimum ttl = 129600 (1 day 12 hours)
      ------------

      ------------
      SendRequest(), len 33

      HEADER:
      opcode = QUERY, id = 4, rcode = NOERROR
      header flags: query, want recursion
      questions = 1, answers = 0, authority records = 0, additional = 0

      QUESTIONS:

      test100.pvt.net, type = A, class = IN

      ------------

      ------------

      Got answer (208 bytes):

      HEADER:
      opcode = QUERY, id = 4, rcode = NOERROR
      header flags: response, want recursion, recursion avail.
      questions = 1, answers = 1, authority records = 4, additional = 4

      QUESTIONS:
      test100.pvt.net, type = A, class = IN

      ANSWERS:
      -> test100.pvt.net
      type = A, class = IN, dlen = 4
      internet address = 194.149.100.1
      ttl = 129025 (1 day 11 hours 50 mins 25 secs)

      AUTHORITY RECORDS:
      -> pvt.NET
      type = NS, class = IN, dlen = 15
      nameserver = NS0.PIPEX.net
      ttl = 122547 (1 day 10 hours 2 mins 27 secs)
      -> pvt.NET
      type = NS, class = IN, dlen = 6
      nameserver = NS1.PIPEX.net
      ttl = 122547 (1 day 10 hours 2 mins 27 secs)
      -> pvt.NET
      type = NS, class = IN, dlen = 9
      nameserver = ns.pvt.net
      ttl = 122547 (1 day 10 hours 2 mins 27 secs)
      -> pvt.NET
      type = NS, class = IN, dlen = 10
      nameserver = NS1.PVT.net
      ttl = 122547 (1 day 10 hours 2 mins 27 secs)

      ADDITIONAL RECORDS:
      -> NS0.PIPEX.net
      type = A, class = IN, dlen = 4
      internet address = 158.43.128.8
      ttl = 143475 (1 day 15 hours 51 mins 15 secs)
      -> NS1.PIPEX.net
      type = A, class = IN, dlen = 4
      internet address = 158.43.192.7
      ttl = 143475 (1 day 15 hours 51 mins 15 secs)
      -> ns.pvt.net
      type = A, class = IN, dlen = 4
      internet address = 194.149.105.18
      ttl = 129025 (1 day 11 hours 50 mins 25 secs)
      -> NS1.PVT.net
      type = A, class = IN, dlen = 4
      internet address = 194.149.103.201
      ttl = 129025 (1 day 11 hours 50 mins 25 secs)
      ------------

      Non-authoritative answer:
      Name: test100.pvt.net
      Address: 194.149.100.1
      >

         
         

Změna implicitního name serveru

    DNS paket s dotazem můžeme pomocí programu nslookup poslat na libovolný name server. Jméno testovaného serveru nastavíme příkazem server.

    > server ns.internic.net

    Po použití tohoto příkazu bude všechny následně zadané DNS dotazy řešit nově nastavený server tedy v našem případě server ns.internic.net.

    Toto nastavení je velice praktické, protože většinou se nám náš místní name server z naší LAN jeví jako korektně pracující. Takže jistotu získáme, až si náš name server ověříme z pohledu jiného name serveru.

         

Výpis zóny

         
    Pokud chceme, aby nám name server poslal kompletní informace o nějaké zóně, pak použijeme příkaz ls –d. Dotaz v tomto případě musíme směrovat na autoritativní server pro doměnu. Obvykle tedy příkazu ls –d předchází příkaz server.

    >server ns.pvt.net

    >ls -d pvt.cz

    Příkaz ls –d simuluje zone transfér z name serveru, proto se často používá při konfiguraci sekundárního name serveru. Pomocí příkazu ls –d je možné snadno ověřit, zda primární name server poskytuje data dané zoony a zda je tedy poskytne sekundárnímu name serveru pro zoonu. Pokud se nám nepodaří získat tímto příkazem od primárného serveru odpověď, můžeme si být jisti, že se to s největší pravděpodobností nepodaří ani sekundárnému name serveru.
     

Simulace dotazů od name serveru

         
      Chceme-li simulovat komunikaci mezi name servery, musíme potlačit dvě implicitní nastavení programu nslookupu.

      Program nslookup implicitně používá searchlist, tedy podobně jako resolver přidává implicitní doménu za doménové jméno, které není ukončeno tečkou. Toto chování zakážeme příkazem:

      > set nosearch

      Nslookup implicitně požaduje po name serveru rekurzivní, tedy konečnou odpověď. Víme,že name servery mezi sebou si posílají nerekurzivní odpovědi a proto opět toto chování musíme potlačit, tentokrát příkazem:

      > set norecurse

Nejčastější chybová hlášení programu nslookup

      No records available – Neexistuje věta požadovaného typu.
      No response from server – Server neběží
      No information – Server běží ale nemá k doméně informace
      Non-existent domain - Neexistuje reverzní záznam pro jméno name serveru
      Can't list domain …Query refused - Server běží ale nemá k doméně data (data expirovala)
      Unspecified error – Nespecifikovaná chyba

Další programy určené pro testování DNS

       
      O některých dalších prostředcích pro ladění DNS informuje RFC-1713. Jde například o programy: ddt2, dnsparse, doc, host, inetrover a lamer, které jsou dostupné na ftp://ftp.uu.net/networking/ip/dns

Dnswalk

      Nejznámějším programem pro ladění DNS  je program dnswalk. Dnswalk je skript napsaný v jazyce Perl. Program dnswalk “zná” pravidla pro konfiguraci DNS a podle těchto pravidel kontroluje konfiguraci  dané domény. Program dnswalk provede zone transfér z autoritativního name serveru a zkontroluje správnost konfigurace domény z mnoha pohledů. Program umí kontrolovat přímé domény i reverzní domény. Jméno kontrolované domény se programu předává jako parametr, jméno musí být ukončeno tečkou.
      Opět je nejlépe spouštět dnswalk z cizího počítače, proto v Internetu existují web-servery nabízející formuláře na otestování cizích domén. Tyto web-servery spouští dnswalk jako cgi-skript.
       Následující příklad ilustruje použití programu dnswalk pro kontrolu zóny pvt.net. (tečka na konci je povinná):
      $ perl dnswalk pvt.net.
      Getting zone transfer of pvt.net. from ns.pvt.net....done.
      Checking pvt.net.
      SOA=ns.pvt.net. contact=dostalek.pvt.cz.
      dhcp-cbu.pvt.net. A 194.149.104.3: no PTR record
      dhcp-cbu.pvt.net. A 194.149.104.11: no PTR record
      cbun000e01.pvt.net. 129600 CNAME pipex-gw.pvt.net.pvt.net.: domain
      occurred twice, forgot trailing '.'?
      cbun000e01.pvt.net. CNAME pipex-gw.pvt.net.pvt.net.: unknown host

      Při kontrole Dnswalk odhalil hned tři chyby:

      V doméně pvt.net jsou uvedeny dvě věty typu A, ke kterým neexistuje odpovídající věta PTR. Ve jméně pipex-gw.pvt.net nám chybí tečka ne konci a CNAME tedy ukazuje na neexitující uzel.

      Dnswalk může být spouštěn s různými parametry. Uveďme alespoň parametry pro nejčastěji používané kontroly:

      Parametr Význam

      -f Dnswalk zkouší provést zone transfér z autoritativního name serveru

      -l Kontrola na lame delegaci

      -r Rekurzivní kontrola subdomén domény

      -a Kontrola výskytu duplicitních vět typu A

      -F Kontrola vět A oproti větám PTR

      Nejčastější volání programu dnswalk pro kontrolu domény je tedy:

      dnswalk -Fralf domena.cz.

      Dnswalk je dostupný na: ftp://ftp.math.psu.edu/pub/barr
       

Dig

      Dalším ze známějších používaných programů pro kontrolu DNS je program dig. Program dig posílá na uvedený name server paket DNS query a vrací uživateli informace o DNS. Uživatel může určit, který server má dotaz zodpovědět, jaké informace jej zajímají a specifikovat dodatečné podmínky dotazu. Výhodou tohoto programu, je standardní formát odpovědi. Odpověď tedy můžeme dále zpracovávat svým programem. Zatímco nslookup se používá nejčastěji interaktivně, tak dig se spouští často z dávek.

      Nejčastěji používaná syntaxe:

      dig @server domena query-type

      Za znakem @ uvedeme jméno serveru, kterého se chceme dotazovat. Druhý parametr je jméno domény, kterou chceme kontrolovat, query-type je požadovaný typy věty. Na místo řetězce query-type můžeme uvést libovolný typ věty RR nebo řetězec axfr, kterým požadujeme zone transfér nebo řetězec any, který je požadavkem na libovolný typ věty.

      Příklad použití programu dig:

      V příkladu požadujeme kontrolu vět typu mx pro doménu pvt.net. Informace chceme od serveru ns.pvt.net.

      dig @ns.pvt.net pvt.net mx

      ; <<>> DiG 2.1 <<>> @ns.pvt.net pvt.net mx
      ; (1 server found)
      ;; res options: init recurs defnam dnsrch
      ;; got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
      ;; flags: qr aa rd ra; Ques: 1, Ans: 2, Auth: 5, Addit: 15
      ;; QUESTIONS:
      ;; pvt.net, type = MX, class = IN
      ;; ANSWERS:
      pvt.net. 86400 MX 20 mail.uu.net.
      pvt.net. 86400 MX 10 cbu.pvtnet.cz.

      ;; AUTHORITY RECORDS:
      pvt.net. 86400 NS ns.pvt.net.
      pvt.net. 86400 NS ns1.pvt.net.
      pvt.net. 86400 NS snmp0.pvt.net.
      pvt.net. 86400 NS ns0.pipex.net.
      pvt.net. 86400 NS ns1.pipex.net.

      ;; ADDITIONAL RECORDS:
      mail.uu.net. 74570 A 192.48.96.15
      mail.uu.net. 74570 A 192.48.96.16
      mail.uu.net. 74570 A 192.48.96.17
      mail.uu.net. 74570 A 192.48.96.5
      mail.uu.net. 74570 A 192.48.96.7
      mail.uu.net. 74570 A 192.48.96.8
      mail.uu.net. 74570 A 192.48.96.14
      cbu.pvtnet.cz. 86400 A 194.149.105.18
      ns.pvt.net. 86400 A 194.149.105.18
      ns1.pvt.net. 86400 A 194.149.103.201
      snmp0.pvt.net. 86400 A 194.149.103.34
      ns0.pipex.net. 16958 A 158.43.128.103
      ns0.pipex.net. 16958 A 158.43.128.8
      ns1.pipex.net. 16970 A 158.43.192.7
      ns1.pipex.net. 16970 A 158.43.192.40

      ;; Total query time: 7 msec
      ;; FROM: info.pvt.net to SERVER: ns.pvt.net 194.149.105.18
      ;; WHEN: Tue Aug 18 11:15:20 1998
      ;; MSG SIZE sent: 25 rcvd: 418

      Místo jména serveru můžeme při volání programu dig uvést IP adresu dotazovaného server.

Deset nejčastějších chyby v konfiguraci DNS

  1. Každý uzel na Internetu by měl mít doménové jméno korektně zavedené v DNS. Některé služby kontrolují existenci jména v DNS a bez jeho existence s uzlem nekomunikují.
  2. Doménové jméno nesmí obsahovat jiné znaky, než ACSII písmena, číslice a znak pomlčka. Jméno by nemělo být tvořeno pouze číslicemi. Jméno nesmí začínat nebo končit pomlčkou. Podtržítko je jako součást doménového jména sice povoleno v RFC-1033, není však definováno jako standard, některé implementace mají s podtržítkem problémy, proto se podtržítku zásadně vyhýbáme.
  3. Na konci úplných doménových jmen musí být tečka. Za IP adresou se tečka nedělá.
  4. V mail adresa ve větě SOA musí být znak @ nahrazen tečkou.
  5. Na pravé straně NS věty musí být uvedeno kanonické jméno, v NS větě nesmí být na pravé straně IP adresa.
  6. Věta A a věta PTR musí obsahovat shodné informace.
  7. Ve větách PTR, MX, NS a CNAME nesmí být na pravé straně uveden alias. Chcete-li mít pro uzel stejné jméno jako pro doménu použijte následující konstrukci:

  8. firma.cz. IN NS ns1.firma.cz.
    IN NS ns2.firma.cz
    IN A 1.2.3.4

  9. Ke každé větě A musí existovet věta PTR. Uzel s více IP adresami musí mít více PTR vět.
  10. Lame delegace – autoritativní name server neobsahuje data pro doménu. Tento stav často vzniká po zrušení sekundárního name serveru.

  11. Klasickým případem lame delegace je situace, kdy primární name server pracuje korektně. A sekundární name server je chybně nakonfigurován (chybí věta v named.boot, neprovedl se zone trnansfer atd.). Pak se stane, že v doméně vyšší úrovně je nastaven inkriminovaný nenakonfigurovaný name server jako autoritativní name server pro doménu.
    Odněkud je požadován dotaz na jméno z této domény. Nadřízený name server odpoví, ať se tazatel dotáže našeho chybně nakonfigurovaného name serveru coby autority. Tazatel tedy položí dotaz nenakonfigurovanému name serveru, který by měl být autoritou, ale ten neví co odpovědět … .
  12. Přilepená (glue) věta se neuvádí u reverzních domén. Pokud má name server více IP adres, musí být v nadřízené doméně uvedeny glue věty pro všechny IP adresy.