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.com
har 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-AzDnsRecordSet
må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:
Hämta den befintliga postuppsättningen
$rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
Lägg till den nya posten i den lokala postuppsättningen.
Add-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
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:
Hämta den befintliga postuppsättningen
$rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
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"
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:
- Hämta den befintliga postuppsättningen med hjälp
Get-AzDnsRecordSet
av . - Ä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)
- 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 High
anges 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.