Hlavní navigace

Knot DNS: zónové transfery aneb přenos zón mezi servery

2. 11. 2021
Doba čtení: 13 minut

Sdílet

 Autor: Depositphotos
V úvodním dílu jsme si zprovoznili automatickou synchronizaci zóny na sekundárním serveru. Dnes si ukážeme, jaké jsou další možnosti nastavení zónových transferů a co je jejich obsahem.

Ještě připomeňme, že DNS vyžaduje pro správný chod nejen protokol UDP, ale i protokol TCP. Zónové transfery využívají výhradně TCP!

Role serveru

Zónový transfer (tzv. XFR) probíhá vždy mezi dvěma servery, a to vždy v jednom, předem stanoveném, směru. Tento směr je určen rolí serveru:

  • Primární (master) server – zdroj obsahu zóny,
  • Sekundární (slave) server – příjemce obsahu zóny.

Poznámka: dříve se označení „primární server“ používalo v trochu jiném kontextu, ale na základě RFC 8499 je zavedeno nové označení „primární master“. Nicméně jde spíše o historický koncept, který nemá v praxi významný užitek.

Na jeden server může mít nakonfigurováno více zónových transferů a pro jednu zónu může být v roli primárního i sekundárního serveru (vždy vzhledem k jinému vzdálenému serveru). Role serveru se u Knot DNS rozlišuje pouze na základě konfigurační volby master v nastavení zóny, kdy její přítomnost určuje, že jde o sekundární server.

Definice vzdáleného serveru

Pro konfiguraci transferu je nutné nejprve definovat vzdálený server v sekci remote. Jeho pojmenování je libovolné a nejdůležitějším parametrem je jeho síťová adresa. Na primárním serveru máme již tuto definici:

remote:
  - id: secondary
    address: 2001:1488:ac15:ff30::29

V praxi je DNS server velmi často dostupný pod více adresami. Většinou má alespoň jednu IPv4 a jednu IPv6 adresu. Toho můžeme využít i při komunikaci mezi servery, kdy výpadek některé z adres neovlivní funkci zónových transferů. Pro ukázku přidejme v definici sekundárního serveru jednu (nefunkční) IPv4 adresu 192.168.1.29:

remote:
  - id: secondary
    address: [192.168.1.29, 2001:1488:ac15:ff30::29]

Po načtení nové konfigurace a explicitním poslání NOTIFY příkazem sudo knotc zone-notify xdp.cz vidíme v logu první neúspěšný pokus s nefunkční adresou, ale s další adresou ze seznamu už operace proběhla v pořádku (případné další adresy v pořadí by se už nezkoušely):

Oct 26 11:56:37 ns1.xdp.cz knotd[130576]: info: [xdp.cz.] control, received command 'zone-notify'
Oct 26 11:56:37 ns1.xdp.cz knotd[130576]: warning: [xdp.cz.] notify, outgoing, remote 192.168.1.29@53, failed (network is unreachable)
Oct 26 11:56:37 ns1.xdp.cz knotd[130576]: info: [xdp.cz.] notify, outgoing, remote 2001:1488:ac15:ff30::29@53, serial 2021101900

Dalším častým scénářem je více sekundárních nebo dokonce i primárních serverů. V konfiguraci definujeme další (nefunkční) server broken_secondary se dvěma adresami:

remote:
  - id: secondary
    address: [192.168.1.29, 2001:1488:ac15:ff30::29]
  - id: broken_secondary
    address: [192.168.1.27, 2001:1488:ac15:ff30::27]

Dále rozšíříme seznam příjemců NOTIFY v nastavení zóny notify: [secondary, broken_secondary]. Po načtení nové konfigurace a poslání NOTIFY vidíme:

Oct 26 12:35:23 ns1.xdp.cz knotd[130576]: info: [xdp.cz.] control, received command 'zone-notify'
Oct 26 12:35:23 ns1.xdp.cz knotd[130576]: warning: [xdp.cz.] notify, outgoing, remote 192.168.1.29@53, failed (network is unreachable)
Oct 26 12:35:23 ns1.xdp.cz knotd[130576]: info: [xdp.cz.] notify, outgoing, remote 2001:1488:ac15:ff30::29@53, serial 2021101900
Oct 26 12:35:23 ns1.xdp.cz knotd[130576]: warning: [xdp.cz.] notify, outgoing, remote 192.168.1.27@53, failed (network is unreachable)
Oct 26 12:35:26 ns1.xdp.cz knotd[130576]: warning: [xdp.cz.] notify, outgoing, remote 2001:1488:ac15:ff30::27@53, failed (connection reset)
Oct 26 12:35:26 ns1.xdp.cz knotd[130576]: error: [xdp.cz.] zone event 'notify' failed (failed)

Oproti předchozí situaci s více adresami je zde jeden významný rozdíl. Operace NOTIFY se vykonala pro všechny uvedené servery, bez ohledu na to, zda pro některý z nich byla úspěšná. U druhého serveru ale nebyla funkční ani jedna adresa a výsledkem je chyba.

Protože se jedná o častou chybu v návrhu konfigurace, ještě stručný souhrn. Při konfiguraci více adres, jakožto adresátů NOTIFY nebo primárních serverů, je uvedeme:

  • v rámci jedné definice remote, když se jedná o seznam alternativních adres,
  • jako více definic remote, když adresy patří k nezávislým serverům.

Pokud lokální server poslouchá na více adresách, je na operačním systému, kterou adresu použije jako zdrojovou při komunikaci se vzdáleným serverem! V některých nasazení to může být problém a je nutné explicitně specifikovat zdrojovou adresu. Toho docílíme přidáním položky via do popisu vzdáleného serveru. Například:

remote:
  - id: secondary
    address: 2001:1488:ac15:ff30::29
    via: 2001:1488:ac15:ff30::28

Zabezpečení komunikace

Nejstarším a nejčastějším prostředkem pro zajištění autentičnosti a integrity komunikace mezi autoritativními DNS servery je protokol TSIG, který využívá kryptografickou hašovací funkci v kombinaci s tajným klíčem. Nevýhodou je, že klíč je sdílen mezi všemi komunikujícími servery a je uložen v konfiguraci. Takto zabezpečená DNS zpráva obsahuje navíc záznam TSIG, který se skládá z kryptografického haše, časových údajů o jeho platnosti a pár dalších informací. Klíč můžeme vygenerovat následujícím příkazem, jehož jediným povinným parametrem je název klíče:

$ keymgr -t key.xdp.cz.
# hmac-sha256:key.xdp.cz:be99FnOGydC9k4bgEb36YsJLceJ40P9lf+3VPEpNMYo=
key:
  - id: key.xdp.cz.
    algorithm: hmac-sha256
    secret: be99FnOGydC9k4bgEb36YsJLceJ40P9lf+3VPEpNMYo=

Zakomentovaný řádek lze využít jako parametr do nástroje kdig. Zbytek zkopírujeme do konfigurace primárního serveru a klíč uvedeme u popisu serveru:

key:
  - id: key.xdp.cz.
    algorithm: hmac-sha256
    secret: be99FnOGydC9k4bgEb36YsJLceJ40P9lf+3VPEpNMYo=

remote:
  - id: secondary
    address: 2001:1488:ac15:ff30::29
    key: key.xdp.cz.

Obdobně upravíme konfiguraci na sekundárním serveru:

key:
  - id: key.xdp.cz.
    algorithm: hmac-sha256
    secret: be99FnOGydC9k4bgEb36YsJLceJ40P9lf+3VPEpNMYo=

remote:
  - id: primary
    address: 2001:1488:ac15:ff30::28
    key: key.xdp.cz.

Při řešení problémů nejen u zónových transferů je výhodné zapnout ladící režim logování, kdy se zobrazí i logy týkající se vyhodnocení ACL pravidel. To provedeme uvedením debug v sekci log konfigurace:

log:
  - target: syslog
    any: debug

Po načtení nové konfigurace a například přepodepsání zóny, vidíme na primárním serveru úspěšný transfer s využitím TSIG:

Oct 26 13:57:13 ns1.xdp.cz knotd[130576]: info: [xdp.cz.] notify, outgoing, remote 2001:1488:ac15:ff30::29@53, serial 2021102602
Oct 26 13:57:13 ns1.xdp.cz knotd[130576]: debug: [xdp.cz.] ACL, allowed, action query, remote 2001:1488:ac15:ff30::29@60702, key 'key.xdp.cz.'
Oct 26 13:57:13 ns1.xdp.cz knotd[130576]: debug: [xdp.cz.] ACL, allowed, action transfer, remote 2001:1488:ac15:ff30::29@60702, key 'key.xdp.cz.'
Oct 26 13:57:13 ns1.xdp.cz knotd[130576]: info: [xdp.cz.] IXFR, outgoing, remote 2001:1488:ac15:ff30::29@60702, started, serial 2021102600 -> 2021102602
Oct 26 13:57:13 ns1.xdp.cz knotd[130576]: info: [xdp.cz.] IXFR, outgoing, remote 2001:1488:ac15:ff30::29@60702, finished, 0.00 seconds, 1 messages, 4873 bytes

A výsledek na sekundárním serveru:

Oct 26 13:57:13 ns2.xdp.cz knotd[117506]: debug: [xdp.cz.] ACL, allowed, action notify, remote 2001:1488:ac15:ff30::28@49112, key 'key.xdp.cz.'
Oct 26 13:57:13 ns2.xdp.cz knotd[117506]: info: [xdp.cz.] notify, incoming, remote 2001:1488:ac15:ff30::28@49112, serial 2021102602
Oct 26 13:57:13 ns2.xdp.cz knotd[117506]: info: [xdp.cz.] refresh, remote 2001:1488:ac15:ff30::28@53, remote serial 2021102602, zone is outdated
Oct 26 13:57:13 ns2.xdp.cz knotd[117506]: info: [xdp.cz.] IXFR, incoming, remote 2001:1488:ac15:ff30::28@53, started
Oct 26 13:57:13 ns2.xdp.cz knotd[117506]: info: [xdp.cz.] IXFR, incoming, remote 2001:1488:ac15:ff30::28@53, finished, 0.00 seconds, 1 messages, 4873 bytes
Oct 26 13:57:13 ns2.xdp.cz knotd[117506]: info: [xdp.cz.] refresh, remote 2001:1488:ac15:ff30::28@53, zone updated, 0.01 seconds, serial 2021102600 -> 2021102602
Oct 26 13:57:13 ns2.xdp.cz knotd[117506]: info: [xdp.cz.] zone file updated, serial 2021102600 -> 2021102602

Během provedené synchronizace zóny byl TSIG použit k:

  • zabezpečení zprávy NOTIFY,
  • ověření zprávy NOTIFY,
  • zabezpečení dotazu SOA, který se používá pro zjištění aktuální verze zóny,
  • ověření dotazu SOA,
  • zabezpečení dotazu na IXFR,
  • ověření odpovědi na IXFR.

Pro úplnost ještě uvedeme ukázku sitace, kdy na sekundárním serveru chybí nastavení TSIG:

Oct 26 13:54:13 ns1.xdp.cz knotd[130576]: warning: [xdp.cz.] notify, outgoing, remote 2001:1488:ac15:ff30::29@53, server responded with error 'BADKEY'
Oct 26 13:54:13 ns1.xdp.cz knotd[130576]: error: [xdp.cz.] zone event 'notify' failed (failed)

A sekundární server:

Oct 26 13:54:13 ns2.xdp.cz knotd[117506]: debug: [xdp.cz.] ACL, denied, action notify, remote 2001:1488:ac15:ff30::28@49110, key 'key.xdp.cz.

S postupným trendem šifrování síťového provozu se začíná uplatňovat TLS i k zabezpečení zónových transferů. Tato funkce by měla být dostupná v některé z dalších verzi Knot DNS.

Autorizace operací

Jak již bylo uvedeno, některé DNS požadavky vyžadují explicitní oprávnění. Sem patří přijetí NOTIFY na sekundárním serveru a přijetí žádosti o XFR na primárním serveru. Pro definici autorizovaných operací slouží konfigurační sekce ACL. Každé pravidlo má opět svůj identifikátor a jedinou povinnou položkou je action, což je výčet autorizovaných operací. Přítomnost dalších položek omezuje účinnost pravidla. Většinou se pravidlo vztahuje ke konkrétním adresám, adresním rozsahům či konkrétním serverům remote. Případně v kombinaci s jedním nebo více klíči TSIG. Kdybychom v našem příkladu:

acl:
  - id: acl_secondary
    remote: secondary
    action: transfer

nechtěli použít odkaz na jeden remote secondary, ale chtěli povolit třeba dva adresní rozsahy /64 a 192.168.1.1–192.168.1.10 a vyžadovali autorizaci klíčem key.xdp.cz., použili bychom variantu:

acl:
  - id: acl_secondary
    address: [2001:1488:ac15:ff30::29/64, 192.168.1.1-192.168.1.10]
    key: key.xdp.cz.
    action: transfer

Když jsou všechna potřebná pravidla připravená, tak se uvedou ve vhodném pořadí jako seznam hodnot položky acl v nastavení příslušné zóny. Pravidla jsou vyhodnocována zleva doprava.

Inspekce transferů

Někdy se může hodit ručně dotazovat zónový transfer. K tomu můžeme využít kdig. Kompletní zónu získáme zasláním dotazu na AXFR (parametr -y je popis klíče TSIG):

$ kdig @ns1.xdp.cz xdp.cz axfr -y hmac-sha256:key.xdp.cz:be99FnOGydC9k4bgEb36YsJLceJ40P9lf+3VPEpNMYo=
;; AXFR for xdp.cz.
xdp.cz.                 300 IN  SOA ns1.xdp.cz. knot-dns.nic.cz. 2021102701 36000 600 864000 300
xdp.cz.                 300 IN  NS  ns1.xdp.cz.
xdp.cz.                 300 IN  NS  ns2.xdp.cz.
xdp.cz.                 300 IN  TXT "DNSSEC is easy!"
xdp.cz.                 300 IN  RRSIG   NS 13 2 300 20211110135944 20211027122944 16843 xdp.cz. aXO3URV6xFdOaDSMH4uYWJQqXCeUYbprf0I+1lvGpj237S8Zcbie7jU2q65pzaQnQs0a7K829z2ySGQivo5OBw==
xdp.cz.                 300 IN  RRSIG   SOA 13 2 300 20211110135944 20211027122944 16843 xdp.cz. Tf07Ok5uNcTkufOjjis027Atv+sjBKxSv/YR6xsEbWGUlRv2UWcZO1C5mAEp//Zm8m0aABnoPYaPUhpxRc57uA==
xdp.cz.                 300 IN  RRSIG   TXT 13 2 300 20211110135944 20211027122944 16843 xdp.cz. wHfRMI9rbunNivAwA2xgYdEkQtdprBX1sBqsYwWm4cTEDFGeb6J/fuP9aAG3Qsy0ESbD132gUdaPNqfp60NlpA==
xdp.cz.                 300 IN  RRSIG   NSEC 13 2 300 20211110135944 20211027122944 16843 xdp.cz. GYzV6DNbfNHoDULeXx0K9h4jwWhoTdO++f67vH+dmTZT4YFkJ5raVW2+YvZ6DDTz4tC2oNMXdz5lQ9b8+/HJ5Q==
xdp.cz.                 300 IN  RRSIG   DNSKEY 13 2 300 20211110135944 20211027122944 32114 xdp.cz. ecKL0F++90FqNBFzDrwQkgMco9mlxZk+nN3kTV8P8BYnvoThsToSkQKcQWb9ESNCc+7l+YNE5wu97Ya7A0JhFw==
xdp.cz.                 0   IN  RRSIG   CDS 13 2 0 20211110135944 20211027122944 32114 xdp.cz. JCzZjjwbkSQlA6CPZrNJgADgownaa5bsLu1T4AequEC2Z2BIOOKPaXKazDz1cPZiaL4Dy7B0fVQA3vf6+E4JjQ==
xdp.cz.                 0   IN  RRSIG   CDNSKEY 13 2 0 20211110135944 20211027122944 32114 xdp.cz. 4mZPHOKFDBAKOAuSP8fhpZDqvDwLW2tUxr+114/zsXXpQ8FA2ZPhf7j81sQkYa78h3icP6J7R9bt1+SmOAXfdg==
xdp.cz.                 300 IN  NSEC    ns1.xdp.cz. NS SOA TXT RRSIG NSEC DNSKEY CDS CDNSKEY
xdp.cz.                 300 IN  DNSKEY  256 3 13 UGwIkwzLMpQMkfcct1TRfY9yTpf2Tf9g7W2F1j3XEwh2BWNjve3Ul7EA1CYBEDfuQFNvySyv0Vbm07GOwUVPIw==
xdp.cz.                 300 IN  DNSKEY  257 3 13 ONGSk6Yko2ZDmzlASEh6H8ZOnVv2lrjLU2CCJKH6QEaevH1vlH42sSDd+kCngJ4FKvXGpazCtAPbjHby67iBxA==
xdp.cz.                 0   IN  CDS 32114 13 2 3EA51B0EE57236721C664C873A23579D8A2BBF9FFE9DBB2E192D8CD6D173EE5B
xdp.cz.                 0   IN  CDNSKEY 257 3 13 ONGSk6Yko2ZDmzlASEh6H8ZOnVv2lrjLU2CCJKH6QEaevH1vlH42sSDd+kCngJ4FKvXGpazCtAPbjHby67iBxA==
ns1.xdp.cz.             300 IN  AAAA    2001:1488:ac15:ff30::28
ns1.xdp.cz.             300 IN  RRSIG   AAAA 13 3 300 20211110135944 20211027122944 16843 xdp.cz. XrAZCOEqF1xaWbJel3lxGNiPQg+6RaLP9Nrwn4Nt1rkbrn81d9gFzKe9IAmfVKGRvOUNjBgu4Hdy1UX2g554Iw==
ns1.xdp.cz.             300 IN  RRSIG   NSEC 13 3 300 20211110135944 20211027122944 16843 xdp.cz. JYL3wX1Ip1rFNKczb+VJ+mJYSpIHPEhrapkYMPIw2AiRZZn57qIBs07A50+cgpsMDjdEARKhYFHqb4NZj7M44g==
ns1.xdp.cz.             300 IN  NSEC    ns2.xdp.cz. AAAA RRSIG NSEC
ns2.xdp.cz.             300 IN  AAAA    2001:1488:ac15:ff30::29
ns2.xdp.cz.             300 IN  RRSIG   AAAA 13 3 300 20211110135944 20211027122944 16843 xdp.cz. Ocj77JWAT5kOoTCAsYbWLCBa5izwl6Ckh/j3cVL2fN0EjcVAPBCJYipYeoiFxlnMjk/GVxarTQb6YJ5fN7n4lA==
ns2.xdp.cz.             300 IN  RRSIG   NSEC 13 3 300 20211110135944 20211027122944 16843 xdp.cz. 1dJNHed0CUzx+A7SFAKv74IEaivIALdycFw+/TjSGPRRdXKpbPDBaO0pnlSpbp8yzT/LNFLcSyBJkAAvbZUYMw==
ns2.xdp.cz.             300 IN  NSEC    xdp.cz. AAAA RRSIG NSEC
xdp.cz.                 300 IN  SOA ns1.xdp.cz. knot-dns.nic.cz. 2021102701 36000 600 864000 300
key.xdp.cz.             0   ANY TSIG    hmac-sha256. 1635343251 300 32 LGBLgjnCTmvcN/nDUsKJTWhVb5ivHf2IgXYTtpVnpak= 19922 NOERROR 0
;; Received 1845 B (1 messages, 25 records)
;; Time 2021-10-27 16:00:51 CEST
;; From 2001:1488:ac15:ff30::28@53(TCP) in 9.0 ms

Struktura odpovědi se skládá z úvodního a koncového záznamu SOA a mezi nimi je obsah zóny. Jako poslední je záznam TSIG, který se po ověření na sekundárním serveru odstraní a není součástí zóny. Odpověď na XFR může být obsažena i v sekvenci více DNS zpráv.

V případě rozdílového transferu použijeme dotaz ve tvaru IXFR=initial_serial. Např. pro rozdíl od verze 2021102700:

$ kdig @ns1.xdp.cz xdp.cz ixfr=2021102700 -y hmac-sha256:key.xdp.cz:be99FnOGydC9k4bgEb36YsJLceJ40P9lf+3VPEpNMYo=
;; IXFR for xdp.cz.
xdp.cz.                 300 IN  SOA ns1.xdp.cz. knot-dns.nic.cz. 2021102701 36000 600 864000 300
xdp.cz.                 300 IN  SOA ns1.xdp.cz. knot-dns.nic.cz. 2021102700 36000 600 864000 300
xdp.cz.                 300 IN  RRSIG   NS 13 2 300 20211109121318 20211026104318 16843 xdp.cz. vUf9hJYJkDIVWW/k1qi2dpUArAnOdjIREA0XxeJISpw4BmMe/PFHLKO/6ubwDF3PZ3ErweF2ZCOAaJ8h04I3Dg==
xdp.cz.                 300 IN  RRSIG   SOA 13 2 300 20211110135910 20211027122910 16843 xdp.cz. z0OHZolM1u+eowmotT51L9MUR7dnKGfq1FykWxgUuy70d/R2Zg6tJmRykBWgKGV6PdOyolxI8I4y0JaRvATUcQ==
xdp.cz.                 300 IN  RRSIG   TXT 13 2 300 20211109121318 20211026104318 16843 xdp.cz. 4YM8OE6jwys8Rum1+Qi/S/gnfkC8SqlW3uVJUolfZgQEM3bkn6xAXqUn39a0YYr/gjq0FYqweOE+Jte93YeZvQ==
xdp.cz.                 300 IN  RRSIG   NSEC 13 2 300 20211110135910 20211027122910 16843 xdp.cz. zNoqUJPQQDt4wm2rBN+CtKNZJmgJx8e7s6mbUA/e7cUSlToFthgUICjsQnHCgSjTA6/j8rZ/jN6Zwy1c5uGrCg==
xdp.cz.                 300 IN  RRSIG   DNSKEY 13 2 300 20211109121318 20211026104318 32114 xdp.cz. mLVYNkZ74+iMLPm2mphUqUytq56yI3pVV993b10SjPbtf6dkVU+SoDLBbeyGJfPbTq6FUn/3g7JbnBAKe3vHig==
xdp.cz.                 0   IN  RRSIG   CDS 13 2 0 20211109121318 20211026104318 32114 xdp.cz. A5v8jNIKbMu5VBRpa7a0WfbN5LPbC5MuH1FCgevEBNHMR/JT/gSsZg47T+vj2bVRFe1umvTzxSFsCV4gbOOlMA==
xdp.cz.                 0   IN  RRSIG   CDNSKEY 13 2 0 20211109121318 20211026104318 32114 xdp.cz. y45WD9RWukHloFWhW55CyyhQyu1ql6l/5vJSuWgCVv8BmFRKIx/SXQysKISR3GBBBUs9dw7gS1Ldnvc9X5fPSg==
ns1.xdp.cz.             300 IN  RRSIG   AAAA 13 3 300 20211109121318 20211026104318 16843 xdp.cz. wN+o7t1yYLLuUGXK/3F856zOtmqIqD73FmhJrKNLDvRLWVEjIe9SUXcwZSatVr21tgFCvYR2lUEJ9SnEGZmCrQ==
ns1.xdp.cz.             300 IN  RRSIG   NSEC 13 3 300 20211109121318 20211026104318 16843 xdp.cz. +VU3ya9BieVXWPS4ngDx+v0fwbxR0PcUIPRhwcfj9nBJiNAhlzohMztmNlAoJK2lzl6Zir5puLcnX6/0dp2NJA==
ns2.xdp.cz.             300 IN  RRSIG   AAAA 13 3 300 20211109121318 20211026104318 16843 xdp.cz. i+jDdtD07GBshV0VXiEeYqQjQYRHJkSFUC70w2mQpRNm339lmwx5PPhpmf39Ba/l0JF9XuVCSlBuY19bSNXbOg==
ns2.xdp.cz.             300 IN  RRSIG   NSEC 13 3 300 20211109121318 20211026104318 16843 xdp.cz. J2iFKbiSqnE802rWX9oOcljTQ7qBBeb3xxU+2j6NdyDb2db7H2NUuT/EtuRgjOUkFKpTxiVuHnGm7opsFRN+zQ==
xdp.cz.                 300 IN  SOA ns1.xdp.cz. knot-dns.nic.cz. 2021102701 36000 600 864000 300
xdp.cz.                 300 IN  RRSIG   NS 13 2 300 20211110135944 20211027122944 16843 xdp.cz. aXO3URV6xFdOaDSMH4uYWJQqXCeUYbprf0I+1lvGpj237S8Zcbie7jU2q65pzaQnQs0a7K829z2ySGQivo5OBw==
xdp.cz.                 300 IN  RRSIG   SOA 13 2 300 20211110135944 20211027122944 16843 xdp.cz. Tf07Ok5uNcTkufOjjis027Atv+sjBKxSv/YR6xsEbWGUlRv2UWcZO1C5mAEp//Zm8m0aABnoPYaPUhpxRc57uA==
xdp.cz.                 300 IN  RRSIG   TXT 13 2 300 20211110135944 20211027122944 16843 xdp.cz. wHfRMI9rbunNivAwA2xgYdEkQtdprBX1sBqsYwWm4cTEDFGeb6J/fuP9aAG3Qsy0ESbD132gUdaPNqfp60NlpA==
xdp.cz.                 300 IN  RRSIG   NSEC 13 2 300 20211110135944 20211027122944 16843 xdp.cz. GYzV6DNbfNHoDULeXx0K9h4jwWhoTdO++f67vH+dmTZT4YFkJ5raVW2+YvZ6DDTz4tC2oNMXdz5lQ9b8+/HJ5Q==
xdp.cz.                 300 IN  RRSIG   DNSKEY 13 2 300 20211110135944 20211027122944 32114 xdp.cz. ecKL0F++90FqNBFzDrwQkgMco9mlxZk+nN3kTV8P8BYnvoThsToSkQKcQWb9ESNCc+7l+YNE5wu97Ya7A0JhFw==
xdp.cz.                 0   IN  RRSIG   CDS 13 2 0 20211110135944 20211027122944 32114 xdp.cz. JCzZjjwbkSQlA6CPZrNJgADgownaa5bsLu1T4AequEC2Z2BIOOKPaXKazDz1cPZiaL4Dy7B0fVQA3vf6+E4JjQ==
xdp.cz.                 0   IN  RRSIG   CDNSKEY 13 2 0 20211110135944 20211027122944 32114 xdp.cz. 4mZPHOKFDBAKOAuSP8fhpZDqvDwLW2tUxr+114/zsXXpQ8FA2ZPhf7j81sQkYa78h3icP6J7R9bt1+SmOAXfdg==
ns1.xdp.cz.             300 IN  RRSIG   AAAA 13 3 300 20211110135944 20211027122944 16843 xdp.cz. XrAZCOEqF1xaWbJel3lxGNiPQg+6RaLP9Nrwn4Nt1rkbrn81d9gFzKe9IAmfVKGRvOUNjBgu4Hdy1UX2g554Iw==
ns1.xdp.cz.             300 IN  RRSIG   NSEC 13 3 300 20211110135944 20211027122944 16843 xdp.cz. JYL3wX1Ip1rFNKczb+VJ+mJYSpIHPEhrapkYMPIw2AiRZZn57qIBs07A50+cgpsMDjdEARKhYFHqb4NZj7M44g==
ns2.xdp.cz.             300 IN  RRSIG   AAAA 13 3 300 20211110135944 20211027122944 16843 xdp.cz. Ocj77JWAT5kOoTCAsYbWLCBa5izwl6Ckh/j3cVL2fN0EjcVAPBCJYipYeoiFxlnMjk/GVxarTQb6YJ5fN7n4lA==
ns2.xdp.cz.             300 IN  RRSIG   NSEC 13 3 300 20211110135944 20211027122944 16843 xdp.cz. 1dJNHed0CUzx+A7SFAKv74IEaivIALdycFw+/TjSGPRRdXKpbPDBaO0pnlSpbp8yzT/LNFLcSyBJkAAvbZUYMw==
xdp.cz.                 300 IN  SOA ns1.xdp.cz. knot-dns.nic.cz. 2021102701 36000 600 864000 300
key.xdp.cz.             0   ANY TSIG    hmac-sha256. 1635343281 300 32 9QlarnEVTMZ/+OHThbCgVvzpVihlO67k2VvHZpPLDqY= 6092 NOERROR 0
;; Received 2579 B (1 messages, 26 records)
;; Time 2021-10-27 16:01:21 CEST
;; From 2001:1488:ac15:ff30::28@53(TCP) in 7.1 ms

Struktura rozdílové odpovědi se rovněž skládá z úvodního a koncového SOA záznamu, ale mezi nimi je sekvence jednotlivých changesetů. Každý changeset má dvě části, kde každá část rovněž začíná záznamem SOA. Stojí za povšimnutí, že IXFR nemusí být vždy datově úspornější než AXFR.

Posledním užitečným příkladem je ruční zaslání dotazu NOTIFY s volitelným parametrem verze zóny 2021102700 (to je jen nezávazná informace o verzi lokální zóny):

$ kdig @ns2.xdp.cz xdp.cz notify=2021102700 -y hmac-sha256:key.xdp.cz:be99FnOGydC9k4bgEb36YsJLceJ40P9lf+3VPEpNMYo=
;; ->>HEADER<<- opcode: NOTIFY; status: NOERROR; id: 50625
;; Flags: qr; QUERY: 1; ANSWER: 0; AUTHORITY: 0; ADDITIONAL: 1

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

;; TSIG PSEUDOSECTION:
key.xdp.cz.             0   ANY TSIG    hmac-sha256. 1635343754 300 32 ynHorwW+T4JYnYu0eehKEF0x+cy/wmNcity6Zxz1gjU= 50625 NOERROR 0

;; Received 107 B
;; Time 2021-10-27 16:09:14 CEST
;; From 2001:1488:ac15:ff30::29@53(UDP) in 3.2 ms

Odpovědí je jen úspěšné přijetí NOTIFY. Následně sekundární server ověří stav zóny na primárním serveru a případně si ji stáhne.

root_podpora

Příště se vynoříme ze zónových dat a podíváme na konfiguraci Knot DNS obecněji.

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

Byl pro vás článek přínosný?

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.