Správa záznamů a sad záznamů DNS v Azure DNS pomocí Azure PowerShell

V tomto článku se dozvíte, jak spravovat záznamy DNS pro zónu DNS pomocí Azure PowerShell. Záznamy DNS je také možné spravovat pomocí azure CLI pro různé platformy nebo Azure Portal.

Příklady v tomto článku předpokládají, že jste už nainstalovali Azure PowerShell, přihlásili se a vytvořili zónu DNS.

Poznámka

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Úvod

Před vytvářením záznamů DNS v DNS Azure je nejprve nutné pochopit, jak DNS Azure organizuje záznamy DNS v sadách záznamů DNS.

Názvy záznamů

V Azure DNS se záznamy zadávají pomocí relativních názvů. Plně kvalifikovaný název domény (FQDN) obsahuje název zóny, zatímco relativní název ne. Například relativní název www záznamu v zóně contoso.com dává plně kvalifikovaný název záznamu www.contoso.com.

Záznam „vrcholu“ je záznam DNS v kořeni (nebo „vrcholu“) zóny DNS. Například v zóně contoso.comDNS má záznam vrcholu také plně kvalifikovaný název contoso.com (někdy se tomu říká holá doména). Podle konvence se k vyjádření záznamů vrcholu používá relativní název '@'.

Typy záznamů

Každý záznam DNS má název a typ. Záznamy jsou uspořádány do různých typů podle dat, která obsahují. Nejběžnějším typem je záznam „A“, který mapuje název na adresu IPv4. Dalším běžným typem záznamu je „MX“, který mapuje název na poštovní server.

Azure DNS podporuje všechny běžné typy záznamů DNS: A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV a TXT. Záznamy SPF se vyjadřují pomocí záznamů TXT.

Sady záznamů

Někdy můžete potřebovat vytvořit víc než jeden záznam DNS s daným názvem a typem. Předpokládejme například, že web „www.contoso.com“ je hostovaný na dvou různých IP adresách. Tento web vyžaduje dva různé záznamy A, jeden pro každou IP adresu. Tady je příklad sady záznamů:

www.contoso.com.        3600    IN    A    134.170.185.46
www.contoso.com.        3600    IN    A    134.170.188.221

Azure DNS spravuje všechny záznamy DNS pomocí sady záznamů. Sada záznamů (známá také jako sada záznamů „prostředků“) je kolekce záznamů DNS v zóně, které mají stejný název a jsou stejného typu. Většina sad záznamů obsahuje jediný záznam. Příklady jako ten výše, kde sada záznamů obsahuje více než jeden záznam, však nejsou výjimkou.

Předpokládejme třeba, že už jste vytvořili záznam A „www“ v zóně „contoso.com“, který odkazuje na IP adresu 134.170.185.46 (první záznam výše). Když budete chtít vytvořit druhý záznam, bude potřeba tento záznam přidat do existující sady záznamů, ne vytvořit další sadu záznamů.

Výjimkou jsou typy záznamů SOA a CNAME. Standardy DNS nedovolují pro tyto typy více záznamů se stejným názvem, proto tyto sady záznamů můžou obsahovat jenom po jednom záznamu.

Další informace o záznamech DNS v DNS Azure najdete v tématu Zóny a záznamy DNS.

Vytvoření nového záznamu DNS

Pokud chcete vytvořit novou sadu záznamů, musí mít jiný název a typ než existující záznamy. Pokud má nový záznam stejný název a typ jako existující záznam, budete ho muset přidat do existující sady záznamů.

Vytvoření záznamů A v nové sadě záznamů

Sady záznamů vytvoříte pomocí rutiny New-AzDnsRecordSet. Při vytváření sady záznamů musíte zadat název sady záznamů, zónu, hodnotu TTL (Time to Live), typ záznamu a záznamy, které se mají vytvořit.

Parametry pro přidání záznamů do sady záznamů se liší podle typu sady záznamů. Například při použití sady záznamů typu A je potřeba zadat IP adresu pomocí parametru -IPv4Address. Různé typy záznamů budou mít další parametry.

Následující příklad vytvoří sadu záznamů s relativním názvem www v zóně contoso.comDNS . Plně kvalifikovaný název sady záznamů je www.contoso.com. Typ záznamu je A a hodnota TTL je 3600 sekund. Sada záznamů obsahuje jeden záznam s IP adresou 1.2.3.4.

New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4") 

Pokud chcete vytvořit sadu záznamů na vrcholu zóny (v tomto případě contoso.com), použijte název sady záznamů @(s výjimkou uvozovek):

New-AzDnsRecordSet -Name "@" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4") 

Pokud potřebujete vytvořit sadu záznamů obsahující více než jeden záznam, nejprve vytvořte místní pole a přidejte záznamy a pak předejte pole následujícím New-AzDnsRecordSet způsobem:

$aRecords = @()
$aRecords += New-AzDnsRecordConfig -IPv4Address "1.2.3.4"
$aRecords += New-AzDnsRecordConfig -IPv4Address "2.3.4.5"
New-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName MyResourceGroup -Ttl 3600 -RecordType A -DnsRecords $aRecords

Metadata sady záznamů se dají použít k přidružení dat specifických pro aplikaci ke každé sadě záznamů jako párů klíč-hodnota. Následující příklad ukazuje, jak vytvořit sadu záznamů se dvěma položkami metadat, dept=finance a environment=production.

New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4") -Metadata @{ dept="finance"; environment="production" } 

Azure DNS také podporuje prázdné sady záznamů, které mohou před vytvořením záznamů DNS sloužit jako zástupný symbol pro rezervaci názvu DNS. Prázdné sady záznamů jsou viditelné v řídicí rovině Azure DNS, ale zobrazují se na názvových serverech Azure DNS. Následující příklad vytvoří prázdnou sadu záznamů:

New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords @()

Vytvoření záznamů jiných typů

Následující příklady podrobně ukazují, jak vytvořit záznamy "A", jak vytvořit záznamy jiných typů záznamů podporovaných Azure DNS.

V každém případě si ukážeme, jak vytvořit sadu záznamů obsahující jeden záznam. Dřívější příklady pro záznamy A je možné přizpůsobit tak, aby se vytvořily sady záznamů jiných typů obsahujících více záznamů s metadaty nebo aby se vytvořily prázdné sady záznamů.

Neexistuje žádný příklad pro vytvoření sady záznamů SOA, protože soa se vytvářejí a odstraňují s každou zónou DNS. Záznam SOA nelze vytvořit ani odstranit samostatně. Soa však může být změněna, jak je znázorněno v pozdějším příkladu.

Vytvoření sady záznamů AAAA s jedním záznamem

New-AzDnsRecordSet -Name "test-aaaa" -RecordType AAAA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Ipv6Address "2607:f8b0:4009:1803::1005") 

Vytvoření sady záznamů CAA s jedním záznamem

New-AzDnsRecordSet -Name "test-caa" -RecordType CAA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Caaflags 0 -CaaTag "issue" -CaaValue "ca1.contoso.com") 

Vytvoření sady záznamů CNAME s jedním záznamem

Poznámka

Standardy DNS nepovolují záznamy CNAME na vrcholu zóny (-Name '@'), ani nepovolují sady záznamů obsahující více než jeden záznam.

Další informace najdete v tématu Záznamy CNAME.

New-AzDnsRecordSet -Name "test-cname" -RecordType CNAME -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Cname "www.contoso.com") 

Vytvoření sady záznamů MX s jedním záznamem

V tomto příkladu použijeme název sady záznamů @k vytvoření záznamu MX na vrcholu zóny (v tomto případě "contoso.com").

New-AzDnsRecordSet -Name "@" -RecordType MX -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Exchange "mail.contoso.com" -Preference 5) 

Vytvoření sady záznamů NS s jedním záznamem

New-AzDnsRecordSet -Name "test-ns" -RecordType NS -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Nsdname "ns1.contoso.com") 

Vytvoření sady záznamů PTR s jedním záznamem

V tomto případě "my-arpa-zone.com" představuje zónu zpětného vyhledávání ARPA představující váš rozsah IP adres. Každá sada záznamů PTR v této zóně odpovídá IP adrese v rámci tohoto rozsahu IP adres. Název záznamu "10" je poslední oktet IP adresy v tomto rozsahu IP adres reprezentovaných tímto záznamem.

New-AzDnsRecordSet -Name 10 -RecordType PTR -ZoneName "my-arpa-zone.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Ptrdname "myservice.contoso.com") 

Vytvoření sady záznamů SRV s jedním záznamem

Při vytváření sady záznamů SRV zadejte v názvu sady záznamů _service a _protocol . Při vytváření sady záznamů SRV na vrcholu zóny není nutné do názvu sady záznamů SRV zahrnout znak @.

New-AzDnsRecordSet -Name "_sip._tls" -RecordType SRV -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Priority 0 -Weight 5 -Port 8080 -Target "sip.contoso.com") 

Vytvoření sady záznamů TXT s jedním záznamem

Následující příklad ukazuje, jak vytvořit záznam TXT. Další informace o maximální délce řetězce podporované v záznamech TXT najdete v tématu Záznamy TXT.

New-AzDnsRecordSet -Name "test-txt" -RecordType TXT -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Value "This is a TXT record") 

Získání sady záznamů

Pokud chcete načíst existující sadu záznamů, použijte Get-AzDnsRecordSet. Tato rutina vrátí místní objekt, který představuje sadu záznamů v Azure DNS.

Stejně jako v New-AzDnsRecordSetpřípadě musí být zadaný název sady záznamů relativním názvem, což znamená, že musí vyloučit název zóny. Musíte také zadat typ záznamu a zónu obsahující sadu záznamů.

Následující příklad ukazuje, jak načíst sadu záznamů. V tomto příkladu je zóna určena pomocí -ZoneName parametrů a -ResourceGroupName .

$rs = Get-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

Místo toho můžete zónu zadat také pomocí objektu zóny předaného pomocí parametru -Zone .

$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs = Get-AzDnsRecordSet -Name "www" -RecordType A -Zone $zone

Výpis sad záznamů

Můžete také použít Get-AzDnsZone k výpisu sad záznamů v zóně, a to tak, že vynecháte jeden nebo oba -Name parametry nebo -RecordType .

Následující příklad vrátí všechny sady záznamů v zóně:

$recordsets = Get-AzDnsRecordSet -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

Následující příklad ukazuje, jak můžete načíst všechny sady záznamů daného typu zadáním typu záznamu při vynechání názvu sady záznamů:

$recordsets = Get-AzDnsRecordSet -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

Pokud chcete načíst všechny sady záznamů se zadaným názvem napříč různými typy záznamů, musíte načíst všechny sady záznamů a potom filtrovat výsledky:

$recordsets = Get-AzDnsRecordSet -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" | where {$_.Name.Equals("www")}

Ve všech výše uvedených příkladech je možné zónu určit buď pomocí -ZoneName parametrů a -ResourceGroupName(jak je znázorněno), nebo zadáním objektu zóny:

$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
$recordsets = Get-AzDnsRecordSet -Zone $zone

Přidání záznamu do existující sady záznamů

Pokud chcete přidat záznam do existující sady záznamů, postupujte následovně:

  1. Získání existující sady záznamů

    $rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
    
  2. Přidejte nový záznam do místní sady záznamů.

    Add-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
    
  3. Aktualizujte změny tak, aby se promítly do služby Azure DNS.

    Set-AzDnsRecordSet -RecordSet $rs
    

Příkaz Set-AzDnsRecordSetnahradí existující sadu záznamů v Azure DNS (a všechny záznamy, které obsahuje) zadanou sadou záznamů. Kontroly Značek se používají k zajištění toho, aby se souběžné změny nepřepsaly. Tyto kontroly můžete potlačit pomocí volitelného -Overwrite přepínače.

Tuto posloupnost operací lze také předat kanálem, což znamená, že objekt sady záznamů předáte pomocí kanálu, nikoli jako parametr:

Get-AzDnsRecordSet -Name "www" –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A | Add-AzDnsRecordConfig -Ipv4Address "5.6.7.8" | Set-AzDnsRecordSet

Výše uvedené příklady ukazují, jak přidat záznam A do existující sady záznamů typu A. Podobné posloupnosti operací se používá k přidání záznamů do sad záznamů jiných typů a nahrazení parametru -Ipv4AddressAdd-AzDnsRecordConfig dalšími parametry specifickými pro každý typ záznamu. Parametry pro každý typ záznamu jsou stejné jako rutina New-AzDnsRecordConfig , jak je znázorněno v jiných příkladech typů záznamů výše.

Sady záznamů typu CNAME nebo SOA nemůžou obsahovat více než jeden záznam. Toto omezení vyplývá ze standardů DNS. Nejedná se o omezení Azure DNS.

Odebrání záznamu z existující sady záznamů

Proces odebrání záznamu ze sady záznamů se podobá procesu přidání záznamu do existující sady záznamů:

  1. Získání existující sady záznamů

    $rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
    
  2. Odeberte záznam z objektu místní sady záznamů. Odebraný záznam se musí přesně shodovat s existujícím záznamem napříč všemi parametry.

    Remove-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
    
  3. Potvrďte změnu zpět do služby Azure DNS. Pomocí volitelného -Overwrite přepínače můžete potlačit kontroly značky Etag pro souběžné změny.

    Set-AzDnsRecordSet -RecordSet $Rs
    

Odebrání posledního záznamu ze sady záznamů pomocí výše uvedené sekvence neodstraní sadu záznamů, ale ponechá prázdnou sadu záznamů. Pokud chcete sadu záznamů úplně odebrat, přečtěte si téma Odstranění sady záznamů.

Podobně jako při přidávání záznamů do sady záznamů je možné předát také posloupnost operací odebrání sady záznamů:

Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A | Remove-AzDnsRecordConfig -Ipv4Address "5.6.7.8" | Set-AzDnsRecordSet

Předáním parametrů specifických pro příslušný typ do Remove-AzDnsRecordSetjsou podporovány různé typy záznamů. Parametry pro každý typ záznamu jsou stejné jako u New-AzDnsRecordConfig rutiny, jak je znázorněno v dalších příkladech typů záznamů výše.

Úprava existující sady záznamů

Kroky pro úpravu existující sady záznamů se podobají krokům, které provedete při přidávání nebo odebírání záznamů ze sady záznamů:

  1. Načtěte existující sadu záznamů pomocí Get-AzDnsRecordSetpříkazu .
  2. Upravte objekt místní sady záznamů:
    • Přidání nebo odebrání záznamů
    • Změna parametrů existujících záznamů
    • Změna metadat sady záznamů a hodnoty TTL (Time to Live)
  3. Potvrďte změny pomocí rutiny Set-AzDnsRecordSet . Tím se nahradí stávající sada záznamů v Azure DNS zadanou sadou záznamů.

Při použití Set-AzDnsRecordSet příkazu se kontroly značky Etag používají k zajištění toho, aby se souběžné změny nepřepsaly. Tyto kontroly můžete potlačit pomocí volitelného -Overwrite přepínače.

Aktualizace záznamu v existující sadě záznamů

V tomto příkladu změníme IP adresu existujícího záznamu A:

$rs = Get-AzDnsRecordSet -name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs.Records[0].Ipv4Address = "9.8.7.6"
Set-AzDnsRecordSet -RecordSet $rs

Úprava záznamu SOA

Do automaticky vytvořené sady záznamů SOA na vrcholu zóny (-Name "@"včetně uvozovek) nemůžete přidávat ani odebírat záznamy. V záznamu SOA (kromě hodnoty Host) a hodnoty TTL sady záznamů ale můžete upravit libovolný parametr.

Následující příklad ukazuje, jak změnit vlastnost Email záznamu SOA:

$rs = Get-AzDnsRecordSet -Name "@" -RecordType SOA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs.Records[0].Email = "admin.contoso.com"
Set-AzDnsRecordSet -RecordSet $rs

Úprava záznamů NS na vrcholu zóny

Sada záznamů NS ve vrcholu zóny se automaticky vytvoří s každou zónou DNS. Obsahuje názvy názvových serverů Azure DNS přiřazených k zóně.

Do této sady záznamů NS můžete přidat další názvové servery, které podporují spoluhostování domén s více než jedním poskytovatelem DNS. Můžete také upravit hodnotu TTL a metadata pro tuto sadu záznamů. Předem vyplněné názvové servery Azure DNS ale nemůžete odebrat ani upravit.

Toto omezení se vztahuje pouze na sadu záznamů NS ve vrcholu zóny. Ostatní sady záznamů NS ve vaší zóně (používané k delegování podřízených zón) je možné upravovat bez omezení.

Následující příklad ukazuje, jak přidat další názvový server do sady záznamů NS na vrcholu zóny:

$rs = Get-AzDnsRecordSet -Name "@" -RecordType NS -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Add-AzDnsRecordConfig -RecordSet $rs -Nsdname ns1.myotherdnsprovider.com
Set-AzDnsRecordSet -RecordSet $rs

Úprava metadat sady záznamů

Metadata sady záznamů se dají použít k přidružení dat specifických pro aplikaci ke každé sadě záznamů jako páru klíč-hodnota.

Následující příklad ukazuje, jak upravit metadata existující sady záznamů:

# Get the record set
$rs = Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

# Add 'dept=finance' name-value pair
$rs.Metadata.Add('dept', 'finance') 

# Remove metadata item named 'environment'
$rs.Metadata.Remove('environment')  

# Commit changes
Set-AzDnsRecordSet -RecordSet $rs

Odstranění sady záznamů

Sady záznamů je možné odstranit pomocí rutiny Remove-AzDnsRecordSet . Odstraněním sady záznamů se odstraní také všechny záznamy v této sadě záznamů.

Poznámka

Sady záznamů SOA a NS nelze odstranit ve vrcholu zóny (-Name '@'). Azure DNS je vytvořil automaticky při vytvoření zóny a při odstranění zóny je automaticky odstraní.

Následující příklad ukazuje, jak odstranit sadu záznamů. V tomto příkladu jsou explicitně zadané názvy sady záznamů, typ sady záznamů, název zóny a skupina prostředků.

Remove-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

Místo toho je možné sadu záznamů zadat názvem a typem a zónu určenou pomocí objektu:

$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
Remove-AzDnsRecordSet -Name "www" -RecordType A -Zone $zone

Třetí možností je určit samotnou sadu záznamů pomocí objektu sady záznamů:

$rs = Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Remove-AzDnsRecordSet -RecordSet $rs

Když zadáte sadu záznamů, která se má odstranit pomocí objektu sady záznamů, použijí se kontroly značky ETag , aby se zajistilo, že se neodstraní souběžné změny. Tyto kontroly můžete potlačit pomocí volitelného -Overwrite přepínače.

Objekt sady záznamů je také možné předat kanálem namísto předání jako parametru:

Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" | Remove-AzDnsRecordSet

Výzvy k potvrzení

Všechny rutiny New-AzDnsRecordSet, Set-AzDnsRecordSet a Remove-AzDnsRecordSet podporují výzvy k potvrzení.

Každá rutina zobrazí výzvu k potvrzení, pokud $ConfirmPreference má proměnná předvoleb PowerShellu Medium hodnotu nebo nižší. Vzhledem k tomu, že výchozí hodnota pro $ConfirmPreference je High, při použití výchozího nastavení PowerShellu se tyto výzvy nezobrazí.

Aktuální nastavení $ConfirmPreference můžete přepsat pomocí parametru -Confirm. Pokud zadáte -Confirm nebo -Confirm:$True, rutina před spuštěním zobrazí výzvu k potvrzení. Pokud zadáte -Confirm:$False , rutina nezobrazí výzvu k potvrzení.

Další informace o -Confirm a $ConfirmPreference najdete v tématu Informace o proměnných předvoleb.

Další kroky

Přečtěte si další informace o zónách a záznamech v Azure DNS.
Zjistěte, jak chránit zóny a záznamy při používání Azure DNS.
Projděte si referenční dokumentaci k Azure DNS PowerShellu.