Automatiseer DNS-taken met PowerShell DNS-cmdlets

DNS-records worden doorgaans dynamisch beheerd door uw DNS-server. Echter, soms kan het nodig zijn om handmatig verschillende soorten DNS-records aan te maken, te bewerken of te verwijderen. Of zelfs verschillende DNS-taken toe te voegen aan automatiseringsscripts. Het is op momenten als deze dat het gebruik van PowerShell DNS-cmdlets de juiste aanpak is.

Deze blogpost heeft een bijbehorende video gemaakt door TechSnips-medewerker, David Lamb. Voel u vrij om te kijken of, als u de voorkeur geeft aan tekst, verder te lezen!

Bekijken van DNS-records met PowerShell DNS-cmdlets

U kunt alle resource-records voor een bepaalde DNS-zone eenvoudig bekijken door eenvoudigweg de PowerShell DNS-cmdlet Get-DnsServerResourceRecord te gebruiken. Met deze cmdlet kunt u de parameter ZoneName specificeren, waarmee alle DNS-records in die zone worden weergegeven.

Zoals u hieronder kunt zien, genereert dit een vrij lange lijst met records.

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad
Listing DNS records with PowerShell

Dit gedrag benadrukt een van de voordelen van deze specifieke cmdlet ten opzichte van de grafische DNS-console. De weergave geeft u alle records voor deze zone, ongeacht in welke map ze zich bevinden. In de grafische console zou het veel tijd kosten om deze informatie bij elkaar te brengen.

Nu deze lijst een beetje dunner maken. Door dezelfde cmdlet te gebruiken, maar de RRType parameter toe te voegen om te zoeken naar A-records (IPv4-hosts) en te filteren op records waar de Time To Live (TTL) groter is dan 15 minuten, krijgen we een iets beheersbaardere lijst. Je kunt de Where-Object cmdlet gebruiken om te filteren op verschillende DNS-recordeigenschappen.

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A | Where-Object TimeToLive -GE "00:15:00"
Finding DNS records with a TimeToLive greater than 15 minutes

Als we nog een stap verder gaan, kun je ook zoeken naar records in een andere DNS-zone en zelfs op verschillende DNS-servers.

In het onderstaande voorbeeld zullen we zoeken naar A-records in de canada.corp.ad zone op DNS-server DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName canada.corp.ad -RRType A
Finding DNS A records

Hostrecords toevoegen en verwijderen

Om een hostrecord toe te voegen, moet je de PowerShell DNS-cmdlet Add-DnsServerResourceRecordA gebruiken. In het onderstaande voorbeeld moet je een hostrecord toevoegen voor een nieuwe printer die je aan het netwerk toevoegt. Het wordt toegevoegd aan de corp.ad zone met de naam reddeerprint01, en het IP-adres is 192.168.2.56.

PS51> Add-DnsServerResourceRecordA -Name reddeerprint01 -ZoneName corp.ad -IPv4Address 192.168.2.56
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A
Creating a DNS record

Als blijkt dat je een record moet verwijderen, misschien is de printer buiten werking gesteld, dan kun je de volgende code gebruiken om het zojuist gemaakte hostrecord te verwijderen:

PS51> Remove-DnsServerResourceRecord -ZoneName corp.ad -Name reddeerprint01 -RRType A

Hostrecords toevoegen en verwijderen AAAA

Het is ook net zo makkelijk om een IPv6 hostrecord toe te voegen. Natuurlijk verschillen deze records iets, omdat ze worden vermeld als AAAA-records. Je zult merken dat we nu de PowerShell DNS-cmdlet Add-DnsServerResourceRecordAAAA gebruiken. Het is een subtiele verandering, maar wel een belangrijke.

Voeg een record toe aan de zone corp.ad voor de nieuwe IT Intranet-server op fc00:0128 en controleer vervolgens snel of het is aangemaakt met het volgende commando.

PS51> Add-DnsServerResourceRecordAAAA -Name it-intranet -ZoneName corp.ad -IPv6Address "fc00::0128"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType AAAA
Creating an AAA host record

Toevoegen van Reverse Lookup Records (PTR)

Met PowerShell DNS-cmdlets kun je ook PTR-records toevoegen. Een reverse lookup-record stelt de client in staat om een DNS-server te bevragen om de hostnaam voor een opgegeven IP-adres op te vragen.

Het maken van een PTR-record is een relatief eenvoudig proces, maar er is één belangrijk stukje informatie dat je moet weten voordat je begint met het toevoegen van PTR-records. Reverse lookup-zones worden niet standaard aangemaakt. Je moet je reverse lookup-zone instellen voordat je records toevoegt. Gelukkig is dit relatief eenvoudig te doen.

Het maken van een DNS-zone

Gebruik de PowerShell DNS-cmdlet Add-DnsServerPrimaryZone om een nieuwe DNS-zone te maken. In dit geval, omdat je een reverse lookup-zone aanmaakt, geef je het het netwerk-ID.

In dit voorbeeld heb ik er ook voor gekozen om de replicatiescope in te stellen op het hele AD-forest, en ik heb specifiek DC03 als de voorkeurs-DNS-server ingesteld:

PS51> Add-DnsServerPrimaryZone -ComputerName DC03 -NetworkId "192.168.2.0/24" -ReplicationScope Forest
PS51> Get-DnsServerZone -ComputerName DC03
Creating a DNS primary zone

Nu de omgekeerde opzoekzone is ingesteld, kunt u een PTR-record toevoegen voor een nieuwe printer genaamd CYQF-Printer-01.canada.corp.ad met het IP-adres 192.168.2.56. Aangezien dit record is voor de zone canada.corp.ad, richt u zich op de DNS-server DC03.

Nu de zone is aangemaakt, laten we een PTR-record maken met behulp van de Add-DnsServerResourceRecordPtr-opdracht. Bij het gebruik van deze cmdlet is het belangrijk om een paar dingen op te merken.

  • U moet de zonenaam opgeven met behulp van het netwerk-ID in omgekeerde volgorde, voeg dan .in-addr.arpa toe. Dus voor ons netwerk-ID 192.168.2.0/24 is de zonenaam 2.168.192.in-addr.arpa.
  • De parameter Name is het hostgedeelte van het IP-adres. Voor onze printer op 192.168.2.56 is de Name 56.

Zodra u die informatie heeft, is de benodigde code om het PTR-record te maken relatief eenvoudig, zij het een beetje lang:

PS51> Add-DnsServerResourceRecordPtr `
    -Name "56" `
    -PtrDomainName "CYQF-Printer-01.canada.corp.ad" `
    -ZoneName "2.168.192.in-addr.arpa" `
    -computerName DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName "2.168.192.in-addr.arpa"
Creating a PTR record

Aliasrecords (CNAME) toevoegen

Om deze handleiding af te sluiten, maakt u een host-aliasrecord of CNAME-record met behulp van de Add-DnsServerResourceRecordCName-cmdlet.

Deze records stellen u in staat om een alias op te geven voor een bestaand hostrecord in de zone. Dit wordt vooral handig als u bijvoorbeeld uw financiële gebruikers een adres wilt geven voor hun op het web ingeschakelde financiële app.

Je zou een alias kunnen maken genaamd finance, en het laten verwijzen naar de webserver webapp25.corp.ad. Zodra de app is gemigreerd naar de nieuwe webserver met een nieuwe hostnaam, zou je dan het CNAME-record veranderen zodat finance naar de nieuwe host wijst. Op deze manier hoeven de gebruikers hun bladwijzers niet bij te werken. Ze kunnen doorgaan met het benaderen van hun applicatie via het adres finance.corp.ad.

PS51> Add-DnsServerResourceRecordCName -ZoneName corp.ad -HostNameAlias "webapp25.corp.ad" -Name "finance"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType CName
Creating a CNAME record

Als je dieper wilt ingaan op DNS en wat meer geavanceerde mogelijkheden wilt zien, zorg er dan voor dat je alle andere DNS-posts hier bekijkt.

Samenvatting

Dit concludeert onze tutorial over het gebruik van PowerShell met DNS-records. Met de kennis die je hier hebt opgedaan, zou je nu interactief kunnen beheren of zelfs grote delen van DNS-records kunnen automatiseren als je dat wilt!

Source:
https://adamtheautomator.com/powershell-dns/