Knot DNS: správa zóny a zónové soubory

26. 10. 2021
Doba čtení: 14 minut

Sdílet

 Autor: Depositphotos
V předchozím díle jsme si vytvořili jednoduchou zónu ve formě zónového souboru a dnes si povíme, jak s takovým souborem pracovat. Jedná se o nejčastější uživatelskou operaci a je užitečné jí porozumět.

Automatická aktualizace zónového souboru

Existuje několik situací, kdy se obsah zóny změní automaticky. Sem patří například automatické podepisování DNSSEC nebo výsledek zónového transferu na sekundárním serveru. Většinou je žádoucí, aby se obsah aktualizované zóny někam uložil pro opětovné vyžití, třeba po restartu démona. Výchozím nastavením Knot DNS je, že se obsah zónového souboru automaticky aktualizuje bezprostředně poté, co má k dispozici nový obsah zóny. Můžeme se o tom přesvědčit výpisem:

$ sudo cat /var/lib/knot/xdp.cz.zone
;; Zone dump (Knot DNS 3.1.2)
xdp.cz.                 300 SOA ns1.xdp.cz. knot-dns.nic.cz. 2 36000 600 864000 300
xdp.cz.                 300 NS  ns1.xdp.cz.
xdp.cz.                 300 NS  ns2.xdp.cz.
xdp.cz.                 300 DNSKEY  256 3 13 UGwIkwzLMpQMkfcct1TRfY9yTpf2Tf9g7W2F1j3XEwh2BWNjve3Ul7EA1CYBEDfuQFNvySyv0Vbm07GOwUVPIw==
xdp.cz.                 300 DNSKEY  257 3 13 ONGSk6Yko2ZDmzlASEh6H8ZOnVv2lrjLU2CCJKH6QEaevH1vlH42sSDd+kCngJ4FKvXGpazCtAPbjHby67iBxA==
xdp.cz.                 0   CDS 32114 13 2 3EA51B0EE57236721C664C873A23579D8A2BBF9FFE9DBB2E192D8CD6D173EE5B
xdp.cz.                 0   CDNSKEY 257 3 13 ONGSk6Yko2ZDmzlASEh6H8ZOnVv2lrjLU2CCJKH6QEaevH1vlH42sSDd+kCngJ4FKvXGpazCtAPbjHby67iBxA==
ns1.xdp.cz.             300 AAAA    2001:1488:ac15:ff30::28
ns2.xdp.cz.             300 AAAA    2001:1488:ac15:ff30::29
;; DNSSEC signatures
xdp.cz.                 300 RRSIG   NS 13 2 300 20211020181348 20211006164348 16843 xdp.cz. Ti9iWvD5Bg+s7axUeETeu0pc0qhVw5quPgZQOGSDPTnzKLsHV/E4RJk6yf6pOowp5qbOvqFDWevSqeJ0uq6gRA==
xdp.cz.                 300 RRSIG   SOA 13 2 300 20211020181348 20211006164348 16843 xdp.cz. WBpdVCo4Lie8W723QMuJw2fSf9asc+H4iokHt4J23tvBlacE9oGuTGoxF206CRkxgdZNJsF+9LphBXHtksm/qQ==
xdp.cz.                 300 RRSIG   NSEC 13 2 300 20211020181348 20211006164348 16843 xdp.cz. r3Vmv+0T2oa2DtvKK5NTOZuZEBKNRwC9v8Wp0S0Lmyc+7gGJkn6GHHGmCehoc/Sw8HxYA55RPK9jHFzunxGNDQ==
xdp.cz.                 300 RRSIG   DNSKEY 13 2 300 20211020181348 20211006164348 32114 xdp.cz. VvXR/LemDmeqxuYC3Bb2Dcrr9JXl6EXKaOeaIl1X/6nW44ldNWwDSdwLy26yhzt87DlV3MZkjEew/VZLZzAN2w==
xdp.cz.                 0   RRSIG   CDS 13 2 0 20211020181348 20211006164348 32114 xdp.cz. +g42GFh0crOwB03X7xvz6RpQk6EQCAnH9gE1bnfcsnowNgPXDoa1ikImr9zpP+/jCB6vbPNNJZfuqYXxn91VNA==
xdp.cz.                 0   RRSIG   CDNSKEY 13 2 0 20211020181348 20211006164348 32114 xdp.cz. rmiLZIezqVhCFamU+lmE9DN0i9U3pwzowr/tZemyVpldrR8TopXI2/o+izNzxMbfa+9sS2fHDcGhCKnFutqHzQ==
ns1.xdp.cz.             300 RRSIG   AAAA 13 3 300 20211020181348 20211006164348 16843 xdp.cz. togaA5uet7XtYjeG0n2265V46L4C8VUSa+Tg2K0DRqNh1xc8EqHlm6E3WsdSTvo9ruA5IQrDhgrnRe7qhkY0Pg==
ns1.xdp.cz.             300 RRSIG   NSEC 13 3 300 20211020181348 20211006164348 16843 xdp.cz. DkQCADKBGf29vlLvqRb5eCDKgqq0B9pl/yn1nZV8d3bj1BzBzzfdOM0BlAnlH10+Hto4VtysOLoxKvfBfsvszQ==
ns2.xdp.cz.             300 RRSIG   AAAA 13 3 300 20211020181348 20211006164348 16843 xdp.cz. wbJZMA9F1z4sHo3G3qupxDNRH9o5SI0rPLbB5DYl9X/pJs/ugSIUF1fLgnoDTGL9vvvSWbWJch5eL0mN7HFmvw==
ns2.xdp.cz.             300 RRSIG   NSEC 13 3 300 20211020181348 20211006164348 16843 xdp.cz. 4c6Ni1vEyduKa0lZ4LtcFWQCqqD4u+mHt35NE7NunJ8M5PEMb7gNga787k3jFSQl4CJDsWrZCUnM+Sj1yaowOQ==
;; DNSSEC NSEC chain
xdp.cz.                 300 NSEC    ns1.xdp.cz. NS SOA RRSIG NSEC DNSKEY CDS CDNSKEY
ns1.xdp.cz.             300 NSEC    ns2.xdp.cz. AAAA RRSIG NSEC
ns2.xdp.cz.             300 NSEC    xdp.cz. AAAA RRSIG NSEC
;; Written 22 records
;; Time 2021-10-06 20:13:48 CEST

V tuto chvíli často přichází rozčarování uživatelů, kdy zjistí, že přišli o svůj krásně strukturovaný zónový soubor. Automatickou aktualizaci zónového souboru je možné ovlivnit volbou zonefile-sync v nastavení zóny, kde hodnota -1 vypne funkci úplně, nebo kladná hodnota stanoví zpoždění synchronizace. To může být vhodné u velkých zón nebo zón, které se mění velmi často.

Zónový žurnál

Aby se neztratila informace o změnách v zóně, nabízí Knot DNS zónový žurnál. To je binární databáze, kam si jednotlivé zóny mohou ukládat svoje změny nebo i kompletní obsah. Pomocí nástroje kjournalprint (budoucí verze bude přebírat cestu k žurnálu z konfigurace) si můžeme vypsat žurnál pro zadanou zónu:

$ sudo kjournalprint /var/lib/knot/journal xdp.cz
;; Changes between zone versions: 1 -> 2, changeset: 1
;; Removed
xdp.cz.                 300 SOA ns1.xdp.cz. knot-dns.nic.cz. 1 36000 600 864000 300
;; Added
xdp.cz.                 300 SOA ns1.xdp.cz. knot-dns.nic.cz. 2 36000 600 864000 300
xdp.cz.                 300 DNSKEY  256 3 13 UGwIkwzLMpQMkfcct1TRfY9yTpf2Tf9g7W2F1j3XEwh2BWNjve3Ul7EA1CYBEDfuQFNvySyv0Vbm07GOwUVPIw==
xdp.cz.                 300 DNSKEY  257 3 13 ONGSk6Yko2ZDmzlASEh6H8ZOnVv2lrjLU2CCJKH6QEaevH1vlH42sSDd+kCngJ4FKvXGpazCtAPbjHby67iBxA==
xdp.cz.                 0   CDS 32114 13 2 3EA51B0EE57236721C664C873A23579D8A2BBF9FFE9DBB2E192D8CD6D173EE5B
xdp.cz.                 0   CDNSKEY 257 3 13 ONGSk6Yko2ZDmzlASEh6H8ZOnVv2lrjLU2CCJKH6QEaevH1vlH42sSDd+kCngJ4FKvXGpazCtAPbjHby67iBxA==
xdp.cz.                 300 RRSIG   NS 13 2 300 20211020181348 20211006164348 16843 xdp.cz. Ti9iWvD5Bg+s7axUeETeu0pc0qhVw5quPgZQOGSDPTnzKLsHV/E4RJk6yf6pOowp5qbOvqFDWevSqeJ0uq6gRA==
xdp.cz.                 300 RRSIG   SOA 13 2 300 20211020181348 20211006164348 16843 xdp.cz. WBpdVCo4Lie8W723QMuJw2fSf9asc+H4iokHt4J23tvBlacE9oGuTGoxF206CRkxgdZNJsF+9LphBXHtksm/qQ==
xdp.cz.                 300 RRSIG   NSEC 13 2 300 20211020181348 20211006164348 16843 xdp.cz. r3Vmv+0T2oa2DtvKK5NTOZuZEBKNRwC9v8Wp0S0Lmyc+7gGJkn6GHHGmCehoc/Sw8HxYA55RPK9jHFzunxGNDQ==
xdp.cz.                 300 RRSIG   DNSKEY 13 2 300 20211020181348 20211006164348 32114 xdp.cz. VvXR/LemDmeqxuYC3Bb2Dcrr9JXl6EXKaOeaIl1X/6nW44ldNWwDSdwLy26yhzt87DlV3MZkjEew/VZLZzAN2w==
xdp.cz.                 0   RRSIG   CDS 13 2 0 20211020181348 20211006164348 32114 xdp.cz. +g42GFh0crOwB03X7xvz6RpQk6EQCAnH9gE1bnfcsnowNgPXDoa1ikImr9zpP+/jCB6vbPNNJZfuqYXxn91VNA==
xdp.cz.                 0   RRSIG   CDNSKEY 13 2 0 20211020181348 20211006164348 32114 xdp.cz. rmiLZIezqVhCFamU+lmE9DN0i9U3pwzowr/tZemyVpldrR8TopXI2/o+izNzxMbfa+9sS2fHDcGhCKnFutqHzQ==
ns1.xdp.cz.             300 RRSIG   AAAA 13 3 300 20211020181348 20211006164348 16843 xdp.cz. togaA5uet7XtYjeG0n2265V46L4C8VUSa+Tg2K0DRqNh1xc8EqHlm6E3WsdSTvo9ruA5IQrDhgrnRe7qhkY0Pg==
ns1.xdp.cz.             300 RRSIG   NSEC 13 3 300 20211020181348 20211006164348 16843 xdp.cz. DkQCADKBGf29vlLvqRb5eCDKgqq0B9pl/yn1nZV8d3bj1BzBzzfdOM0BlAnlH10+Hto4VtysOLoxKvfBfsvszQ==
ns2.xdp.cz.             300 RRSIG   AAAA 13 3 300 20211020181348 20211006164348 16843 xdp.cz. wbJZMA9F1z4sHo3G3qupxDNRH9o5SI0rPLbB5DYl9X/pJs/ugSIUF1fLgnoDTGL9vvvSWbWJch5eL0mN7HFmvw==
ns2.xdp.cz.             300 RRSIG   NSEC 13 3 300 20211020181348 20211006164348 16843 xdp.cz. 4c6Ni1vEyduKa0lZ4LtcFWQCqqD4u+mHt35NE7NunJ8M5PEMb7gNga787k3jFSQl4CJDsWrZCUnM+Sj1yaowOQ==
xdp.cz.                 300 NSEC    ns1.xdp.cz. NS SOA RRSIG NSEC DNSKEY CDS CDNSKEY
ns1.xdp.cz.             300 NSEC    ns2.xdp.cz. AAAA RRSIG NSEC
ns2.xdp.cz.             300 NSEC    xdp.cz. AAAA RRSIG NSEC

Verzovanou změnu zóny nazýváme changeset. Ve výpisu vidíme jeden changeset, který popisuje změnu zóny z verze 1 na verzi 2. Konkrétně jde o prvotní podepsání zóny. Changeset se skládá ze dvou částí (v terminálu barevně odlišených). První část jsou záznamy, které byly ze zóny odebrány. Druhá část popisuje záznamy nově přidané.

Nabízí se otázka, k čemu jsou změny v žurnálu, když máme aktuální zónový soubor? Nejčastějším důvodem je oddělení DNSSEC od samotného obsahu nebo vyšší efektivita zónového transferu, který je dvojího typu:

  • Úplný zónový transfer (tzv. AXFR) – bezkontextový přenos kompletní zóny
  • Rozdílový zónový transfer (tzv. IXFR) – přenos následných změn zóny od zadané verze

Aby byl primární server schopen poskytnout IXFR, musí si pamatovat jednotlivé změny, a ty jsou právě uloženy v žurnálu.

Úprava zónového souboru

Při ruční správě zónového souboru může být praktické mít ho vyhrazený jen pro běžné záznamy a žurnál pro ukládání rozdílů a generovaného obsahu souvisejícího s DNSSEC. Tuto oblíbenou konfiguraci provedeme rozšířením nastavení zóny na primárním serveru o volby zonefile-sync, zonefile-load a journal-content:

zone:
  - domain: xdp.cz.
    notify: secondary
    acl: acl_secondary
    dnssec-signing: on
    zonefile-sync: -1
    zonefile-load: difference-no-serial
    journal-content: all

To zaručí, že nám démon nebude přepisovat zónový soubor a že se při jeho opětovném načtení automaticky vypočítá rozdíl, navýší verze, aktualizuje DNSSEC a uloží do žurnálu. Další možné kombinace použitých voleb jsou popsány v dokumentaci.

Dále vrátíme obsah zónového souboru do úvodní podoby (bez záznamů DNSSEC) a potvrdíme sudo systemctl reload knot. V logu vidíme:

Oct 11 14:13:58 ns1.xdp.cz systemd[1]: Reloaded Knot DNS server.
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] zone file parsed, serial corrected 1 -> 3
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] zone stored to journal, serial 2
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: notice: [xdp.cz.] DNSSEC, KSK submission, waiting for confirmation
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, key, tag 32114, algorithm ECDSAP256SHA256, KSK, public, ready, active+
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, key, tag 16843, algorithm ECDSAP256SHA256, public, active
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, signing started
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, successfully signed
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] loaded, serial 2 -> 3 -> 2, 1731 bytes
Oct 11 14:13:59 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, next signing at 2021-10-13T20:13:48+0200

Po rekonfiguraci si démon načetl zónový soubor (verze 1), aplikoval na něj changeset s DNSSEC (verze 2) a pak aktualizoval DNSSEC (verze 3). Protože byl výsledek podepisování beze změny, zůstalo se u verze 2. Celý obsah zóny se také uložil do žurnálu jako speciální changeset (zone-in-journal), který se používá při výpočtu rozdílu oproti zónovému souboru. Tento changeset logicky neobsahuje sekci s odebranými záznamy:

$ sudo kjournalprint /var/lib/knot/journal/ xdp.cz
;; Zone-in-journal, serial: 2, changeset: 1
;; Added
xdp.cz.                 300 SOA ns1.xdp.cz. knot-dns.nic.cz. 2 36000 600 864000 300
xdp.cz.                 300 NS  ns1.xdp.cz.
xdp.cz.                 300 NS  ns2.xdp.cz.
xdp.cz.                 300 DNSKEY  256 3 13 UGwIkwzLMpQMkfcct1TRfY9yTpf2Tf9g7W2F1j3XEwh2BWNjve3Ul7EA1CYBEDfuQFNvySyv0Vbm07GOwUVPIw==
xdp.cz.                 300 DNSKEY  257 3 13 ONGSk6Yko2ZDmzlASEh6H8ZOnVv2lrjLU2CCJKH6QEaevH1vlH42sSDd+kCngJ4FKvXGpazCtAPbjHby67iBxA==
xdp.cz.                 0   CDS 32114 13 2 3EA51B0EE57236721C664C873A23579D8A2BBF9FFE9DBB2E192D8CD6D173EE5B
xdp.cz.                 0   CDNSKEY 257 3 13 ONGSk6Yko2ZDmzlASEh6H8ZOnVv2lrjLU2CCJKH6QEaevH1vlH42sSDd+kCngJ4FKvXGpazCtAPbjHby67iBxA==
ns1.xdp.cz.             300 AAAA    2001:1488:ac15:ff30::28
ns2.xdp.cz.             300 AAAA    2001:1488:ac15:ff30::29
xdp.cz.                 300 RRSIG   NS 13 2 300 20211020181348 20211006164348 16843 xdp.cz. Ti9iWvD5Bg+s7axUeETeu0pc0qhVw5quPgZQOGSDPTnzKLsHV/E4RJk6yf6pOowp5qbOvqFDWevSqeJ0uq6gRA==
xdp.cz.                 300 RRSIG   SOA 13 2 300 20211020181348 20211006164348 16843 xdp.cz. WBpdVCo4Lie8W723QMuJw2fSf9asc+H4iokHt4J23tvBlacE9oGuTGoxF206CRkxgdZNJsF+9LphBXHtksm/qQ==
xdp.cz.                 300 RRSIG   NSEC 13 2 300 20211020181348 20211006164348 16843 xdp.cz. r3Vmv+0T2oa2DtvKK5NTOZuZEBKNRwC9v8Wp0S0Lmyc+7gGJkn6GHHGmCehoc/Sw8HxYA55RPK9jHFzunxGNDQ==
xdp.cz.                 300 RRSIG   DNSKEY 13 2 300 20211020181348 20211006164348 32114 xdp.cz. VvXR/LemDmeqxuYC3Bb2Dcrr9JXl6EXKaOeaIl1X/6nW44ldNWwDSdwLy26yhzt87DlV3MZkjEew/VZLZzAN2w==
xdp.cz.                 0   RRSIG   CDS 13 2 0 20211020181348 20211006164348 32114 xdp.cz. +g42GFh0crOwB03X7xvz6RpQk6EQCAnH9gE1bnfcsnowNgPXDoa1ikImr9zpP+/jCB6vbPNNJZfuqYXxn91VNA==
xdp.cz.                 0   RRSIG   CDNSKEY 13 2 0 20211020181348 20211006164348 32114 xdp.cz. rmiLZIezqVhCFamU+lmE9DN0i9U3pwzowr/tZemyVpldrR8TopXI2/o+izNzxMbfa+9sS2fHDcGhCKnFutqHzQ==
ns1.xdp.cz.             300 RRSIG   AAAA 13 3 300 20211020181348 20211006164348 16843 xdp.cz. togaA5uet7XtYjeG0n2265V46L4C8VUSa+Tg2K0DRqNh1xc8EqHlm6E3WsdSTvo9ruA5IQrDhgrnRe7qhkY0Pg==
ns1.xdp.cz.             300 RRSIG   NSEC 13 3 300 20211020181348 20211006164348 16843 xdp.cz. DkQCADKBGf29vlLvqRb5eCDKgqq0B9pl/yn1nZV8d3bj1BzBzzfdOM0BlAnlH10+Hto4VtysOLoxKvfBfsvszQ==
ns2.xdp.cz.             300 RRSIG   AAAA 13 3 300 20211020181348 20211006164348 16843 xdp.cz. wbJZMA9F1z4sHo3G3qupxDNRH9o5SI0rPLbB5DYl9X/pJs/ugSIUF1fLgnoDTGL9vvvSWbWJch5eL0mN7HFmvw==
ns2.xdp.cz.             300 RRSIG   NSEC 13 3 300 20211020181348 20211006164348 16843 xdp.cz. 4c6Ni1vEyduKa0lZ4LtcFWQCqqD4u+mHt35NE7NunJ8M5PEMb7gNga787k3jFSQl4CJDsWrZCUnM+Sj1yaowOQ==
xdp.cz.                 300 NSEC    ns1.xdp.cz. NS SOA RRSIG NSEC DNSKEY CDS CDNSKEY
ns1.xdp.cz.             300 NSEC    ns2.xdp.cz. AAAA RRSIG NSEC
ns2.xdp.cz.             300 NSEC    xdp.cz. AAAA RRSIG NSEC

S vylepšenou konfigurací vyzkoušíme nové chování. Do zónového souboru přidáme záznam, např.:

xdp.cz.      TXT   "DNSSEC is easy!"

Po potvrzení sudo systemctl reload knot vidíme:

Oct 11 14:43:33 ns1.xdp.cz systemd[1]: Reloaded Knot DNS server.
Oct 11 14:43:33 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] zone file parsed, serial corrected 1 -> 3
Oct 11 14:43:33 ns1.xdp.cz knotd[61008]: notice: [xdp.cz.] DNSSEC, KSK submission, waiting for confirmation
Oct 11 14:43:33 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, key, tag 32114, algorithm ECDSAP256SHA256, KSK, public, ready, active+
Oct 11 14:43:33 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, key, tag 16843, algorithm ECDSAP256SHA256, public, active
Oct 11 14:43:33 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, signing started
Oct 11 14:43:33 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, successfully signed
Oct 11 14:43:33 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] loaded, serial 2 -> 3, 1873 bytes
Oct 11 14:43:33 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] DNSSEC, next signing at 2021-10-13T20:13:48+0200
Oct 11 14:43:34 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] notify, outgoing, remote 2001:1488:ac15:ff30::29@53, serial 3
Oct 11 14:43:34 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] IXFR, outgoing, remote 2001:1488:ac15:ff30::29@60466, started, serial 2 -> 3
Oct 11 14:43:34 ns1.xdp.cz knotd[61008]: info: [xdp.cz.] IXFR, outgoing, remote 2001:1488:ac15:ff30::29@60466, finished, 0.00 seconds, 1 messages, 853 bytes

Výsledná zóna verze 3 byla přenesena na sekundární server pomocí IXFR. Obsah žurnálu obsahuje další changeset:

$ sudo kjournalprint /var/lib/knot/journal/ xdp.cz
;; Zone-in-journal, serial: 2, changeset: 1
;; Added
xdp.cz.                 300 SOA ns1.xdp.cz. knot-dns.nic.cz. 2 36000 600 864000 300
...
;; Changes between zone versions: 2 -> 3, changeset: 2
;; Removed
xdp.cz.                 300 SOA ns1.xdp.cz. knot-dns.nic.cz. 2 36000 600 864000 300
xdp.cz.                 300 RRSIG   SOA 13 2 300 20211020181348 20211006164348 16843 xdp.cz. WBpdVCo4Lie8W723QMuJw2fSf9asc+H4iokHt4J23tvBlacE9oGuTGoxF206CRkxgdZNJsF+9LphBXHtksm/qQ==
xdp.cz.                 300 RRSIG   NSEC 13 2 300 20211020181348 20211006164348 16843 xdp.cz. r3Vmv+0T2oa2DtvKK5NTOZuZEBKNRwC9v8Wp0S0Lmyc+7gGJkn6GHHGmCehoc/Sw8HxYA55RPK9jHFzunxGNDQ==
xdp.cz.                 300 NSEC    ns1.xdp.cz. NS SOA RRSIG NSEC DNSKEY CDS CDNSKEY
;; Added
xdp.cz.                 300 SOA ns1.xdp.cz. knot-dns.nic.cz. 3 36000 600 864000 300
xdp.cz.                 300 TXT "DNSSEC is easy!"
xdp.cz.                 300 RRSIG   SOA 13 2 300 20211025124333 20211011111333 16843 xdp.cz. uzW/45IFKZFM2ZpKPOwdwTI1uhYpE7iiTN/3GvK3Cyl8Ijjxq+esg226f/30clEwOrhVtQZHTFy/9O5xuhFZ/A==
xdp.cz.                 300 RRSIG   TXT 13 2 300 20211025124333 20211011111333 16843 xdp.cz. i3XAmVJswTt7d8c58vwdMQI0p+VD/XMppm5gmsDZP7lU4UbangbwFahLB4+IJiKsp3c0q43oz1igFoR+6YLscA==
xdp.cz.                 300 RRSIG   NSEC 13 2 300 20211025124333 20211011111333 16843 xdp.cz. qwPAxoLJOqBpirkK+OM0hZQpJSjGg7580fa2DIg/McBarXgH5JT7ZEdSQ/4oisBGMXcG5zLI7ck6MDIH02ALfA==
xdp.cz.                 300 NSEC    ns1.xdp.cz. NS SOA TXT RRSIG NSEC DNSKEY CDS CDNSKEY

Na sekundárním serveru žurnál nepotřebujeme a vypneme ho přidáním volby  journal-content: none.

Nastavení žurnálu

Databáze žurnálu má několik konfigurovatelných limitů:

  1. maximální velikost databáze (journal-db-max-size) – společný limit pro všechny zóny; omezuje obsazení diskového prostoru databází a neměl by být nikdy dosažen!
  2. maximální obsazení zónou (zone-max-usage) – omezení konkrétní zóny na součet velikostí všech jejích changesetů,
  3. Maximální hloubka historie zóny (zone-max-depth) – omezení konkrétní zóny na počet jejích changesetů.

Tyto limity je třeba zvážit v kontextu s plánovaným počtem zón a s jejich velikostmi. Jejich výchozí hodnoty jsou v dokumentaci. Při dosažení limitu 2. nebo 3. dojde k aktualizaci zónového souboru, pokud není zakázána, a případně ke sloučení nejstarších changesetů. Tím se uvolní místo pro nové changesety. Doporučené nastavení je takové, kdy součet limitů 2. přes všechny zóny je menší než hodnota limitu 1.

Sériové číslo zóny

Správná funkce zónových transferů a žurnálu vyžaduje navyšování sériového čísla zóny (SOA serial) současně se změnami v zóně! O kolik se hodnota bude navyšovat a jaká byla prvotní hodnota, je až na jedno omezení čistě na volbě uživatele. Protože jde o 32bitové neznaménkové číslo, může nabývat hodnot z intervalu [0, 4294967295] a aby byla dodržena sériová aritmetika (RFC 1982), je hodnota maximálního navýšení omezena na 2147483647. Stojí za povšimnutí, že např.:

  • 2147483649 < 4294967295
  • 2147483649 < 0
  • 2147483649 vs 1 není definováno
  • 2147483649 > 2

V případě automatické správy sériového čísla je možné zvolit jeho sémantiku. Volba serial-policy u nastavení zóny nabízí tyto interpretace:

  • increment  – obecné číslo, které se navyšuje o hodnotu 1,
  • unixtime  – hodnota unixového času v době změny zóny,
  • dateserial  – kombinace data a revize ve formě YYYYMMDDnn (rok, měsíc, den, revize).

Na primárním serveru rozšíříme konfiguraci zóny o položku serial-policy: dateserial a potvrdíme sudo systemctl reload knot. Démon načetl novou konfiguraci, ale protože se nezměnila zóna, tak sériové číslo zůstalo původní (aktuálně hodnota 5). Příkazem sudo knotc zone-sign xdp.cz donutíme server přepodepsat zónu:

Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] control, received command 'zone-sign'
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] DNSSEC, dropping previous signatures, re-signing zone
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: notice: [xdp.cz.] DNSSEC, KSK submission, waiting for confirmation
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] DNSSEC, key, tag 32114, algorithm ECDSAP256SHA256, KSK, public, ready, active+
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] DNSSEC, key, tag 16843, algorithm ECDSAP256SHA256, public, active
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] DNSSEC, signing started
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] DNSSEC, successfully signed
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] DNSSEC, next signing at 2021-10-26T16:03:08+0200
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] notify, outgoing, remote 2001:1488:ac15:ff30::29@53, serial 2021101900
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] IXFR, outgoing, remote 2001:1488:ac15:ff30::29@60586, started, serial 5 -> 2021101900
Oct 19 16:03:08 ns1.xdp.cz knotd[70458]: info: [xdp.cz.] IXFR, outgoing, remote 2001:1488:ac15:ff30::29@60586, finished, 0.00 seconds, 1 messages, 2507 bytes

Vidíme, že se sériové číslo povýšilo na hodnotu 2021101900. Můžeme ověřit i dotazem:

$ kdig @ns1.xdp.cz xdp.cz soa
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 1510
;; Flags: qr aa rd; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; xdp.cz.                  IN  SOA

;; ANSWER SECTION:
xdp.cz.                 300 IN  SOA ns1.xdp.cz. knot-dns.nic.cz. 2021101900 36000 600 864000 300

;; Received 77 B
;; Time 2021-10-19 16:12:03 CEST
;; From 2001:1488:ac15:ff30::28@53(UDP) in 0.0 ms

Mrazení zóny

Abychom zamezili souběhu úpravy zóny přes zónový soubor a změny zóny démonem, je možné pozastavit automatické zásahy tzv. zmrazením zóny. Toho docílíme zavoláním příkazu sudo knotc -b zone-freeze xdp.cz. Parametr -b zajistí, že příkaz vyčká na dokončení operace. Ověříme příkazem:

$ sudo knotc zone-status xdp.cz +freeze
[xdp.cz.] freeze: yes

Když je zóna zmrazená, můžeme bez obav upravovat zónový soubor. Po dokončení ručních úprav, zónu rozmrazíme příkazem sudo knotc zone-thaw xdp.cz, abychom odblokovali automatické operace.

Na první pohled se může zdát správa zóny složitá, což je dáno velkou různorodostí uživatelských požadavků, ale jakmile si najdete jeden svůj přístup, který konzistentně dodržuje, stane se z toho rutinní záležitost.

bitcoin školení listopad 24

V příštím díle se podíváme na zónové transfery.

(Původně vyšlo na blogu CZ.NIC.)

Autor článku

Vystudoval softwarové inženýrství na Fakultě jaderné a fyzikálně inženýrské ČVUT v Praze. V Laboratořích sdružení CZ.NIC má na starosti vývoj projektu Knot DNS, jehož je členem od roku 2012.