Network segmantasyonu yaparken en çok bizi yoracak işlerden bir tanesi, sunucular üzerinde tanımlanan statik dns bilgileri. Yeni DNS sunucularımız belli, IP ler hazır.. Ortamımızda yüzlerce statik tanımlanmış dns bilgisi var ise ne yapacağız.
Ben aşağıdaki şekilde bir çözüm üretmeye çalıştım. 1 saat içerisinde tüm lokasyonlarımda işlemler tamamdı 🙂
#site bilgileri değişkene atanır $sites=[System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetComputerSite() #her site için ilgili dns ip bilgisi değişkenlere tanımlanır $piazzadns= "172.1.2.10","172.2.3.10" $ankaradns= "172.2.5.10","172.2.5.12" $ttnetdns= "172.2.3.10","172.2.3.1" $drsdns= "172.2.3.30","172.2.5.11" #scriptin calistigi bilgisayar üzerindeki aktif ethernet üzerinden NIC degeri alınır $NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername localhost | where{$_.IPEnabled -eq "TRUE"} $localdns=$null $localdns=@() Foreach($nic in $NICs) { #dns bilgisi localdns arrayi içerisine eklenir $localdns += $nic.dnsserversearchorder } foreach ($dns in $localdns ) { #degistirmek istedigimiz dns bilgilerini kosul içine alırız eger bu iplere uyan bir ip var ise aşağıdaki kosulu gerceklestirmesi için tanım yapariz if(($dns -match "172.22.4.10") -or ($dns -match "172.22.4.11") -or ($dns -match "172.22.5.3") -or ($dns -match "172.22.5.10")) { #yukaridaki iplere eşleşen ve site bilgisi şuna eşit ise şu dns bigilerini bu sunucuda/istemcide uygula deriz. Kosullara uydugunda belirledigimiz ip adresleri dns üzerinde güncellenir. if($sites.name -eq "TR-Istanbul-XX-XX") { $NIC.SetDNSServerSearchOrder($piazzadns) $NIC.SetDynamicDNSRegistration("TRUE") } if($sites.name -eq "TR-Ankara-XX") { $NIC.SetDNSServerSearchOrder($ankaradns) $NIC.SetDynamicDNSRegistration("TRUE") } if($sites.name -eq "TR-TTNet-XX") { $NIC.SetDNSServerSearchOrder($ttnetdns) $NIC.SetDynamicDNSRegistration("TRUE") } if($sites.name -eq "TR-TTNet-XXX") { $NIC.SetDNSServerSearchOrder($drsdns) $NIC.SetDynamicDNSRegistration("TRUE") } } }
Umarım faydalı olmuştur,