Windows Server 2016 TP2 DNS Politikaları – Bölüm 1
Microsoft’un yeni nesil işletim sistemi olacak olan Windows Server vNext ile gelen yenilikleri incelemeye devam ediyoruz. Bundan önceki iki makalemizde Windows Server 2016 ile gelen yenilikleri genel olarak incelemiştik:
Windows Server vNext 2016 Technical Preview 2 Yenilikleri – Bölüm1
Windows Server vNext 2016 Technical Preview 2 Yenilikleri – Bölüm2
Yukarıda linklerini verdiğimiz makalelerimizde de belirttiğimiz gibi Windows Server vNext geliştirme süreci devam ediyor. Ürünün 2016 yılı içerisinde piyasaya çıkacağını tahmin ediyoruz. Mayıs ayı içerisinde “Windows Server Technical Preview 2” sürümü yayınlandı. Yine Mayıs ayı içerisinde ürünün resmi adının da Windows Server 2016 olacağı duyuruldu. Windows Server 2016 Technical Preview 2 ISO ya da VHD dosyasını aşağıdaki adresten indirerek testlerinize başlayabilirsiniz:
https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview
İki bölümden oluşan bu makale serimizde de sizlerle Windows Server 2016 ile network servislerinden DNS servisinde gelecek olan “DNS Politikaları (DNS Policies)” konusunu inceliyoruz.
DNS Politikalarına Giriş ve Öngereksinimler?
DNS Politikaları Windows Server 2016 Technical Preview 2 (TP2) ile gelen yeni bir özellik. Kullanım amacı, bir DNS sunucunun kendisine gelen DNS sorgularına nasıl cevap vereceğini belirlemek ya da belirtmek.
DNS sorgularına nasıl cevap verileceğini belirleyen kuralları oluştururken aşağıdaki parametreler kullanılabilir:
İstemci IP Adresine göre (İstemcinin konumu)
Saate göre
İstemci subnet adresine göre
Taşıma protokolü (TCP ya da UDP)
IP Protokolü (IPv4 ya da IPv6)
Sunucu Ağ kartı IP Adresine göre (DNS Sunucunun DNS isteğini alan ağ kartının adresine göre)
FQDN Adresi (Sorgulanan kaydın FQDN adresine göre, burada wildcard (*) vb. kullanılabilir.)
Sorgu tipine göre (A, SRV, TXT, vb.)
Diğer çeşitli parametreler
Bu parametreler AND ya da OR gibi mantıksal operatörlerle birleştirilerek detaylı kurallar yazılabilir.
Yazılan politikalar sonucunda aşağıdaki aksiyonlardan biri gerçekleşmesi beklenir:
ALLOW : DNS sunucunun belirlenen kurala uygun olarak cevap vermesi sağlanır.
DENY : DNS sunucu gelen sorgu isteğine olumsuz yanıt verir.
IGNORE : DNS sunucu gelen sorgu isteğini sessizce yani yanıt dönmeden sonlandırır (drop).
DNS Politikaları aşağıdaki senaryolarda uygulanabilir:
Konum-duyarlı DNS Senaryosu : Bu senaryo kapsamında istemcinin bulunduğu konuma en yakın DNS sunucudan hizmet alması sağlanır.
DNS Trafik Yönetimi Senaryosu : Bu senaryo kapsamında istemcinin bulunduğu konuma en yakın veri merkezindeki DNS sunucudan hizmet alması sağlanır.
DNS Yük Dengeleme Senaryosu : Bu senaryo kapsamında DNS sunucular arasında yük paylaşımı sağlanır.
DNS Split-Brain Senaryosu : Bu senaryo kapsamında DNS kayıtları farklı zone havuzlarına bölünür, DNS istemcileri bulunduğu alt ağ adresine bağlı olarak en yakın DNS sunucudan cevap alırlar.
Uygulamalar İçin Yüksek Erişilebilirlik Senaryosu : Bu senaryo kapsamında DNS istemcileri uygulamalar için en sağlıklı uç noktaya yönlendirilir.
Kara Liste Senaryosu : Bu senaryo kapsamında belirlenen coğrafi lokasyondaki DNS istemciler DNS sunucudan hizmet alamaz ve göz ardı edilirler.
DDoS Önleme/Azaltma Senaryosu : Bu senaryo kapsamında DNS cevap paket boyutları sınırlandırılabilir, sorgular karşılanmayabilir, istemciTCP üzerinden bağlantıya zorlanabilir, DNS cevapları belli eşik değerlere sınırlandırılabilir.
Forensics Senaryosu : Bu senaryo kapsamında kara listeye alınan DNS istemciler ulaşmaya çalıştıkları bilgisayar yerine farklı adreslere yönlendirilebilirler.
DNS politikaları sayesinde istemcilerin örneğin bir web sunucunun ip adresini istekten bulunan DNS sorgularının istemcinin bulunduğu alt ağa (subnet) en yakın veri merkezinden cevap verilmesi sağlanmış olacaktır. Benzer bir senaryoyu şirket ortamındaki DNS yapınızı (on-premise) Microsoft Azure genel bulutuna (Azure IaaS) genişletmişseniz bu durumda şirket içindeki alt ağlarda bulunan istemcilerin en yakın veri merkezindeki DNS sunucuya, şirket dışında bulunan kullanıcıların da Azure DNS sunuculardan destek alacak şekilde kurallar yazabilirsiniz.
Aşağıda başka bir detaylı örnek senaryoyu görmektesiniz. Avrupa ve Amerika lokasyonlarında iki farklı veri merkezine sahip büyük bir bulut sağlayıcının host ettiği woodgrove.com web servisi için müşterilerine bulundukları konumdaki en yakın veri merkezinden cevap vererek en hızlı ve kaliteli cevabı sağlamak istiyor.
Böyle bir senaryoda kullanıcı www.woodgrove.com adresine bağlanmak istediğinde oluşan DNS sorgu paketine kullanıcının bulunduğu coğrafi lokasyona en yakın veri merkezindeki web sunucudan cevap verecek şekilde bir senaryo uygulanabilir. Bu makalemizde benzer adımları uygulayarak sizlere adım adım gösteriyor olacağız.
DNS Politikaları “Windows Server Technical Preview 2” sürümü ile sadece PowerShell komut satırı arabiriminden (CLI – Command Line Interface) yönetilebiliyor. Sonraki Preview versiyonlarında ya da RTM sürümünde DNS politikalarını grafiksel arayüzde DNS Server MMC konsolundan ya da üçüncü parti araçlarla yönetilebileceğini ön görüyoruz. PowerShell DNS modülü içerisinde DNS Politikaları yönetimi için kullanılan cmdlet listesini de aşağıda paylaşıyoruz:
Add-DnsServerRecursionScope
Remove-DnsServerRecursionScope
Set-DnsServerRecursionScope
Get-DnsServerRecursionScope
Add-DnsServerClientSubnet
Remove-DnsServerClientSubnet
Set-DnsServerClientSubnet
Get-DnsServerClientSubnet
Add-DnsServerQueryResolutionPolicy
Remove-DnsServerQueryResolutionPolicy
Set-DnsServerQueryResolutionPolicy
Get-DnsServerQueryResolutionPolicy
Enable-DnsServerPolicy
Disable-DnsServerPolicy
Add-DnsServerZoneTransferPolicy
Remove-DnsServerZoneTransferPolicy
Set-DnsServerZoneTransferPolicy
Get-DnsServerZoneTransferPolicy
DNS Politikaları ile çalışmaya başlamadan öncelikle Windows Server Technical Preview 2 sunucumuza DNS Server rolünü yüklememiz gerekiyor. Bu işlem için aşağıdaki PowerShell komutunu kullanabilirsiniz:
DNS rolünün kurulumu için Server Manager konsolu içerisinden Manage menüsünden Add Roles and Features sihirbazı kullanılarak da DNS Server rolü seçilip kurulum yapılabilir.
Kurulum sonrası aşağıdaki PowerShell komutu ile de kontrol edebilirsiniz:
DNS rolünün kurulumu sonrasında yapmamız gereken ikinci ön hazırlık DNS içerisinde “zone” açmak. Benim bulunduğum ortamda hali hazırda bir active directory domaini olduğu için active directory domain ismine ait mesutaladag.local isimli bir zone yapım bulunuyor. Buna ilaveten cozumpark.local vb. test amaçlı zone yapılarını da aşağıda oluşturuyor olacağız.
NOT : DNS politikaları Windows Server 2016 TP2 versiyonunda sadece standart primary zone için uygulanabilir durumda. Fakat DNS sunucumuz domain ortamında çalışan bir domain controller ya da domaine üye bir member server olabileceği gibi, workgroup ortamda çalışan bir stand-alone server da olabilir. Active Directory Integrated Zone için destek gelip gelmeyeceğini önümüzdeki sürümlerde takip ediyor olacağız. Diğer yandan DNS politikalarını uygulamak için DNS sunucumuzun işletim sisteminin Windows Server 2016 Technical Preview 2 ya da üzeri versiyonda olması gerekiyor.
Uygulama Adımları
DNS Politikalarını şu anki Windows Server 2016 TP2 sürümünde sadece PowerShell CLI’dan uygulanabildiğini yukarıda bahsettik. Genel olarak adımları maddeler halinde belirtirsek:
DNS İstemci Subnetlerinin Tanımlanması (DNS Client Subnet)
Zone Havuzlarının Oluşturulması (Zone Scope)
Zone Havuzu İçerisine Kayıt Eklenmesi
DNS Politikalarının Oluşturulması
Şimdi de bu adımları gerçekleştirelim:
Öncelikle PowerShell DNS modülü içerisinde DNS politikaları için gelen powershell komutlarını listeliyoruz:
Gördüğünüz gibi bu komutlar birer PowerShell fonksiyonu olarak geliyor.
Bu komutlara ilişkin yardım dosyalarının güncel halini indirmek için de aşağıdaki resimde de görülen Update-Help cmdlet kullanmanız yeterlidir:
DNS Politikalarını uygulamak için DNS sunucumuzda bir zone yapısına sahip olmamız gerekir demiştik. Test amaçlı olarak “cozumpark.local” isimli Standart Primary tipinde bir zone aşağıdaki PowerShell komutu ile oluşturuyoruz:
Zone oluştuktan sonra da bunun oluştuğunu kontrol ediyoruz:
Benim bulunduğum ortamda hali hazırda bir active directory domaini olduğu için active directory domain ismine ait mesutaladag.local isimli Active Directory Integrated tipinde bir zone yapım bulunuyor. Buna ilaveten şimdi oluşturduğumuz cozumpark.local isimli Standart Primary zone yapısını da listede görüyorsunuz.
DNS İstemci Subnetlerinin Tanımlanması (DNS Client Subnet) :
Öncelikle DNS trafik yönetim politikalarını oluşturacağız. Bunun için kural yazacağım DNS subnetlerini ve network adreslerini aşağıdaki şekilde tanımlıyorum:
Benim ağ yapımda 192.168.1.0/24 ve 192.168.2.0/24 olarak iki adet C class yapıda çalışan ip farklı ağ yapım var. Bunları Subnet1 ve Subnet2 olarak tanımladım. Siz de kendi yapınızda DNS politikası yazmak istediğiniz tüm subnetleri bu şekilde ayrı ayrı tanımlanamız gerekiyor. Subnet isimleri olarak Subnet1 ya da Subnet2 yerine Subnet-Istanbul, Subnet-Ankara ya da Subnet-Prod, Subnet-Dev gibi isimler de verebilirsiniz.
Zone Havuzlarının Oluşturulması (Zone Scope)
İkinci adımda da Zone Scope’ları tanımlayacağız.
ZoneScope, DNS politikasını uygulayacağımız Zone’ları içeren ve kural uygulama kapsamına almak istediğimiz subnetlerle ilişkilendirmeyi içeren yapılar olacak.
Zone Havuzu İçerisine Kayıt Eklenmesi
Şimdi de cozumpark.local zone’u içerisinde ismi “testrecord” olan A kaydı açıyoruz:
İsmi aynı olsa da farklı iki subnet için o subnetlere göre ip adreslerini tanımlıyoruz. Subnet1 için 192.168.1.111, Subnet2 için de 192.168.2.111 .
DNS Politikalarının Oluşturulması
Sıra geldi DNS Server tarafında gerekli politikamızı yazmaya. Bunun için son olarak da örnek iki adet politika yazacağız. DNS sunucunun kendisine gelen isteklere nasıl cevap vereceği bu politika içerisinde belirtilen kurala göre işleyecektir.
Yukarıdaki şekilde de görüldüğü gibi DNS sunucumuz üzerinde farklı iki subnet için gerekli kurallarımızı yazarak bunların DNS sunucudan alacakları cevapları belirlemiş olduk. Subnet1’den gelen isteklere Subnet1ZoneScope içerisinde tanımladığımız kayıtlarla Subnet2’den gelen isteklere de Subnet2ZoneScope içerisinde tanımladığımız kayıtlarla cevap verecek şekilde yapılandırdık.
Artık yazdığımız DNS politikalarını test etmek için hazırız. Test istemcilerimizi öncelikle Windows Server 2016 TP2 sürümünde çalışan DNS Sunucu adresini kullanacak şekilde ayarlıyoruz. Bu işlem için de Set-DNSClientServerAddress cmdlet kullanabilir ya da Network and Sharing Center içerisinde grafiksel arayüz kullanarak da Preferred DNS Server adresini belirleyebilirsiniz:
Şimdi oluşturduğumuz test record için farklı subnetlerde bulunan istemcilerin davranışlarını kontrol edeceğiz. Bizim örneğimizde 192.168.1.0/24 ve 192.168.2.0/24 subnetleri mevcut. Öncelikle 192.168.1.0 subnetindeki istemci üzerinden Resolve-DNSName isimli powershell cmdlet kullanarak testrecord.cozumpark.local kaydı için bir DNS isteği gönderiyoruz:
Görüldüğü gibi istemcinin subneti 192.168.1.0/24 olduğu için yazdığımız kurala uygun olarak 192.168.1.111 adresinden yanıt döndü.
Benzer şekilde Subnet2’den yine testrecord.cozumpark.local kaydı için bir DNS isteği gönderdiğimizde bize 192.168.2.111 olarak yanıt döndüğünü görüyoruz. Böylece yazmış olduğumuz kurala uygun olarak DNS sunucumuzun yanıt vermesini sağlamış olduk.
Şimdi de saat bazlı bir politika yazarak farklı bir senaryo uygulayalım. Bunun için Subnet1Policy isimli politikamızı sadece belli saatlerde cevap verecek şekilde güncelliyoruz. Bu işlem için aşağıdaki şekilde de görüldüğü gibi Set-DNSServerQueryResolutionPolicy cmdlet kullanıyoruz:
Bu yazdığımız kuralla DNS sunucumuzun cozumpark.local isimli zone için sadece 21:00 – 23:59 saatleri arasında cevap verecek şekilde bir kısıtlama uyguladık.
Bu kısıtlama sonrası istemciden test edeceğiz. Öncelikle DNS Client cache’ini Clear-DNSClientCache cmdlet ile temizliyoruz. Sonrasında da Get-Date cmdlet ile bulunduğumuz andaki sistem saatini kontrol ediyoruz:
Şu an bulunduğumuz saat 20:36 olduğu için DNS sunucumuz cozumpark.local isimli zone isteklerine cevap vermemesi gerekiyor. Şimdi testrecord.cozumpark.local isimli test kaydımızı tekrar sorgulayalım:
Evet aldığımız hatayı yukarıdaki şekilde görüyorsunuz. DNS sunucumuz böyle bir DNS kaydı olmadığını söylüyor. DNS sunucumun saatini 21:01 yapıyorum:
İstekte bulunacağım istemcime tekrar gidip DNS cache’ini temizleyip sonrasında tekrar istekte bulunduğumuzda herhangi bir sorun olmadan cevap verdiğini görüyoruz:
ÖNEMLİ NOT : Burada önemli olan sunucunun saatidir. DNS sunucumuz yazılan politikalar için saat kısıtlaması varsa burada kendi saatini baz alır.
Bu senaryoda da DNS sunucumuzun subnetlere göre farklı DNS zone’lar için sadece günün belli saatlerinde cevap vermesi, bu saatler dışında da o zone’lar için gelecek isteklere yanıt vermemesini sağlayabiliyoruz.
ÖZETLE :
Microsoft’un yeni nesil işletim sistemi olacak olan Windows Server 2016 geliştirme sürecinde “Windows Server Technical Preview 2” sürümü ile gelen yeniliklerden “DNS Politikaları” konusunu incelediğimiz iki bölümden oluşan makale serimizin ilkininin sonuna geldik. Windows Server 2016 çıkışı için henüz çok erken olsa da sizlerle şimdilik görünen yenilikleri paylaşmaya devam ediyoruz. Ürün şu an için geliştirme aşamasında olduğundan dolayı anlattığımız özelliklerde ya da arayüzlerde ileriki sürümlerde farklılıklar ya da özelliklerin kaldırılması, eklenmesi gerçekleşebilir. Biz de zaman içerisinde çıkacak yeni sürümlerdeki yenilikleri paylaşmaya çalışacağız. Windows Server Technical Preview 2 yeniliklerini incelemeye devam edeceğiz. “DNS Politikaları” konusunu incelediğimiz makalemizin ikinci bölümünde görüşmek üzere esenkalın.