Dela via


Hantera DNS-poster och postuppsättningar i Azure DNS med Hjälp av Azure PowerShell

Den här artikeln visar hur du hanterar DNS-poster för DIN DNS-zon med hjälp av Azure PowerShell. DNS-poster kan också hanteras med hjälp av plattformsoberoende Azure CLI eller Azure Portal.

Exemplen i den här artikeln förutsätter att du redan har installerat Azure PowerShell, loggat in och skapat en DNS-zon.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Introduktion

Innan du skapar DNS-poster i Azure DNS, måste du först förstå hur Azure DNS organiserar DNS-poster i DNS-postuppsättningar.

Registrera namn

Poster i Azure DNS anges med relativa namn. Ett fullständigt domännamn (FQDN) innehåller zonnamnet, medan ett relativt namn inte gör det. Det relativa postnamnet www i zonen contoso.com ger till exempel det fullständigt kvalificerade postnamnet www.contoso.com.

En topppost är en DNS-post vid roten (eller toppen) av en DNS-zon. I DNS-zonen contoso.comhar till exempel en apex-post även det fullständigt kvalificerade namnet contoso.com (detta kallas ibland för en naken domän). Enligt konventionen används det relativa namnet '@' för att representera topposter.

Typer av poster

Varje DNS-post har ett namn och en typ. Posterna är indelade i olika typer beroende på den data de innehåller. Den vanligaste typen är en ”A”-post som mappar ett namn till en IPv4-adress. En annan vanlig typ är en ”MX”-post som mappar ett namn till en e-postserver.

Azure DNS stöder alla vanliga DNS-posttyper: A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV och TXT. Observera att SPF-poster representeras med hjälp av TXT-poster.

Ytterligare posttyper stöds om zonen är signerad med DNS Security Extensions (DNSSEC), till exempel delegeringssignerare (DS) och TLSA-resursposter (Transport Layer Security Authentication).

DNSSEC-resursposttyper som DNSKEY, RRSIG och NSEC3-poster läggs till automatiskt när en zon signeras med DNSSEC. Dessa typer av DNSSEC-resursposter kan inte skapas eller ändras efter zonsignering.

Postuppsättningar

Ibland måste du skapa fler än en DNS-post av ett visst namn och typ. Anta exempelvis att webbplatsen ”www.contoso.com” finns på två olika IP-adresser. Webbplatsen kräver då två olika A-poster, en för varje IP-adress. Här är ett exempel på en postuppsättning:

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

Azure DNS hanterar DNS-poster med hjälp av postuppsättningar. En postuppsättning (även kallat en resurspostuppsättning)är en samling DNS-poster i en zon som har samma namn och är av samma typ. De flesta postuppsättningar innehåller en enda post. Exempel som det ovan, där en postuppsättning innehåller mer än en post, är dock inte ovanliga.

Anta till exempel att du redan har skapat en A-post "www" i zonen "contoso.com" som pekar på IP-adressen ”134.170.185.46” (första posten ovan). För att skapa den andra posten skulle du lägga till posten i den befintliga postuppsättningen i stället för att skapa ytterligare en post.

Postuppsättningarna SOA och CNAME är undantag. DNS-standarden tillåter inte flera poster med samma namn för dessa typer, därför kan dessa postuppsättningar endast innehålla en enda post.

Mer information om DNS-poster i Azure DNS finns i DNS-zoner och poster.

Skapa en ny DNS-post

Om du vill skapa en ny postuppsättning måste den ha ett annat namn och en annan typ än befintliga poster. Om den nya posten har samma namn och typ som en befintlig post måste du lägga till den i den befintliga postuppsättningen.

Skapa A-poster i en ny postuppsättning

Du skapar postuppsättningar med hjälp av cmdleten New-AzDnsRecordSet. När du skapar en postuppsättning måste du ange postuppsättningens namn, zonen, TTL (Time To Live), posttypen och de poster som ska skapas.

Parametrarna för att lägga till poster i en postuppsättning varierar beroende på typen av postuppsättning. När du till exempel använder en postuppsättning av typen "A" måste du ange IP-adressen med parametern -IPv4Address. Olika posttyper har extra parametrar.

I följande exempel skapas en postuppsättning med det relativa namnet www i DNS-zonen contoso.com. Det fullständigt kvalificerade namnet på postuppsättningen är www.contoso.com. Posttypen är "A" och TTL är 3 600 sekunder. Postuppsättningen innehåller en enda post med IP-adressen "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") 

Om du vill skapa en postuppsättning i "apex" för en zon (i det här fallet "contoso.com") använder du postuppsättningsnamnet @(exklusive citattecken):

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

Om du behöver skapa en postuppsättning som innehåller mer än en post skapar du först en lokal matris och lägger till posterna och skickar sedan matrisen till New-AzDnsRecordSet följande:

$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 för postuppsättningar kan användas för att associera programspecifika data med varje postuppsättning som nyckel/värde-par. I följande exempel visas hur du skapar en postuppsättning med två metadataposter, "dept=finance" och "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 stöder också "tomma" postuppsättningar, som kan fungera som platshållare för att reservera ett DNS-namn innan du skapar DNS-poster. Tomma postuppsättningar visas i Azure DNS-kontrollplanet, men visas på Azure DNS-namnservrarna. I följande exempel skapas en tom postuppsättning:

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

Skapa poster av andra typer

Efter att ha sett i detalj hur du skapar A-poster visar följande exempel hur du skapar poster av andra posttyper som stöds av Azure DNS.

I varje fall visar vi hur du skapar en postuppsättning som innehåller en enda post. De tidigare exemplen för "A"-poster kan anpassas för att skapa postuppsättningar av andra typer som innehåller flera poster, med metadata eller för att skapa tomma postuppsättningar.

Det finns inget exempel för att skapa en SOA-postuppsättning, eftersom SOA skapas och tas bort med varje DNS-zon. SOA-posten kan inte skapas eller tas bort separat. Soa kan dock ändras, som du ser i ett senare exempel.

Skapa en AAAA-postuppsättning med en post

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

Skapa en CAA-postuppsättning med en enda post

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") 

Skapa en CNAME-postuppsättning med en post

Kommentar

DNS-standarderna tillåter inte CNAME-poster i toppen av en zon (-Name '@'), och de tillåter inte heller postuppsättningar som innehåller mer än en post.

Mer information finns i CNAME-poster.

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

Skapa en MX-postuppsättning med en post

I det här exemplet använder vi postuppsättningsnamnet "@" för att skapa en MX-post i zon-apex (i det här fallet "contoso.com").

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

Skapa en NS-postuppsättning med en post

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

Skapa en PTR-postuppsättning med en post

I det här fallet representerar "my-arpa-zone.com" den omvända ARPA-uppslagszonen som representerar ditt IP-intervall. Varje PTR-post som har angetts i den här zonen motsvarar en IP-adress i IP-intervallet. Postnamnet "10" är den sista oktetten av IP-adressen inom det HÄR IP-intervallet som representeras av den här posten.

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

Skapa en SRV-postuppsättning med en post

När du skapar en SRV-postuppsättning anger du _service och _protocol i postuppsättningens namn. Du behöver inte inkludera @i postuppsättningens namn när du skapar en SRV-postuppsättning i zonexet.

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") 

Skapa en TXT-postuppsättning med en enda post

I följande exempel visas hur du skapar en TXT-post. Mer information om den maximala stränglängd som stöds i TXT-poster finns i TXT-poster.

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

Hämta en postuppsättning

Om du vill hämta en befintlig postuppsättning använder du Get-AzDnsRecordSet. Den här cmdleten returnerar ett lokalt objekt som representerar posten som angetts i Azure DNS.

Precis som med New-AzDnsRecordSetmåste det angivna postuppsättningsnamnet vara ett relativt namn, vilket innebär att det måste undanta zonnamnet. Du måste också ange posttypen och zonen som innehåller postuppsättningen.

I följande exempel visas hur du hämtar en postuppsättning. I det här exemplet anges zonen med parametrarna -ZoneName och -ResourceGroupName .

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

I stället kan du också ange zonen med hjälp av ett zonobjekt som skickas med hjälp av parametern -Zone .

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

Lista postuppsättningar

Du kan också använda Get-AzDnsZone för att lista postuppsättningar i en zon genom att utelämna antingen eller båda parametrarna -Name eller -RecordType .

I följande exempel returneras alla postuppsättningar i zonen:

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

I följande exempel visas hur du kan hämta alla postuppsättningar av en viss typ genom att ange posttypen när postuppsättningens namn utelämnas:

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

Om du vill hämta alla postuppsättningar med ett angivet namn måste du hämta alla postuppsättningar och sedan filtrera resultatet:

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

I alla ovanstående exempel kan zonen anges antingen med hjälp av parametrarna -ZoneName och -ResourceGroupName(som visas) eller genom att ange ett zonobjekt:

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

Lägga till en post i en befintlig postuppsättning

Följ följande tre steg för att lägga till en post i en befintlig postuppsättning:

  1. Hämta den befintliga postuppsättningen

    $rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
    
  2. Lägg till den nya posten i den lokala postuppsättningen.

    Add-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
    
  3. Uppdatera ändringarna så att de återspeglas i Azure DNS-tjänsten.

    Set-AzDnsRecordSet -RecordSet $rs
    

Med hjälp Set-AzDnsRecordSet av ersätts den befintliga postuppsättningen i Azure DNS (och alla poster som den innehåller) med den angivna postuppsättningen. Etag-kontroller används för att säkerställa att samtidiga ändringar inte skrivs över. Du kan använda den valfria -Overwrite växeln för att förhindra dessa kontroller.

Den här åtgärdssekvensen kan också skickas, vilket innebär att du skickar postuppsättningsobjektet med hjälp av röret i stället för att skicka det som en parameter:

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

Exemplen ovan visar hur du lägger till en A-post i en befintlig postuppsättning av typen "A". En liknande åtgärdssekvens används för att lägga till poster i postuppsättningar av andra typer och ersätta parametern -Ipv4Address Add-AzDnsRecordConfig med andra parametrar som är specifika för varje posttyp. Parametrarna för varje posttyp är samma som cmdleten New-AzDnsRecordConfig , som du ser i andra exempel på posttyper ovan.

Postuppsättningar av typen "CNAME" eller "SOA" får inte innehålla mer än en post. Den här begränsningen beror på DNS-standarderna. Det är inte en begränsning för Azure DNS.

Ta bort en post från en befintlig postuppsättning

Processen för att ta bort en post från en postuppsättning liknar processen för att lägga till en post i en befintlig postuppsättning:

  1. Hämta den befintliga postuppsättningen

    $rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
    
  2. Ta bort posten från det lokala postuppsättningsobjektet. Posten som tas bort måste vara en exakt matchning med en befintlig post över alla parametrar.

    Remove-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
    
  3. Checka in ändringen tillbaka till Azure DNS-tjänsten. Använd den valfria -Overwrite växeln för att förhindra Etag-kontroller för samtidiga ändringar.

    Set-AzDnsRecordSet -RecordSet $Rs
    

Om du använder sekvensen ovan för att ta bort den sista posten från en postuppsättning tas inte postuppsättningen bort, utan lämnar en tom postuppsättning. Information om hur du tar bort en postuppsättning helt finns i Ta bort en postuppsättning.

På samma sätt som när du lägger till poster i en postuppsättning kan sekvensen med åtgärder för att ta bort en postuppsättning också skickas:

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

Olika posttyper stöds genom att lämpliga typspecifika parametrar skickas till Remove-AzDnsRecordSet. Parametrarna för varje posttyp är desamma som för cmdleten New-AzDnsRecordConfig , som du ser i andra exempel på posttyper ovan.

Ändra en befintlig postuppsättning

Stegen för att ändra en befintlig postuppsättning liknar de steg du utför när du lägger till eller tar bort poster från en postuppsättning:

  1. Hämta den befintliga postuppsättningen med hjälp Get-AzDnsRecordSetav .
  2. Ändra det lokala postuppsättningsobjektet genom att:
    • Lägga till eller ta bort poster
    • Ändra parametrarna för befintliga poster
    • Ändra postuppsättningens metadata och tid till live (TTL)
  3. Genomför ändringarna med hjälp av cmdleten Set-AzDnsRecordSet . Detta ersätter den befintliga postuppsättningen i Azure DNS med den angivna postuppsättningen.

När du använder Set-AzDnsRecordSet kommandot används Etag-kontroller för att säkerställa att samtidiga ändringar inte skrivs över. Du kan använda den valfria -Overwrite växeln för att förhindra dessa kontroller.

Uppdatera en post i en befintlig postuppsättning

I det här exemplet ändrar vi IP-adressen för en befintlig A-post:

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

Ändra en SOA-post

Du kan inte lägga till eller ta bort poster från den automatiskt skapade SOA-postuppsättningen i zonexet (-Name "@"inklusive citattecken). Du kan dock ändra någon av parametrarna i SOA-posten (förutom "Värd") och postuppsättningen TTL.

I följande exempel visas hur du ändrar egenskapen E-post för SOA-posten :

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

Så här ändrar du NS-poster i zon-apex

NS-posten som anges i zonexet skapas automatiskt med varje DNS-zon. Den innehåller namnen på de Azure DNS-namnservrar som tilldelats till zonen.

Du kan lägga till fler namnservrar i den här NS-postuppsättningen för att stödja cohosting-domäner med mer än en DNS-provider. Du kan också ändra TTL och metadata för den här postuppsättningen. Du kan dock inte ta bort eller ändra de förifyllda Azure DNS-namnservrarna.

Den här begränsningen gäller endast för NS-posten som anges i zonexet. Andra NS-postuppsättningar i din zon (som används för att delegera underordnade zoner) kan ändras utan begränsningar.

I följande exempel visas hur du lägger till en annan namnserver till NS-posten som angetts i zonexemplet:

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

Så här ändrar du metadata för postuppsättningar

Metadata för postuppsättningar kan användas för att associera programspecifika data med varje postuppsättning som nyckel/värde-par.

I följande exempel visas hur du ändrar metadata för en befintlig postuppsättning:

# 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

Ta bort en postuppsättning

Postuppsättningar kan tas bort med hjälp av cmdleten Remove-AzDnsRecordSet . Om du tar bort en postuppsättning tas även alla poster i postuppsättningen bort.

Kommentar

Du kan inte ta bort SOA- och NS-postuppsättningarna i zonexet (-Name '@'). Azure DNS skapade dessa automatiskt när zonen skapades och tar bort dem automatiskt när zonen tas bort.

I följande exempel visas hur du tar bort en postuppsättning. I det här exemplet anges postuppsättningens namn, postuppsättningstyp, zonnamn och resursgrupp explicit.

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

I stället kan postuppsättningen anges efter namn och typ, och zonen som anges med hjälp av ett objekt:

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

Som ett tredje alternativ kan själva postuppsättningen anges med hjälp av ett postuppsättningsobjekt:

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

När du anger den postuppsättning som ska tas bort med hjälp av ett postuppsättningsobjekt används Etag-kontroller för att säkerställa att samtidiga ändringar inte tas bort. Du kan använda den valfria -Overwrite växeln för att förhindra dessa kontroller.

Postuppsättningsobjektet kan också skickas som en parameter i stället för att skickas som en parameter:

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

Bekräftelsemeddelanden

Cmdletarna New-AzDnsRecordSet, Set-AzDnsRecordSet och Remove-AzDnsRecordSet stöder alla bekräftelsemeddelanden.

Varje cmdlet ber om bekräftelse om $ConfirmPreference PowerShell-inställningsvariabeln har värdet Medium eller lägre. Eftersom standardvärdet för är Highanges inte dessa frågor när standardinställningarna för $ConfirmPreference PowerShell används.

Du kan åsidosätta den aktuella $ConfirmPreference-inställningen med hjälp av parametern -Confirm. Om du anger -Confirm eller -Confirm:$True, så uppmanar cmdleten dig att bekräfta detta innan den körs. Om du anger -Confirm:$False uppmanas du inte att bekräfta cmdleten.

Mer information om -Confirm och $ConfirmPreference finns i Om inställningsvariabler.

Nästa steg

Läs mer om zoner och poster i Azure DNS.
Lär dig hur du skyddar dina zoner och poster när du använder Azure DNS.
Läs referensdokumentationen för Azure DNS PowerShell.