>  기사  >  php教程  >  PowerShell은 기존 DNS 레코드에 대한 PTR 역방향 쿼리를 생성합니다.

PowerShell은 기존 DNS 레코드에 대한 PTR 역방향 쿼리를 생성합니다.

高洛峰
高洛峰원래의
2016-11-23 17:25:211435검색

오늘 아침 Douzi는 우연히 회사의 DNS 서버에 순방향 해상도만 있고 해당 PTR 레코드가 없다는 사실을 발견했습니다. 즉, IP 주소는 도메인 이름을 통해 확인할 수 있지만, IP 주소를 거꾸로 하면 도메인 이름을 찾을 수 없습니다.

기존 레코드에 해당하는 리버스 존과 PTR 레코드가 있는지 확인하는 매우 간단한 스크립트를 1시간 만에 작성했습니다. 그렇지 않은 경우 자동으로 생성해 드립니다.

아이디어는 매우 간단하고, 스크립트도 비교적 거칠지만, 내결함성 처리나 최적화는 없지만 기능을 구현하는 것은 좋습니다.

$ptrzones=Get-DnsServerzone -ComputerName syddc01 | Where-Object {$_.zonename -like "*.arpa"}
#获取所以的A记录
$machines=Get-DnsServerResourceRecord -ComputerName syddc01 -RRType A -ZoneName 'omnicom.com.au'| select @{n='IP';e={$_.recorddata.IPV4Address.IPAddressToString}}, hostname, timestamp, @{n='PTRZone';e={$temp=$_.recorddata.IPV4Address.IPAddressToString.split('.');$t=$temp[2]+'.'+$temp[1]+'.'+$temp[0]+‘.in-addr.arpa’;$t}}
 
foreach($machine in $machines){
   
  #判断是否存在PTR的reverse zone
  write-host $machine.hostname
  write-host $machine.PTRZone 
  $flag=0
  foreach($p in $ptrzones){
    if($p.zonename -eq $machine.PTRZone){
        #write-host " Matched PTR Zone" -BackgroundColor Cyan
        $flag=1
        break
        }
   
  }
  #如果PTR Zone不存在,创建一个对应的
  if($flag -eq 0){
    write-host " PTRZone is Missing,A new PTRZone will be created" -ForegroundColor Red
    $temp=$machine.IP.Split('.')
    $range=$temp[0]+'.'+$temp[1]+'.'+$temp[2]+".0/24"
    #$range
    Add-DnsServerPrimaryZone -DynamicUpdate Secure -NetworkId $range -ReplicationScope Domain -ComputerName syddc01
  }
  else{
   
    #如果PTR zone存在,判断是否存在对应的PTR记录
    $hname=Get-DnsServerResourceRecord -ComputerName syddc01 -RRType Ptr -ZoneName $machine.PTRZone | select @{n='name';e={$_.recorddata.ptrdomainname}}
    #$hname
    $temp="*"+$machine.hostname+"*"
    if($hname -like $temp){
         
       Write-Host "Already exist" -ForegroundColor Cyan
     
    }
    else{
        #PTR Zone存在 但是PTR记录不存在
        Write-Host "Adding PTR record" -ForegroundColor Yellow
        Add-DnsServerResourceRecordPtr -ComputerName syddc01 -ZoneName $machine.PTRZone -Name $machine.IP.Split('.')[3] -AllowUpdateAny -TimeToLive 01:00:00 -AgeRecord -PtrDomainName $machine.hostname 
    }
    }
   
   
  }

스크립트 실행

PowerShell은 기존 DNS 레코드에 대한 PTR 역방향 쿼리를 생성합니다.

결과

PowerShell은 기존 DNS 레코드에 대한 PTR 역방향 쿼리를 생성합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.