Windows Server

Windows Server 2022 Hyper-v Workgroup Untrusted Replication

Merhaba, bu makalemizde Windows Server 2022 üzerinde kurulu olan Hyper-v sunucusu üzerinde workgroup ortamlarda replikasyon özelliğini ele alıyor olacağız. Bazı yapılarda Active Directory ortamı yer almayabilir veya olmak zorunda değildir. Bu gibi ortamlarda yetkisel yönetimsel işlemlerde birtakım sorunlar yaşayabiliriz. Active Directory olan ortamlarda Kerberos üzerinden replication işlemi zahmetsiz olarak yapılabilirken workgroup ortamlarda birtakım işlemler yaptıktan sonra yapının ayağa kalması söz konusu. Biz bu işlemleri detaylıca ele alıyor olacağız.

 Öncelikle ortamımıza göz atalım. Ortamımızda iki adet Windows Server 2022 sunucumuz var. Sunucu1 isimli sistem üzerinde Hyper-v kurulu ve Sunucu2 üzerinde kurulu olan Hyper-v üzerine replikasyon işlemi yapılmakta.

Ortamımıza biraz daha detaylı olarak göz atalım. Sunucu1 isimli ana sunucu ismi ve kurulu olan işletim sistemi bilgisi aşağıdaki gibi görünmekte.

Sunucu ve workgroup ismini yine aşağıdaki gibi görebiliyoruz.

Sunucumuz üzerinde ip yapılandırması aşağıdaki gibi.

Sunucumuzun üzerinde DNS kurulu olmadığı için ortamda birbirlerine isim üzerinden erişim sağlayabilmeleri için host dosyası üzerinde ilgili tanımlamalarımız yapılmış durumda.

Sunucumuza erişim sağlanması için File and Printer Sharing özelliği aktif durumda.

SUNUCU1 isimli sunucumuz üzerinde Hyper-v kurulu durumda ve üzerinde bir adet sanal makina çalışır durumda.

Sunucu2 isimli sunucumuzun ismi ve işletim sistemi versiyonu aşağıdaki gibidir.

Sunucu2 isim ve workgroup bilgisi yine aşağıdaki gibidir.

Sunucumuzun ip bilgileri aşağıdaki gibidir.

Sunucu2 üzerinde yine Host dosyası üzerinde ayarlarımız aşağıdaki gibi tanımlanmış olarak gözükmekte.

Sunucu2 üzerinde yine File and Printer Sharing izinleri verilmiş durumda.

Sunucu2 üzerinde Hyper-v kurulmuş ve çalışır durumda.

Sunucu1 üzerinden Sunucu2’ye ismi ile ping atabiliyoruz.

Sunucu2 üzerinden Sunucu1’e yine ping atılabilir durumda.

Replikasyon işlemlerinin yapılabilmesi için PowerShell kullanımını yoğun olarak yapacağız. Uygulayacağımız komutları hangi sistem üzerinde uygulayacağımız ve komutun ne işe yaradığını her komutta belirteceğim. Öncelikle Sunucu2 üzerinde aşağıdaki komutu çalıştıralım.

Bu komut replikasyon sırasında gerekli olan HTTPS portuna izin vererek kendisine doğru bir replikasyon trafiğinin https portu üzerinden gelmesine izin verilmesi işlemini yapar. Bu işlemi dilerseniz Windows Firewall üzerinden kendinizde yapabilirsiniz.

Enable-Netfirewallrule -DisplayName 'Hyper-V Replica HTTPS Listener (TCP-In)'

Yine Sunucu2 üzerinde çalıştırılacak aşağıdaki komut yukarıda çalıştırdığımız komutun aktif olup olmadığını ve durumunu kontrol eder.

Get-Netfirewallrule -DisplayName 'Hyper-V Replica HTTPS Listener (TCP-In)'

Komut çıktısı Windows Firewall üzerinde aşağıdaki gibi görünebilmektedir.

Ön hazırlıklar sonrasında Workgroup ortamında replikasyon için bize gerekli olan sertifika işlemlerini yapmamız gerekmektedir. Normalde global sertifika sağlayıcılar üzerinden sertifika almamız mümkün. Ancak gereksiz maliyet oluşturmamak adına bu işlemleri kendi sunucularımız üzerinde oluşturacak olduğumuz sertifikalar ile sağlayabiliriz. Sunucu1 üzerinde aşağıdaki çalıştıracak olduğumuz aşağıdaki komut seti sunucunun üzerinde Personel Sertifikaları oluşturmamıza yardımcı olacak değişkenleri tanımlamamızı sağlar. Bir işlev yapmaz bir sonraki adımda kullanılacak olan değişkenlerin tanımını içerir.

$rootCA_Name = 'Hyper-V Root CA'
$hostnames = @('sunucu1','sunucu2')
$CertPassword = 'Password' | ConvertTo-SecureString -Force -AsPlainText
$CertFolder = 'C:\HPVCerts'

Sunucu1 üzerinde aşağıdaki çalıştıracak olduğumuz komut seti sunucunun üzerinde Personel Sertifikaları içerisinde bir kök sertifika oluşturma işlemi yapar. Bu aşamada sonra Personel Sertifikaları içerine aşağıdaki özelliklerde 10 yıllık, 2048 bit RSA SHA256 özelliklerinde bir sertifika oluşturuldu.

$rootCA = New-SelfSignedCertificate `
-Subject $rootCA_Name  `
-FriendlyName $rootCA_Name `
-KeyExportPolicy Exportable  `
-KeyUsage CertSign  `
-KeyLength 2048  `
-KeyUsageProperty All  `
-KeyAlgorithm 'RSA'  `
-HashAlgorithm 'SHA256'  `
-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"  `
-NotAfter (Get-Date).AddYears(10)

Sunucu1 üzerinde aşağıda çalıştıracak olduğumuz komut seti ise, oluşturulan sertifikaya sunucunun kendisinin güvenmesi için Güvenilen Kök Sertifikalar içerisine kopyalanmasını sağlar.


$rootStore = [System.Security.Cryptography.X509Certificates.X509Store]::new("Root","LocalMachine")
$rootStore.Open("ReadWrite")
$rootStore.Add($rootCA)
$rootStore.Close()

Sunucu1 üzerinde aşağıda çalıştıracak olduğumuz komut seti ise, oluşturulan sertifikaya tanımlanan değişkende belirtilen yol üzerine export eder. Yani C:\HPVCerts klasörü içerisine.

$rootCA | Export-PfxCertificate -FilePath "$CertFolder\$($rootCA_Name).pfx" -Password $CertPassword -Force

Sunucu1 üzerinde son olarak kullanacağımız aşağıdaki komut seti ise oluşturulan kök sertifikası tarafından imzalanmış bir sertifika oluşturulması işlemini yapar. Yine 2048 bit, RSA, SHA256 özelliklerinde 10 yıllık bir sertifika oluşturur.


$hostnames | ForEach-Object {
	$name = $_
	## Create the certificate
	New-SelfSignedCertificate `
	-FriendlyName $name `
	-Subject $name `
	-KeyExportPolicy Exportable `
	-CertStoreLocation "Cert:\LocalMachine\My" `
	-Signer $rootCA `
	-KeyLength 2048  `
	-KeyAlgorithm 'RSA'  `
	-HashAlgorithm 'SHA256'  `
	-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"  `
	-NotAfter (Get-Date).AddYears(10) |
	## Export the certificate
	Export-PfxCertificate -FilePath "$CertFolder\$($name).pfx" -Password $CertPassword -Force
}

Şimdiye kadar olan duruma göz atarsak Sunucu1 üzerinde C:\HPVCerts klasörü içerisinde bir kök sertifika, Sunucu1 ve Sunucu2 için oluşturulan sertifikaları görebiliyoruz.

Sunucu1 üzerindeki Hyper-v Root CA ve sunucu2 isimli sertifikaları kopyalayarak Sunucu2 üzerinde aynı şekilde oluşturulmuş olan dizindeki C:\HPVCerts içerisine kopyalayalım. Buraya kadar olan kısımda değişkenler yardımıyla birçok işlev komutlarla otomatik olarak meydana geldi. Sunucu isimlere göre sunucu sertifikalarımız da bu şekilde oluştu.

Sunucu1 tarafında işlemlerimiz sertifikalar açısından tamamlandı. Şimdi aşağıdaki işlemlerimizi Sunucu2 üzerinde yapıyor olacağız. Aşağıda çalıştıracak olduğumuz komut setimiz oluşturulmuş ve C:\HPVCerts klasörü içerinde bulunan sertifikalarımızı Güvenilen Kök Sertifikaları deposuna taşır. Aşağıdaki komut setinde yer alan kalın olarak işaretlenmiş ‘Password’  alanına kendinize özgü parola ataması yapabilirsiniz.

$rootCA_Name = 'Hyper-V Root CA'
$CertFolder = 'C:\HPVCerts'
$CertPassword = 'Password' | ConvertTo-SecureString -Force -AsPlainText
Import-PfxCertificate  "$CertFolder\$($rootCA_Name).pfx" -CertStoreLocation Cert:\LocalMachine\Root -Password $CertPassword

Yine Sunucu2 üzerinde çalıştıracak olduğumuz aşağıdaki komut seti Sunucu sertifikasını Kişisel sertifika deposuna taşır.

Import-PfxCertificate  "$CertFolder\$($env:COMPUTERNAME).pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $CertPassword

Sunucu2 üzerinde  son olarak aşağıda çalıştıracağımız komut seti ise sertifika iptali denetimini devre dışı bırakmak için Hyper-V kayıt defterini yapılandırır. Bunu yaparken, Hyper-V, kendinden imzalı sertifikada bulunmayan sertifikanın iptal ayrıntılarını kontrol etmeye çalışmaz.

New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication" -Name "DisableCertRevocationCheck" -Value 1 -PropertyType DWORD -Force

Yapılan işlemlerin birçoğu gui üzerinden yapılabilir. Biz kolaylık ve hız açısından powershell tercih ettik. Sunucu2 üzerinde Trusted Root sertifikalarının altından root sertifikamızı aşağıdaki gibi görebiliyoruz.

Sunucu2 için oluşturulan sertifikanın yine Personel Sertifikalarının altına kopyalandığını görebiliyoruz. Tabi bu sertifika işlemlerinin oluşturma işlerini Sunucu1 üzerinde yaptığımız için ilgili sertifikalar Sunucu1 için Sunucu1 üzerinde oluştu ve ilgili sertifika depolarında tutulmakta.

Bu kadar ön hazırlıktan sonra artık replikasyon sürecine geçebiliriz. Bu hazırlıklar olmaz ise zaten Workgroup untrusted ortamlarda replikasyon yapamayız. Şimdi öncelikle replikasyon alabilmesi için Sunucu2 üzerindeki ayarları yapalım. Sunucu1 üzerinden gelen replikasyonları Sunucu2 karşılayacak. SUNUCU2 öğesi üzerinde sağ tıklayarak açılan menüden Hyper-v Settings… menüsü açalım.

Açılan ekranda Replication Configuration menüsünü açalım.

Enable this computer as a Replica Server onay kutusuna tıklayarak replikasyonu açık duruma getirelim. Use certificate-based Authentication onay kutusunu işaretleyerek replikasyonun HTTPS 443 portu üzerinden gerçekleşmesini sağlayalım. Burada 80 portu Active Directory ortamlarında kerberos üzerinden gerçekleştirilen replikasyon senaryolarında seçilmektedir. Select Certificate… butonuna tıklayarak ilgili sertifikanın seçilmesini sağlayalım.

Sunucu2 isimli oluşturulan sertifikamız bulundu. Click here to view sertificate properties linkine tıklayarak sertifikayı görelim.

Oluşturulan sertifikamıza ait bilgiler aşağıdaki gibi. Bu ekranımızı kapatabiliriz.

OK ile bu ekranı kapatalım.

Sertifikamız seçili duruma geldi. Allow replication from any authenticated server alanında ise replikasyon olarak gelen sanal makinaların tutulacağı yolu belirleyebiliriz. Ben varsayılan konumda tutulmasını istemiyorum. Browse… ile ilgili yolu belirleyeceğim.

Yol olarak daha önce oluşturulan Hyper-v Replica klasörünü seçip Select Folder ile onaylıyorum.

Gerekli ayarlarımız tamamlandı. OK ile bu ekranı kapatabiliriz.

Firewall üzerinde gerekli rule tanımlaması yapıldı. Biz bunu zaten önceden yapmıştık. OK ile bu ekranı kapatalım.

Bazı durumlarda bu ekranda başarılı sonuç almadan No Valid certificate found hatası almanız mümkün.

Bu durumda sunucu üzerindeki sertifikaları kontrol etmeniz gerekmekte. Sertifika sağlayan sunucu üzerinde personel sertifikalarınızı görüyor olmanız gerekmekte. Makale adımlarını sırası ile yapmanız durumunda bu hatayı görme olasılığınız bulunmamakta.

Bu kadar hazırlıktan sonra artık Sunucu1 üzerindeki sanal makinamızı Sunucu2 üzerine replike etmek için hazır durumdayız. Sanal makinamız üzerinde sağ tıklayarak açılan menüden Enable Replication… menüsüne tıklayalım.

Bilgilendirme ekranını Next ile geçelim.

Sanal makinamızı replike edeceğimiz sunucu adını ilgili alana yazalım veya Browse… ile seçelim. Ben sunucu adını Sunucu2 olarak yazıp Next ile sonraki adıma ilerliyorum.

İlgili ekranda portumuz 443 olarak gelmekte. Biz sertifikalı ve Https üzerinden replikasyon yapacağımız için bu ayarı olduğu gibi bırakıyoruz. Kullanılacak olan sertifika seçimi için Select Certificate… butonuna tıklayalım.

İlgili sertifika Sunucu1 olarak bulundu. Click here to view certificate properties linkine tıklayarak detaylara bakalım.

Sertifika detaylarımız aşağıdaki gibi. OK ile  bu ekranı kapatalım.

OK ile bu ekranda da çıkalım.

Burada replikasyon yapılacak olan sanal makine disklerimizi seçiyoruz. Benim sanal makinam üzerinde tek bir disk olduğu için bunu seçerek Next ile ilerliyorum.

Replikasyonun ne kadar zamanda bir yapılacağını seçebiliyoruz. Benim için 5 dakikalık bir zaman dilimi yeterli. Siz buradaki iş kritik sanal makinanıza göre seçim yapabilirsiniz. Next ile sonraki ekrana ilerliyoruz.

Replikasyon sırasında geriye dönük olarak tutulacak recovery pointleri bu ekranımızdan belirleyebiliriz. İsteğe göre birden fazla kopya tutabilirsiniz. Ben birden fazla geri dönüş noktası tutacak şekilde ayarladım. Failover durumlarında en son noktada en güncel veriye sahip olacağımız için konuma dönmemiz yararlı olacaktır. Next ile sonraki ekrana ilerleyelim.

Replikasyon için karşı tarafa dosya kopyalama ve zamanlama gibi ayarları yapabileceğiniz bu ekranda biz varsayılan ayarlara dokunmadan işlem sonunda replikasyonun başlamasını sağlayacağız. Bu nedenle Next ile sonraki adıma ilerliyoruz.

Ayarlarımızın bir özeti karşımıza geldi. Finish ile birlikte replikasyon işlemlerimizin oluşmasını ve başlamasını sağlayalım.

Replikasyon süreci başladı. Bu replikasyon yapılacak sanal makine boyutu ve donanım hızınıza bağlı olarak belli bir zaman alacaktır. Bizim test ortamımızda XP sanal makine olduğundan veri miktarı çok düşük bu nedenle çok kısa sürecektir.

Biraz bekledikten sonra replikasyon işleminin başarı ile tamamlandığı bilgisi ekranımıza geldi. Close ile kapatalım.

Sunucu1 üzerindeki sanal makine üzerinde sağ tıkladığımızda açılan menüden Replication->View Replication Health… menüsüne tıklayalım.

Replikasyon istatistiklerimiz geldi. Sorunsuzca devam etmekte.

Replikasyon yapılan Sunucu2 tarafında ise durum aşağıdaki gibi. Sanal makinamız replike olmuş durumda.

C:\Hyper-v Replica klasörümüze baktığımızda ilgili verilen yazılmış olduğu görülmekte.

Bir makalemizin daha sonuna geldik. Umarım yararlı olur. Bir başka makalede görüşmek dileği ile.

Rıza ŞAHAN

www.rizasahan.com

İlgili Makaleler

4 Yorum

  1. Rıza Bey Merhaba,
    Makale için emeğinize sağlık. Ancak bir noktada eksik kalan veya hatalı olan bir bilgi var. “Sunucu2 üzerinde son olarak aşağıda çalıştıracağımız komut seti ise sertifika iptali denetimini devre dışı bırakmak için Hyper-V kayıt defterini yapılandırır.” dediğiniz nokta sadece Sunucu2 için yapıldığında Sunucu1 üzerinde Enable Replication bölümünde hata alınıyor. Bu adımı Sunucu1 için de yaparsak hata gideriliyor ve replikasyon başarılı oluyor. Bilginiz olsun.
    Tekrar emeğinize sağlık.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu