← Cloudflare DNS / dns / manage-dns-records / reference
Zastíněné záznamy
Když přidáte NS záznam do vaší zóny, vytvoříte delegování subdomény: delegujete tím pravomoc nad danou subdoménou (a vším pod ní) na jinou sadu nameserverů. Jakýkoli záznam, který si ponecháte na této úrovni delegace nebo pod ní, je zastíněný. Zůstává uložen ve vaší zóně, ale delegování přesouvá autoritu nad tímto názvem na delegované nameservery, takže tento záznam není součástí autoritativních dat, která má vaše zóna poskytovat.
Shadow metadata udávají, které záznamy jsou zastíněné, které NS záznamy provádějí zastínění a kolik záznamů každé delegování zastiňuje. Tato informace je dostupná jako pole v odpovědích API a jako upozornění na dashboardu Cloudflare a vrací se pouze v případě, že si o ni výslovně požádáte.
Proč záleží na shadowed records
Delegace přesouvá autoritu nad subdoménou jinam, takže žádný záznam, který umístíte na ni nebo pod ni, není autoritativní, i když se ve vaší zóně stále zobrazuje. Uvažte tento příklad:
sub.example.com NS ns1.example.org.
www.sub.example.com A 192.0.2.1 NS delegování na sub.example.com deleguje autoritu za vše na této úrovni i pod ní, včetně www.sub.example.com, na externí nameservery. Za odpovídání na tento název jsou zodpovědné tyto nameservery, nikoli vaše zóna, takže A záznam, který jste zde přidali, není autoritativním záznamem pro www.sub.example.com.
Problém funguje oběma směry. Přidání NS delegování může zastínit záznamy, na kterých již závisíte, a přidání záznamů pod existující delegování vytvoří záznamy, pro které vaše zóna už není autoritativní. V obou případech se nevrátí žádná chyba, a právě proto jsou shadow metadata užitečná k odhalení problému.
Zastíněné záznamy vznikají přesně dvěma způsoby:
- Přidali jste delegaci nad záznamy, které už na dané úrovni nebo pod ní existovaly, například když subdoménu nasměrujete na externího poskytovatele, ale původní záznamy ponecháte na místě.
- Přidali jste záznamy na úrovni názvu, který už byl delegovaný, nebo pod ní, například v očekávání, že se budou překládat z nadřazené zóny.
Glue záznamy
Glue záznam je A nebo AAAA záznam, který některé delegace potřebují ke správné funkci. Glue je nutný pouze tehdy, když název hostitele nameserveru delegace spadá do samotné delegované zóny. Většina delegací ukazuje na nameservery v jiné zóně (například ns1.example.org pro delegování sub.example.com) a nepotřebují glue záznam, protože resolver si tyto nameservery může vyhledat samostatně. Bez glue záznamu v případě in-zone by se resolver, který se ptá „kde je ns1.sub.example.com?" by se řídil delegací pro sub.example.com ke kterému se nemůže dostat, dokud již nezná ns1.sub.example.com. Jde o cyklickou závislost.
Uvažujte tento příklad:
sub.example.com NS ns1.sub.example.com.
ns1.sub.example.com A 192.0.2.1 A záznam pro ns1.sub.example.com je glue záznam. Je stíněný (daný sub.example.com delegování se uplatní jako první), přesto se stále obsluhuje. Nadřazená zóna jej zahrne do doplňkové sekce odpovědi s odkazem, spolu s NS delegování, aby resolvery mohly zahájit vyhledávání subdomény, aniž by uvízly v kruhové závislosti.
Glue má význam pouze pro A a AAAA záznamy. Záznam CNAME záznam se stejným názvem jako NS cíl se nepovažuje za glue záznam.
Nedostupné glue záznamy
Glue záznam se stane nedostupným, jakmile pravomoc nad názvem, který má podporovat, převezme mělčí delegace. Mělčí delegace (bližší apexu zóny, s méně návěstími v názvu) přebírá pravomoc nad vším pod sebou, takže vaše zóna glue záznam nemůže poskytnout ani v doplňkové části odpovědi na dotaz. API tyto záznamy označuje jako dead_glue: true.
Uvažujte tento příklad:
sub.example.com NS ns1.sub.example.com.
a.sub.example.com NS ns1.a.sub.example.com.
ns1.a.sub.example.com A 192.0.2.1 A záznam pro ns1.a.sub.example.com vypadá jako glue záznam pro a.sub delegování. Avšak mělčí sub.example.com delegování přebírá autoritu za vše pod sub.example.com, včetně a.sub.example.com. Autorita vaší zóny končí u této mělčí delegace, takže glue záznam pro ns1.a.sub.example.com je mimo ni a nikdy se neobsluhuje.
Nedostupný glue záznam nezpůsobuje selhání rozřešování. Buď jde o pozůstatek, který lze bezpečně odstranit, nebo o signál, že mělčí delegace vznikla omylem.
Pole shadow metadat
Pole shadow metadat se vrací v poli každého záznamu meta objekt, pokud je to relevantní. Počítají se na vyžádání v okamžiku čtení a nikdy se neukládají.
shadowed_by
Typ: pole řetězců (ID záznamů)
Přítomné u jakéhokoli záznamu, který je skrytý jedním nebo více NS delegování. Pole obsahuje ID jednotlivých NS záznamů, jejichž delegování zastiňuje tento záznam. Více ID se zobrazí, pokud několik NS záznamů sdílí stejný název delegování, nebo když delegování existuje na více než jedné nadřazené úrovni nad záznamem.
shadowed_by je u glue záznamů vždy přítomno, protože glue záznamy jsou z definice stíněné.
Apex záznamy (záznamy, jejichž název odpovídá názvu zóny) nejsou nikdy zastíněny a toto pole nikdy neobsahují.
NS záznam se stejným názvem jako delegace není touto delegací zastíněn, je totiž samotnou delegací. Může nést shadowed_by pouze pokud delegace existuje na mělčí nadřazené úrovni.
is_glue
Typ: boolean
Přítomné a nastavené na true na A nebo AAAA záznamů, jejichž název odpovídá cíli jednoho z NS záznamy, které je zastiňují. Tyto záznamy jsou pro delegování nezbytné jako propojovací (glue) záznamy. I když jsou zastíněné, přesto se poskytují: nadřazená zóna je zahrnuje do doplňkové části odpovědí s odkazem, aby se resolvery mohly dostat k delegovaným jmenným serverům.
Toto pole se neuvádí, pokud záznam není glue.
dead_glue
Typ: boolean
Přítomné a nastavené na true na glue záznamy, které se ve skutečnosti nikdy neobsluhují, protože mělčí delegace přebírá autoritu dříve, než na daný název může odpovědět zóna. Záznam s dead_glue: true také nese is_glue: true.
Toto pole se neuvádí, pokud je záznam aktivní glue nebo není glue vůbec.
shadowed_records_count
Typ: integer
Přítomné u non-apex NS záznamy, které tvoří delegování. Udává, kolik záznamů v zóně je tímto delegováním zastíněno (záznamy na názvu delegování nebo pod ním, s výjimkou vlastních NS záznamy a skryté záznamy).
Počet je omezen na 10,000. Hodnota 10,000 znamená „alespoň 10,000“. Pokud je počet nulový, pole se vynechá.
Následující tabulka ukazuje, která pole shadow metadat platí pro jednotlivé typy záznamů:
| Typ záznamu | shadowed_by |
is_glue |
dead_glue |
shadowed_records_count |
|---|---|---|---|---|
A |
Ano, pokud je pod delegací | Ano, pokud se název shoduje s cílem NS záznamu | Ano, pokud glue záznam a mělčí delegace přebírají autoritu | Ne |
AAAA |
Ano, pokud je pod delegací | Ano, pokud se název shoduje s cílem NS záznamu | Ano, pokud glue záznam a mělčí delegace přebírají autoritu | Ne |
NS (apex) |
Ne | Ne | Ne | Ne |
NS (non-apex, na delegovaném názvu) |
Ne | Ne | Ne | Ano |
NS (non-apex, pod delegováním) |
Ano | Ne | Ne | Ne |
CNAME, MX, TXT, SRV, CAA, HTTPS, SVCB |
Ano, pokud je pod delegací | Ne | Ne | Ne |
Shadow metadata požadavku
Přidejte include_shadow_metadata=true k jakémukoli požadavku API na DNS záznamy:
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?include_shadow_metadata=true" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Shadow metadata jsou k dispozici ve všech odpovědích API pro záznamy: při čtení jednotlivých záznamů, v odpovědích na vytvoření a aktualizaci, v požadavcích na seznam a v dávkových požadavcích. U požadavků na seznam a dávkových požadavků se shadow metadata počítají pouze tehdy, když stránka nebo dávka obsahuje 1,000 záznamů nebo méně. Požadavky nad tento limit vracejí záznamy bez shadow metadat.
Vyhledání záznamů zastíněných delegací
Chcete-li zobrazit pouze záznamy zastíněné konkrétní delegací, předejte shadowed_by_name společně s include_shadow_metadata=true:
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?include_shadow_metadata=true&shadowed_by_name=sub.example.com" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Hodnota musí být subdoménou zóny (nikoli apexem zóny). Filtr vrátí všechny záznamy na dané úrovni nebo pod ní. NS záznamy přesně na názvu delegování jsou vyloučeny (tvoří delegování, nikoli zastíněnou sadu). NS záznamy na názvech pod delegováním, například další delegování na a.sub.example.com při filtrování podle sub.example.com jsou samy zastíněny a jsou zahrnuty.
Vyhledání delegací zastiňujících záznam
Chcete-li najít NS delegování, které zastiňuje konkrétní záznam, předejte shadowing_name:
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?shadowing_name=www.sub.example.com" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Filtr vrací NS záznamy na zadaném názvu a na každém z jeho nadřazených názvů v rámci zóny, s výjimkou vrcholu zóny (apex). V tomto příkladu API hledá NS záznamy na www.sub.example.com a sub.example.com. Hodnota musí být subdoménou zóny, nikoli apexem zóny.
Na rozdíl od shadowed_by_name, tento filtr nevyžaduje include_shadow_metadata=true.
Ukázková odpověď
Následuje ukázka polí shadow metadat u tří záznamů v zóně, která obsahuje:
sub.example.com NS ns1.sub.example.com.
ns1.sub.example.com A 192.0.2.1
www.sub.example.com A 192.0.2.2[
{
"type": "NS",
"name": "sub.example.com",
"content": "ns1.sub.example.com.",
"meta": {
"shadowed_records_count": 2
}
},
{
"type": "A",
"name": "ns1.sub.example.com",
"content": "192.0.2.1",
"meta": {
"shadowed_by": ["<NS_RECORD_ID>"],
"is_glue": true
}
},
{
"type": "A",
"name": "www.sub.example.com",
"content": "192.0.2.2",
"meta": {
"shadowed_by": ["<NS_RECORD_ID>"]
}
}
] NS záznam nese shadowed_records_count: 2 (jsou jím zastíněny dva záznamy). Glue A záznam nese oba shadowed_by a is_glue: true. Ne-glue A záznam nese pouze shadowed_by.