DNS převádí jména jako example.cz na IP adresy, kterým rozumí počítače. V tomhle článku vysvětlíme, co dělá který typ záznamu, proč se změna neprojeví hned a jak si záznam sami ověříte. Na základy pak navazují návody na doménu pro VPS a doménu pro Minecraft server.
Co budete potřebovat
- Vlastní doménu (u kteréhokoli registrátora), nebo jen chuť pochopit, jak DNS funguje
- Přístup ke správě DNS záznamů vaší domény
- Počítač s Windows, macOS nebo Linuxem pro ověření záznamů
- Asi 15 minut
Jak DNS funguje#
Když hráč napíše do Minecraftu mc.example.cz nebo návštěvník do prohlížeče example.cz, jeho počítač se zeptá resolveru (DNS serveru poskytovatele internetu, nebo veřejného jako 1.1.1.1). Resolver dohledá, který autoritativní DNS server má pro doménu záznamy, zeptá se ho a odpověď si na čas uloží.
Tři role, které se často pletou:
| Role | Co dělá | Příklad |
|---|---|---|
| Registrátor | U něj jste doménu koupili a platíte ji. Nastavuje, které nameservery doménu spravují. | Firma, u které máte doménu .cz nebo .com. |
| DNS hosting (nameservery) | Server, kde jsou uložené záznamy domény (A, MX …). Tady záznamy upravujete. | Často stejný registrátor, nebo Cloudflare. |
| Resolver | Zjišťuje odpovědi pro uživatele a ukládá si je do mezipaměti. | DNS poskytovatele internetu, 1.1.1.1, 8.8.8.8. |
Upravujte záznamy tam, kam míří nameservery
Pokud má doména nameservery Cloudflaru, záznamy u registrátora se vůbec nepoužijí, i když je tam vidíte. Nejdřív zjistěte, kde DNS doopravdy běží (příkaz pro NS záznam najdete níže).
Typy záznamů#
| Typ | K čemu je | Příklad hodnoty | Pozor na |
|---|---|---|---|
| A | Převádí jméno na IPv4 adresu. | 203.0.113.10 | Jen jeden záznam pro jedno jméno, pokud nechcete střídání adres. |
| AAAA | Převádí jméno na IPv6 adresu. | 2001:db8::10 | Když služba na IPv6 neposlouchá, klienti s IPv6 se nepřipojí. |
| CNAME | Jméno je přezdívka jiného jména. | example.cz. | Nesmí být na kořeni domény ani vedle jiného záznamu se stejným jménem. |
| SRV | Kde (jméno a port) běží konkrétní služba. | 0 5 25570 mc.example.cz. | Cíl musí být jméno s A/AAAA záznamem, ne IP adresa a ne CNAME. |
| MX | Kam se doručuje e-mail domény. | 10 mail.example.cz. | Cíl musí mít A/AAAA záznam, nesmí to být CNAME ani IP. |
| TXT | Libovolný text: ověření domény, SPF, DKIM, DMARC. | "v=spf1 mx -all" | SPF smí mít doména jen jeden. |
| NS | Které nameservery doménu spravují. | ns1.example.net. | Měňte jen při přesunu DNS jinam. |
| CAA | Které certifikační autority smí vydat certifikát. | 0 issue "letsencrypt.org" | Když CAA nastavíte, nezapomeňte povolit autoritu, kterou používáte. |
| PTR | Převádí IP adresu na jméno (reverzní DNS). | mail.example.cz. | Nastavuje ho vlastník IP adresy, ne vy ve své doméně. Viz rDNS. |
A a AAAA#
Základ všeho: říkají, na jaké IP adrese jméno běží. IPv4 adresu VPS najdete v zákaznické zóně v záložce Síť (například 203.0.113.10), stejně tak IPv6 (například 2001:db8::10).
AAAA záznam přidávejte jen tehdy, když na IPv6 adrese opravdu poslouchá služba, kterou jméno obsluhuje. Zařízení s IPv6 totiž většinou zkouší IPv6 jako první.
CNAME#
CNAME říká „tohle jméno je jen jiný název pro tamto jméno“. Typicky www.example.cz jako přezdívka pro example.cz. Resolver pak hledá A/AAAA záznam cílového jména.
Pravidla:
- Jméno s CNAME nesmí mít žádný jiný záznam (podle standardu DNS, RFC 1034). Proto CNAME nejde dát na kořen domény (
example.cz), kde vždy jsou záznamy NS a SOA. - Některé DNS hostingy to obcházejí vlastní funkcí (Cloudflare jí říká CNAME flattening): na kořeni ukážou rovnou IP adresu cíle.
SRV#
SRV záznam říká, na kterém jméně a portu běží konkrétní služba. Používá ho například Minecraft Java Edition: díky němu hráči nemusejí psát port.
_minecraft._tcp.mc.example.cz. 300 IN SRV 0 5 25570 mc.example.cz.| Část | Význam |
|---|---|
_minecraft | Název služby, vždy s podtržítkem. |
_tcp | Protokol, vždy s podtržítkem. |
mc.example.cz. | Jméno, pro které záznam platí (to, co hráč zadá do hry). |
300 | TTL v sekundách. |
0 | Priorita – klient zkusí nejdřív cíl s nejnižší prioritou. |
5 | Váha – mezi cíli se stejnou prioritou rozhoduje poměr vah. Při jednom cíli na ní nezáleží. |
25570 | Port, na kterém služba skutečně běží. |
mc.example.cz. | Cíl – jméno, které má A/AAAA záznam s IP adresou serveru. |
Ve webovém rozhraní DNS hostingu se pole jmenují podobně (Name / Service / Protocol, Priority, Weight, Port, Target). Celý postup pro Minecraft najdete v článku Adresa serveru a vlastní doména. Bedrock Edition SRV záznamy nepoužívá.
MX a TXT#
- MX určuje poštovní server domény. Nižší číslo (priorita) má přednost. Cíl musí být jméno s A/AAAA záznamem.
- TXT nese text. Služby jako Google nebo Microsoft přes něj ověřují, že doménu vlastníte. E-mail ho používá pro SPF (kdo smí za doménu posílat poštu), DKIM (podpis zpráv) a DMARC (co dělat s podvrženými zprávami, záznam
_dmarc.example.cz).
Kořen domény a subdomény#
- Kořen (také „zavináč“,
@) je samotná doména,example.cz. - Subdoména je cokoli před ní:
www.example.cz,mc.example.cz,panel.example.cz. Subdoménu nemusíte nikde „zakládat“, stačí pro ni vytvořit záznam. - Hvězdička (
*.example.cz) je zástupný záznam pro všechna jména, která nemají vlastní záznam.
Do pole Název pište jen začátek
Většina webových rozhraní DNS doplňuje doménu za název sama. Pro mc.example.cz napište do pole Název (Name, Host) jen mc, pro kořen @. Když napíšete celé mc.example.cz, vznikne nechtěné mc.example.cz.example.cz.
Tečka na konci (example.cz.) v zápisu zónového souboru znamená „celé jméno, nic nepřidávej“. Ve webových rozhraních ji většinou psát nemusíte; pokud rozhraní tečku vyžaduje, napoví vám to.
TTL a „propagace“#
TTL (time to live) je počet sekund, po které si resolvery smějí odpověď pamatovat. Když záznam změníte, resolver, který si ho zrovna pamatuje, bude posílat starou hodnotu, dokud mu TTL nevyprší. Tomu se lidově říká „propagace DNS“.
| TTL | Kdy použít |
|---|---|
300 (5 minut) | Plánujete změnu (stěhování serveru) nebo teprve ladíte. |
3600 (1 hodina) | Běžný provoz, nic neměníte. |
86400 (1 den) | Záznamy, které se roky nemění. |
Stěhování bez výpadku
Den před stěhováním serveru snižte TTL záznamu na 300. Po stěhování se nová IP adresa rozšíří do 5 minut. Až vše funguje, můžete TTL zase zvýšit.
Další dvě situace:
- Změna nameserverů u registrátora trvá déle, obvykle do 24 hodin.
- Negativní odpověď se také pamatuje. Když se na jméno někdo zeptá dřív, než záznam existuje, resolver si chvíli pamatuje „takové jméno není“. Proto záznam nejdřív vytvořte a teprve potom ho zkoušejte.
Jak záznam ověřit#
Za example.cz a mc.example.cz v příkazech dosaďte svou doménu.
Windows
Otevřete PowerShell (nebo Windows Terminal) a použijte nslookup:
nslookup example.cz
nslookup -type=AAAA example.cz
nslookup -type=SRV _minecraft._tcp.mc.example.cz
nslookup -type=NS example.cz
nslookup example.cz 1.1.1.1nslookup example.cz– zeptá se výchozího DNS serveru na adresy jména.-type=AAAA– typ záznamu, na který se ptáte (A,AAAA,SRV,MX,TXT,NS,CNAME).1.1.1.1na konci – zeptá se konkrétního resolveru místo výchozího. Hodí se, když chcete obejít mezipaměť poskytovatele.
Server: one.one.one.one
Address: 1.1.1.1
Non-authoritative answer:
Name: example.cz
Address: 203.0.113.10Non-authoritative answer je v pořádku: odpověď přišla z resolveru, ne přímo z nameserveru domény.
V PowerShellu můžete použít i Resolve-DnsName:
Resolve-DnsName -Name example.cz -Type A -Server 1.1.1.1-Name– dotazované jméno.-Type– typ záznamu.-Server– resolver, kterého se ptáte (volitelné).
macOS
Otevřete aplikaci Terminál. Program dig je v macOS předinstalovaný:
dig +noall +answer example.cz A
dig +noall +answer example.cz AAAA
dig +noall +answer _minecraft._tcp.mc.example.cz SRV
dig +short example.cz NS
dig @1.1.1.1 +short example.cz Adig– nástroj na dotazy do DNS.+noall +answer– vypíše jen sekci s odpovědí, bez technických podrobností.+short– vypíše jen samotnou hodnotu.example.cz A– jméno a typ záznamu.@1.1.1.1– zeptá se konkrétního resolveru.
example.cz. 300 IN A 203.0.113.10Sloupce znamenají: jméno, zbývající TTL v sekundách, třída (vždy IN), typ záznamu a hodnota.
Linux
Na Ubuntu 24.04 i Debianu 13 (třeba přímo na VPS) nainstalujte balíček s programem dig, pokud ho systém nemá:
apt update && apt install bind9-dnsutilsapt update– stáhne aktuální seznam balíčků. Bez něj můžeapt installskončit chybouUnable to locate package.&&– druhý příkaz spustí, jen když první proběhl bez chyby.apt install– nainstaluje balíček ze systémových repozitářů. Spouštějte jako root; pod běžným uživatelem napište před oba příkazysudo.bind9-dnsutils– balíček s nástrojidiganslookup.
Pak použijte stejné příkazy jako na macOS:
dig +noall +answer example.cz A
dig +noall +answer _minecraft._tcp.mc.example.cz SRV
dig +short example.cz NS
dig @1.1.1.1 +short example.cz A+noall +answer– jen sekce s odpovědí.+short– jen hodnota.@1.1.1.1– dotaz na konkrétní resolver.
Užitečné veřejné resolvery pro kontrolu: 1.1.1.1 (Cloudflare), 8.8.8.8 (Google), 9.9.9.9 (Quad9). Když je nový záznam vidět u nich, ale ne u vás, máte starou odpověď v mezipaměti.
Pro pokročilé: dotaz přímo na nameserver domény
Odpověď autoritativního nameserveru mezipaměť neovlivní. Zjistěte nameserver domény a zeptejte se ho přímo. Místo ns1.example.net dosaďte jeden z nameserverů z prvního výpisu:
dig +short example.cz NS
dig @ns1.example.net +short mc.example.cz AKdyž tady záznam je a jinde ne, stačí počkat na vypršení TTL. Celou cestu od kořenových serverů ukáže dig +trace example.cz.
Časté chyby#
| Chyba | Jak se projeví | Oprava |
|---|---|---|
| Celá doména v poli Název | Vznikne mc.example.cz.example.cz, adresa nefunguje. | Do pole Název pište jen mc. |
| Dva různé A záznamy pro jedno jméno | Jednou se připojíte, jindy ne. | Nechte jen záznam se správnou IP. |
| Zapomenutý AAAA záznam na starý server | Z IPv6 sítí (mobilní data) web nebo server nefunguje. | Opravte AAAA na novou IPv6, nebo ho smažte. |
| CNAME vedle jiného záznamu | DNS hosting záznam odmítne, nebo se chová nepředvídatelně. | Pro jméno použijte buď CNAME, nebo A/AAAA, ne obojí. |
| Cíl SRV nebo MX je IP adresa | Klient adresu nenajde. | Cíl musí být jméno s A/AAAA záznamem. |
| Proxy Cloudflaru (oranžový mráček) u herního serveru nebo SSH | Web funguje, hra ani SSH ne. | Pro tyto záznamy nastavte DNS only (šedý mráček). Viz doména na VPS a Cloudflare. |
| Úprava záznamů u registrátora, i když NS míří jinam | Změna se nikdy neprojeví. | Upravte záznamy tam, kam míří NS. |
Záznam v souboru hosts v počítači | U vás jméno vede jinam než všem ostatním. | Zkontrolujte soubor hosts (Windows C:\, macOS a Linux /etc/hosts). |
Když něco nefunguje#
Non-existent domain (Windows) nebo NXDOMAIN (dig)#
Jméno neexistuje. Zkontrolujte překlep, že záznam je uložený a že ho upravujete u správných nameserverů. Pokud jste se na jméno ptali dřív, než jste záznam vytvořili, počkejte pár minut (negativní odpověď v mezipaměti).
Odpověď je prázdná, ale jméno existuje (No answer, ANSWER: 0)#
Jméno existuje, ale nemá záznam typu, na který se ptáte. Například máte A záznam, ale ptáte se na AAAA. Každý nástroj to ukáže trochu jinak:
dig +shortnevypíše nic. V plném výpisudigjestatus: NOERRORaANSWER: 0.nslookupna macOS a Linuxu vypíše*** Can't find …: No answer.nslookupve Windows místo adresy vypíše jen údaje o nameserveru domény (řádekprimary name server).
U SRV zkontrolujte, že název obsahuje _minecraft._tcp. a správnou subdoménu.
U 1.1.1.1 je nová IP, u mě pořád stará#
Váš počítač nebo poskytovatel internetu má starou odpověď v mezipaměti. Počkejte na vypršení TTL, nebo vymažte mezipaměť počítače:
Windows
ipconfig /flushdnsipconfig /flushdns– vymaže mezipaměť DNS ve Windows (i zapamatované negativní odpovědi).
macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSRespondersudo– spustí příkaz s právy správce (zeptá se na heslo k Macu, při psaní se nic nezobrazuje).dscacheutil -flushcache– vymaže mezipaměť adresářové služby systému.;– po prvním příkazu spustí druhý.killall -HUP mDNSResponder– pošle systémové službě DNS signál, aby zahodila mezipaměť.
Linux
sudo resolvectl flush-cachessudo– spustí příkaz s právy správce. Na VPS, kde jste přihlášení jako root, ho vynechte.resolvectl flush-caches– vymaže mezipaměť služby systemd-resolved, kterou používá Ubuntu i řada dalších distribucí.
Když příkaz skončí chybou (například resolvectl: command not found), systém službu systemd-resolved nepoužívá. Tak je tomu třeba u běžné instalace Debianu: systém si odpovědi DNS sám nepamatuje a mazat nemusíte nic.
Prohlížeče mají vlastní mezipaměť; pomůže je zavřít a znovu otevřít.
dig: command not found nebo nslookup: command not found#
Na Linuxu nainstalujte balíček bind9-dnsutils (viz záložka Linux výše). Ve Windows místo dig použijte nslookup nebo Resolve-DnsName.
Změna se neprojevila ani po několika hodinách#
- Zjistěte nameservery domény:
dig +short example.cz NS(Windows:nslookup -type=NS example.cz). - Ověřte, že záznamy upravujete u stejného poskytovatele, kam NS míří.
- Zeptejte se přímo nameserveru (viz „Pro pokročilé“ výše). Pokud tam záznam není, změna se neuložila.
Shrnutí
- A a AAAA vedou jméno na IP adresu, CNAME na jiné jméno, SRV říká jméno a port služby, MX vede poštu.
- Záznamy upravujete u DNS hostingu, kam míří nameservery domény, ne nutně u registrátora.
- TTL určuje, jak dlouho si resolvery pamatují starou hodnotu; před změnou ho snižte na 300 s.
- CNAME nepatří na kořen domény a cíl SRV/MX musí být jméno, ne IP.
- Záznam ověříte příkazem
nslookup(Windows) nebodig(macOS, Linux).