přejít na obsah přejít na navigaci

Linux E X P R E S, Správa linuxového serveru: Reverzní záznamy a Knot DNS

Správa linuxového serveru: Reverzní záznamy a Knot DNS

debain_notext.png

Tento díl popisuje problematiku reverzních záznamů a představuje autoritativní DNS server Knot z dílen CZ.NIC.


Pokud jste tak ještě neučinili, projděte si předchozí díly, které se věnovaly základům DNS i BINDu. Minulý díl probral tvorbu zónových souborů, ale nedostalo se na reverzní záznamy.

Mechanismus delegace

Zdůrazňuji, že u všech zón platí mechanismus delegace. DNS servery v hierarchii výše se odkazují na DNS servery v hierarchii níže. Váš registrátor zajistí, že do kořenové zóny domény prvního řádu bude vložen záznam o vaší doméně druhého řádu spolu s odkazem na váš DNS server, kde budete mít definovanou příslušnou zónu a v ní řadu DNS záznamů.

Samozřejmě můžete provozovat vlastní DNS server, kde si nadefinujete vlastní doménu prvního řádu a kvanta domén druhého řádu, ale dokud na vás nezačnou odkazovat příslušné DNS servery v příslušných částech DNS stromu, nebudou mít vaše záznamy globální platnost (resolvující DNS servery je nenajdou).

U PTR záznamů platí úplně stejný princip – opět na vás musí odkazovat někdo v hierarchii výše. Podstatným rozdílem ovšem je, že PTR záznamy neobsluhují registrátoři domén, nýbrž majitelé příslušných bloků IP adres, tedy vaši ISP. Ti vám mohou (ale také nemusí) nabídnout vlastní DNS server, nebo nastavit delegaci pro určitou část PTR záznamů na váš server.

Reverzní záznamy

Jako správci jste se téměř jistě s reverzními záznamy setkali. Zatímco klasické DNS záznamy (zejména pak A pro IPv4 a AAAA pro IPv6) překládají jména na IP adresy, reverzní záznamy dělají přesný opak. Podívejte se na běžný DNS dotaz:

# dig wikipedia.org

;; QUESTION SECTION:
;wikipedia.org.                 IN      A

;; ANSWER SECTION:
wikipedia.org.          3461    IN      A       208.80.152.201

Toto je klasický dotaz na A záznam. Zeptali jste se na to, jaká je IP adresa serveru wikipedia.org. Nyní vezměte onu IP adresu, nebo jakoukoliv jinou, a zeptejte se na její reverzní (PTR) záznam:

# dig -x 208.80.152.201

;; QUESTION SECTION:
;201.152.80.208.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
201.152.80.208.in-addr.arpa. 3337 IN    PTR     wikipedia-lb.pmtpa.wikimedia.org.

V odpovědi na tento dotaz přímo vidíte, na co se vlastně nástroj dig ptá. Ptá se na PTR záznam k 201.152.80.208.in-addr.arpa. – doména in-addr.arpa je speciální doména určená k uchovávání PTR záznamů. Povšimněte si, že PTR záznamy mají stejný stromový charakter jako klasické DNS, přičemž směrem doprava putujete v hierarchii výše a směrem doleva níže. Proto jsou také jednotlivé oktety této IPv4 adresy zapsány v opačném pořadí. Tento mechanismus umožňuje delegaci.

Připomínám, že i když je možné uvést více PTR záznamů k jediné IP adrese, zvykem je to nedělat, zpravidla kvůli špatně napsanému softwaru, který očekává, že na dotaz na PTR záznam dostane jednu nebo žádnou odpověď.

Jak je ještě patrné v příkladu výše, PTR záznamy se nemusí shodovat s A záznamy. To je v pořádku, nicméně u poštovních serverů doporučuji vytvořit PTR záznam ve shodě s příslušným A záznamem, což o něco zvýší pravděpodobnost úspěšného doručení vaší pošty (vzhledem k opatřením proti spamu, která tuto shodu v některých případech prověřují).

Reverzní záznamy v BINDu

Pokud byste chtěli vytvořit PTR zónu pro subnet 10.0.0.0/24, vytvořili byste zónový soubor (např. /etc/bind/db.10.0.0) s obsahem podobným tomuto:

$TTL    86400
0.0.10.in-addr.arpa.       IN      SOA     ns1.example.cz admin.example.cz. (
                           20120820 ; serial
                           4h       ; slave refresh
                           2h       ; slave retry interval
                           2w       ; slave data expiration
                           1h )     ; maximum caching time when lookups fail
;
0.0.10.in-addr.arpa.       IN      NS      ns1.example.cz.
0.0.10.in-addr.arpa.       IN      NS      ns2.example.cz.

1.0.0.10.in-addr.arpa.     IN      PTR     webserver.example.org.
254.0.0.10.in-addr.arpa.   IN      PTR     router.example.org.

Jak vidíte, TTL i základní parametry zóny jsou shodné, dva NS záznamy pro autoritativní DNS servery také zůstávají, zóna pak obsahuje dva PTR záznamy pro počítače 10.0.0.1 (webserver.example.org) a 10.0.0.254 (router.example.org).

Nezapomeňte na tento zónový soubor upozornit Bind, a to editací /etc/bind/named.conf.local:

zone "0.0.10.in-addr.arpa" {
       type master;
       file "/etc/bind/db.10.0.0";
};

Před restartem Bindu zkontrolujte, že konfigurace je v pořádku:

named-checkconf

Můžete také zkontrolovat přímo danou zónu v daném zónovém souboru, a to pomocí nástroje named-checkzone:

# named-checkzone 0.0.10.in-addr.arpa. /etc/bind/db.10.0.0 
zone 0.0.10.in-addr.arpa/IN: loaded serial 20120820
OK

Po kontrole můžete provést restart:

service bind9 restart

Nyní můžete dotaz na reverzní záznam otestovat:

# dig -x 10.0.0.1 @127.0.0.1

;; QUESTION SECTION:
;1.0.0.10.in-addr.arpa.         IN      PTR

;; ANSWER SECTION:
1.0.0.10.in-addr.arpa.  86400   IN      PTR     webserver.example.org.

Knot DNS

Knot DNS je čistě autoritativní DNS server z díly CZ.NIC. Vyniká vysokým výkonem a podporou všech klíčových vlastností DNS. Knot je svobodný software šířený pod licencí GNU GPLv3 a funguje nejenom na Linuxu, ale také na BSD systémech.

Knot je pouze autoritativní server, což znamená, že umí pouze vracet data z vlastních zónových souborů, nikoliv provádět vyhledávání v DNS stromu (tj. nepracuje jako resolver).

Knot je součástí oficiálních repozitářů Debianu, a to počínaje vydáním Wheezy. Máte-li Debian Squeeze, budete muset buď server zkompilovat, nebo použít oficiální repozitář CZ.NIC, což realizujete úpravou /etc/apt/sources.list (popřípadě vytvořením nového souboru v adresáři /etc/apt/sources.list.d). Přidejte řádku s definicí repozitáře:

deb http://deb.knot-dns.cz/debian/ squeeze main

A následně aktualizujte místní databázi:

aptitude update

Poté, anebo pokud máte Debian Wheezy, můžete nainstalovat Knot obvyklým způsobem pomocí správce balíčků:

aptitude install knot

Konfigurace Knotu

Základním konfiguračním souborem Knotu je /etc/knot/knot.conf, jehož obsah může v té nejjednodušší variantě vypadat takto:

system {
  storage "/var/lib/knot";
}

interfaces {
  lo-iface { address 127.0.0.1@53; }
#  all-ifaces { address 0.0.0.0@53; }
}

zones {
  example.cz {
    file "/etc/knot/example.cz.zone";
  }
}
log {
  syslog { any info, notice, warning, error; }

Proměnná storage ve skupině system udává, kam si bude Knot ukládat provozní data (více o těchto datech viz níže). V distribuci Knotu z repozitářů CZ.NIC pro Debian Squeeze tento adresář není založen, je tedy třeba jej vytvořit:

mkdir /var/lib/knot

Zpět ke konfiguračnímu souboru. Skupina system obsahuje některé další volby, jako například workers, pomocí kterých lze ručně nastavit počet vláken pro každý síťový interface.

Skupina interfaces definuje jednotlivá síťová rozhraní, kde Knot poběží. Jednotlivá rozhraní si můžete pojmenovat libovolně (tzn. lo-iface a all-ifaces můžete zaměnit za cokoliv, co je vám bližší). V příkladu jsou vidět dvě definovaná rozhraní, jedno pro lokální smyčku, druhé pro všechna IPv4 rozhraní. To druhé je zakomentované.

Následuje skupina zones, která obsahuje definici zón. V tomto případě je definována jediná zóna, a to example.cz, jejíž obsah bude uložen v souboru /etc/knot/example.cz.zone. Obsah tohoto souboru může vypadat třeba takto:

$TTL 2h 
$ORIGIN example.cz.
@  IN  SOA  ns.example.cz. admin.example.cz. (
            20120820 ; serial
            4h       ; slave refresh
            2h       ; slave retry interval
            2w       ; slave data expiration
            1h )     ; maximum caching time when lookups fail
)

  NS    ns1.example.cz.
  NS    ns2.example.cz. 
  MX    10 mail.example.cz.  
  MX    20 mail2.example.cz.

ns1            A     4.3.2.1
ns2            A     4.3.2.2

@              A     1.2.3.4
my             A     1.2.3.5
*.my           A     1.2.3.5
www            CNAME example.cz.

SOA záznam ani záznam ostatních snad již nemusím popisovat (minulý díl prakticky vše zmínil a vysvětlil).

Nastavení Knotu uvedené výše je osekané na kost – Knot umožňuje mnohem komplexnější nastavení, zejména v oblasti zónových souborů a transferu zón z primárních na sekundární DNS servery. Tato nastavení jsou i s příklady popsány v dokumentaci, kterou doporučuji si projít.

Práce s Knotem

Samotné zónové soubory je třeba nejprve zkompilovat, a poté nastartovat Knot nebo provést jeho reload. Nejen k tomu slouží nástroj knotc. Důvodem kompilace je zrychlení startu, nevýhodou je pak na tuto nutnost pamatovat a po úpravách zónových souborů ji nezapomenout provést. Samotnou kompilaci můžete provést globálně pro všechny zóny:

knotc compile

Můžete být ale i selektivní (a třeba zkompilovat jen zóny example.cz a example.org):

knotc compile example.cz example.org

Knot také obsahuje nástroj pro kontrolu syntaxe konfiguračního souboru a pro kontrolu zónových souborů. Ty je vhodné provádět po úpravách ještě před kompilací, popřípadě před restartem nebo reloadem Knotu. Prověrku konfigurace provedete takto:

# knotc checkconf
2012-09-03T14:28:59.415223+02:00 Using '/etc/knot/knot.conf' as default configuration.
2012-09-03T14:28:59.415427+02:00 OK, configuration is valid.

K prověrce zónových souborů slouží příkaz:

knotc checkzone

Je možné kontrolovat jak globálně všechny zóny, tak pouze vybrané, a to stejným způsobem, jak je naznačeno u kompilace výše.

Samotný restart nebo reload Knotu je možné realizovat také pomocí nástroje knotc:

knotc reload

Funguje samozřejmě i restart:

knotc restart

Nahoru

Odkazy

Příspěvky

cesta dotazu na PTR zaznam
MIchal 13. 09. 2012, 11:13:09
Odpovědět  Odkaz 
Zdravim.
Mam obecnej dotaz.

Jak funguje dotazovani na PTR zaznamy? To mi v clanku chyby.

Ohledne dotazu na cz domenu to bude vypadat asi takto:
dotazi se sveho DNS na example.cz, ten se dotaze root serveru - ten "czNICu" - "czNIC" posle NS k dane domene.

A jaka je ted "cesta" pro PTR zaznamy ?
LIR je negde registrovan s NS serverama podobne jako se registruje domena ?
Jak je zajisteno ze dotaz na PTR leze prave ns NS daneho LIR ?

prikaldam vypis pro dotaz na ptr www.seznam.cz

dig +trace 3.72.75.77.in-addr.arpa PTR

; DiG 9.7.3 +trace 3.72.75.77.in-addr.arpa PTR
;; global options: +cmd
. 510839 IN NS f.root-servers.net.
. 510839 IN NS j.root-servers.net.
. 510839 IN NS l.root-servers.net.
. 510839 IN NS h.root-servers.net.
. 510839 IN NS g.root-servers.net.
. 510839 IN NS i.root-servers.net.
. 510839 IN NS a.root-servers.net.
. 510839 IN NS b.root-servers.net.
. 510839 IN NS c.root-servers.net.
. 510839 IN NS m.root-servers.net.
. 510839 IN NS e.root-servers.net.
. 510839 IN NS k.root-servers.net.
. 510839 IN NS d.root-servers.net.
;; Received 332 bytes from 192.168.10.1#53(192.168.10.1) in 0 ms

in-addr.arpa. 172800 IN NS a.in-addr-servers.arpa.
in-addr.arpa. 172800 IN NS f.in-addr-servers.arpa.
in-addr.arpa. 172800 IN NS c.in-addr-servers.arpa.
in-addr.arpa. 172800 IN NS b.in-addr-servers.arpa.
in-addr.arpa. 172800 IN NS d.in-addr-servers.arpa.
in-addr.arpa. 172800 IN NS e.in-addr-servers.arpa.
;; Received 417 bytes from 128.8.10.90#53(d.root-servers.net) in 113 ms

77.in-addr.arpa. 86400 IN NS ns3.nic.fr.
77.in-addr.arpa. 86400 IN NS pri.authdns.ripe.net.
77.in-addr.arpa. 86400 IN NS sec1.apnic.net.
77.in-addr.arpa. 86400 IN NS sec3.apnic.net.
77.in-addr.arpa. 86400 IN NS sns-pb.isc.org.
77.in-addr.arpa. 86400 IN NS tinnie.arin.net.
;; Received 212 bytes from 203.119.86.101#53(e.in-addr-servers.arpa) in 332 ms

72.75.77.in-addr.arpa. 172800 IN NS ns.seznam.cz.
72.75.77.in-addr.arpa. 172800 IN NS ms.seznam.cz.
;; Received 84 bytes from 199.212.0.53#53(tinnie.arin.net) in 103 ms

3.72.75.77.in-addr.arpa. 3600 IN PTR www.seznam.cz.
;; Received 68 bytes from 77.75.73.77#53(ns.seznam.cz) in 6 ms


Diky za objasneni.
Michal
Správa linuxového serveru: Reverzní záznamy a Knot DNS
jjurak 15. 10. 2022, 03:59:01
Odpovědět  Odkaz 
+1 k Michalovu dotazu

jak se pro knot nastavi reverzni PTR zaznam.

mam pro okd4 nastavenou dnsproxy:

zone:
# Primary zone
- domain: okd4.lab.blamaz.cz.
notify: secondary
acl: acl_secondary
file: /etc/knot/okd4.lab.blamaz.cz.zone
module: mod-queryacl/enp6s18

mod-dnsproxy:
- id: default
remote: hidden
fallback: on

template:
- id: default
global-module: mod-dnsproxy/default
storage: "/var/lib/knot"
file: "%s.zone"

to funkuje, ale nevim jak vytvorit PTR zaznam a nenachazim to ani v knoti dokumentaci.

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz