Uzak masaüstü istemcisinin verdiği hata mesajları neredeyse hiçbir şey söylemez. “Bağlanamıyor” cümlesinin arkasında birbirinden bağımsız sekiz durum vardır ve her birinin çözümü farklıdır.
Sıra önemlidir: alt katmandaki bir sorun, üstteki her kontrolü anlamsız kılar.
1. Ad gerçekten doğru makineye mi çözülüyor
En sık atlanan ve en çok zaman kaybettiren adım budur.
Resolve-DnsName SUNUCU -Type A
Birden çok adres dönüyorsa, eskiden kaldırılmış bir makinenin kaydı hâlâ duruyor olabilir. İstemci sırayla dener ve yanlış adrese takılır.
2. Uzak masaüstü açık mı, hangi portu dinliyor
Port varsayılan sanılır; oysa değiştirilmiş olabilir ve kimse hatırlamaz.
$ts = 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server'
(Get-ItemProperty $ts).fDenyTSConnections # 1 ise kapalı
(Get-ItemProperty "$ts\WinStations\RDP-Tcp").PortNumber # gerçek port
(Get-ItemProperty "$ts\WinStations\RDP-Tcp").UserAuthentication # 1 ise NLA açık
fDenyTSConnections değeri 1 ise uzak masaüstü sistem düzeyinde kapalıdır — ve bu ayar bir grup ilkesiyle gelmiş olabilir. Makinede elle açsanız da bir sonraki ilke uygulamasında geri kapanır.
3. Port dışarıdan erişilebiliyor mu
Test-NetConnection SUNUCU -Port 3389
PingSucceeded doğru ama TcpTestSucceeded yanlışsa makine ayaktadır, sorun port düzeyindedir: güvenlik duvarı, servis ya da yönlendirme.
4. Güvenlik duvarı kuralı etkin mi
Kural vardır ama profili yanlıştır — en sık görülen hâli budur. Makine “Genel” ağ profiline düşmüşse, yalnızca “Etki alanı” profilinde etkin olan kural devreye girmez.
Get-NetFirewallRule -Group '@FirewallAPI.dll,-28752' |
Where-Object Direction -eq 'Inbound' |
Select-Object DisplayName, Enabled, Profile, Action
Bir ağ kartı eklendikten ya da VPN kurulduktan sonra profil sessizce değişebilir.
5. Sertifika süresi dolmuş olabilir
Kendinden imzalı dinleyici sertifikası dolduğunda bazı istemciler bağlantıyı doğrudan reddeder. Belirti “dün çalışıyordu” olur.
Betiğin beşinci adımı bunu dışarıdan bakarak ölçer — kayıt defterindeki değere değil, sunucunun gerçekten sunduğu sertifikaya bakar.
6. Kullanıcının yetkisi var mı
Yönetici bağlanabiliyor, kullanıcı bağlanamıyorsa cevap buradadır.
Get-LocalGroupMember -Group 'Remote Desktop Users'
Yerel grupta görünmüyorsa bir etki alanı grubu üzerinden yetkili olabilir. Ayrıca grup ilkesindeki “Uzak Masaüstü Hizmetleri ile oturum açmayı reddet” hakkı, grup üyeliğini ezer ve kimse oraya bakmaz.
7. Oturum sınırına takılmış olabilir
İstemci işletim sistemlerinde aynı anda tek oturum açılabilir. Sunucuda ise terk edilmiş oturumlar bağlantı sayısını doldurabilir.
quser /server:SUNUCU
Disc durumundakiler kopmuş ama hâlâ bellek tutan oturumlardır. Zaman aşımı tanımlı değilse süresiz birikirler; ayrımı uzak oturum kopmaları rehberinde.
8. Günlükler ne diyor
Son adım, tahmin etmeyi bırakıp kayda bakmaktır.
Get-WinEvent -LogName 'Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational' -MaxEvents 50
Get-WinEvent -FilterHashtable @{ LogName='Security'; Id=4625 } -MaxEvents 50
Çok sayıda 4625 kaydı iki şey anlatır: ya eski bir kimlik bilgisi bir yerde takılı kalmıştır, ya da dışarıdan deneme trafiği alıyorsunuzdur. İkincisi bir yapılandırma sorunu değil, portun internete açık olduğunun işaretidir; kapatma yolları RDP’yi internete açmadan yayınlamak rehberinde.
Doğrulama adımı
Betiği çalıştırıp özet bölümünü okuyun. Bulgu listesi boşsa zincir sunucu tarafında sağlamdır ve sorun istemcide ya da ağ yolundadır — o durumda aynı makineye başka bir ağdan bağlanmayı deneyin.
Bir düzeltme yaptıysanız, betiği ikinci kez çalıştırıp ilgili bulgunun kaybolduğunu görün. Kaybolmadıysa değişiklik uygulanmamıştır; grup ilkesiyle geri yazılıyor olabilir.