WireGuard Windows kurulumu
Bu kılavuz, iki Windows makinesi arasında bir WireGuard VPN tünelinin nasıl kurulacağını açıklamaktadır: uzak bir Windows ana bilgisayarında (örneğin bir Windows VPS) çalışan bir WireGuard sunucusu ile yerel Windows bilgisayarınızda çalışan bir WireGuard istemcisi. Tünel etkin hale geldiğinde, iki bilgisayar şifreli özel bir bağlantı üzerinden veri alışverişi yapar ve isteğe bağlı olarak istemcinin tüm trafiğini sunucu üzerinden yönlendirebilirsiniz.
Anahtar oluşturma işlemini basit tutmak için, bu kılavuzda hem sunucu hem de istemci yapılandırmaları tek bir WireGuard uygulaması içinde oluşturulur ve ardından her bir yapılandırma dosyası ait olduğu makineye dağıtılır. Sunucu yapılandırması sunucuda, istemci yapılandırması ise istemcide çalışır. Sunucu ve istemci her zaman ayrı makinelerdir. Ek istemcileri eklemek için de aynı süreç kullanılır.
Başlamadan önce, hem sunucuya hem de istemciye WireGuard kurulum sayfasından WireGuard'ın en son sürümünü yükleyin ve her iki makinede de yönetici haklarına sahip olduğunuzdan emin olun.
Bu kılavuzdaki kurulum şu şekildedir:
Server (public IP, listening on UDP 51820) Tunnel address 10.0.0.1/24 | | encrypted WireGuard tunnel | Client Tunnel address 10.0.0.2/32
Sunucu yapılandırmasını oluşturma
C:\Program Files\WireGuard\wireguard.exe dosyasını çalıştırın, Tünel ekle seçeneğine tıklayın ve Boş tünel ekle seçeneğini seçin. WireGuard otomatik olarak bir anahtar çifti oluşturur. Pencerenin üst kısmında gösterilen açık anahtar, sunucunun açık anahtarıdır. Bu anahtara, daha sonra istemciyi yapılandırırken ihtiyacınız olacak.

Tünele bir ad verin ve arayüz bölümüne sunucunun özel anahtarını, WireGuard'ın dinleyeceği bağlantı noktasını ve sunucunun tünel içinde kullanacağı dahili adresi girin.
[Interface] PrivateKey = # private key of the WireGuard server ListenPort = # port that WireGuard will listen on Address = # internal IP address of the WireGuard server, for example 10.0.0.1/24

Tünel ağı için özel bir alt ağ kullanın ve sunucu ile tüm istemcileri aynı aralıkta tutun. Yaygın bir seçim, sunucu için 10.0.0.1/24 ve her istemci için 10.0.0.2/32, 10.0.0.3/32 vb. şeklindedir. Sunucu /24 önekini kullandığından, tüm tünel aralığını WireGuard arayüzü üzerinden erişilebilir olarak değerlendirir. Her istemci /32 önekini kullanır, çünkü bir istemci bir alt ağdan ziyade tek bir adresi temsil eder. /24 olarak ayarlanan bir istemci, tüm aralığın kendi arayüzünde olduğunu varsayar ve tünel üzerinden diğer tünel adreslerine trafik göndermez.
Tünel düzenleyicisinde, yapılandırma alanının altında, isteğe bağlı olarak Tünel dışı trafiği engelle (kill-switch) seçeneğini etkinleştirebilirsiniz; bu, tünelin dışına çıkacak her türlü trafiği engeller. Ayrıca, ek bir güvenlik katmanı sağlayan Önceden Paylaşılan Anahtar'ı da ayarlayabilirsiniz. Her iki seçenek de isteğe bağlıdır. Kill-switch'in ne zaman yararlı olduğu ve neleri engellediği hakkında bilgi için "AllowedIP'leri Anlama" bölümüne bakın.

İstemci yapılandırmasını oluşturma
"Tünel Ekle"yi tıklayın ve ikinci kez "Boş tünel ekle"yi seçin; bu sefer istemci için. Bu tünel için gösterilen açık anahtar, sunucunun istemciyi kabul etmek için ihtiyaç duyduğu istemci açık anahtarıdır.
İstemci yapılandırmasını doldurun:
[Interface] PrivateKey = # private key of the WireGuard client Address = # internal IP address of the WireGuard client, for example 10.0.0.2/32 DNS = 1.1.1.1, 1.0.0.1 [Peer] PublicKey = # public key of the WireGuard server AllowedIPs = # 0.0.0.0/0 for a full tunnel, or 10.0.0.0/24 for a split tunnel Endpoint = # public IP address and port of the WireGuard server PersistentKeepalive = 25
Uç Nokta, iç tünel adresi değil, sunucunun gerçek genel IP adresi ile sunucunun ListenPort'unda ayarlanan bağlantı noktası olmalıdır. AllowedIPs değerini seçme konusunda yardım için aşağıdaki "AllowedIPs'i Anlama" bölümüne bakın.
DNS ve PersistentKeepalive satırları isteğe bağlıdır. DNS, tünel aktifken kullanılan DNS sunucularını ayarlar; bu da bağlantı kurulduktan sonra ad çözümleme sorunlarının önlenmesini sağlar. 1.1.1.1, 1.0.0.1 veya 8.8.8.8, 8.8.4.4 gibi genel ad çözümleyicileri ya da VPN ağının kendi DNS sunucusunu kullanabilirsiniz. PersistentKeepalive = 25, her 25 saniyede bir küçük bir paket gönderir ve istemci NAT arkasında olduğunda bağlantının açık kalmasına yardımcı olur.
Anahtarları ve Uç Noktayı çok dikkatli bir şekilde kopyalayın. Yanlış yazılmış bir anahtar veya hatalı bir Uç Nokta, tünelin bağlanamamasının en yaygın nedenidir.

İstemciyi sunucuya ekleme
Sunucu yapılandırmasını tekrar açın ve önceki adımda aldığınız istemci açık anahtarını kullanarak istemci için bir [Peer] bölümü ekleyin.
[Peer] PublicKey = # public key of the WireGuard client AllowedIPs = # internal IP address of the client
Sunucu yapılandırmasında AllowedIPs'nin iki işlevi vardır. Sunucuya hangi tünel adresinin bu istemciye ait olduğunu bildirir ve bir yönlendirme listesi görevi görür: bu aralıklara adreslenmiş tüm paketler şifrelenir ve bu eşe gönderilir. Tek bir istemci için bu, onun tünel adresidir; örneğin 10.0.0.2/32. İstemcinin tünel üzerinden bir yerel ağa da erişim sağlaması gerekiyorsa, bu alt ağı da buraya ekleyin; örneğin 10.0.0.2/32, 192.168.1.0/24. Her ek istemci için bu adımı tekrarlayın.

Sunucuda Windows Güvenlik Duvarı'nı yapılandırma
Sunucu, UDP bağlantı noktası üzerinden gelen WireGuard trafiğini kabul etmelidir. Gelişmiş Güvenlikli Windows Defender Güvenlik Duvarı'nı açın, Gelen Kurallar'ı seçin ve Yeni Kural'a tıklayın. "Bağlantı Noktası"nı seçin ve "İleri"ye tıklayın. "UDP"yi seçin, WireGuard bağlantı noktasını girin (örneğin 51820) ve "İleri"ye tıklayın. Birden fazla bağlantı noktası kullanıyorsanız, bağlantı noktalarını virgülle ayırarak listeleyin (örneğin 51820, 51821). Bağlantıya izin ver seçeneğini seçin ve İleri'ye tıklayın. Kuralın geçerli olacağı profilleri seçin. Sunucu bir veri merkezinde barındırılıyorsa, genellikle Genel profil yeterlidir; aksi takdirde Etki Alanı, Özel ve Genel profillerini seçili bırakın. İleri'ye tıklayın, kurala WireGuard UDP 51820 gibi açık bir ad verin ve Bitir'e tıklayın.
Bu gelen kural yalnızca sunucuda gereklidir, çünkü gelen bağlantıları alan taraf sunucudur. Bir VPS'de, barındırma sağlayıcınızın yalnızca Windows Güvenlik Duvarı'nda değil, ağ düzeyinde de bu bağlantı noktasında gelen UDP trafiğine izin verdiğinden emin olun.
Yapılandırmaları dışa aktarma ve dağıtma
Her iki yapılandırma da hazır olduğunda, Tüm tünelleri zip dosyasına aktar seçeneğine tıklayın, bir konum seçin ve kaydedin.

Arşivi açarak tüm tünellerin yapılandırma dosyalarını bulun. Sunucu yapılandırmasını sunucuya yerleştirin ve her istemciye kendi yapılandırma dosyasını verin. Makine birçok tünel barındırıyorsa, bağlam menüsünden tek bir tüneli de dışa aktarabilirsiniz. Bu kılavuzda olduğu gibi, her iki tünel de aynı makinede oluşturulmuşsa, bir zip dosyasına dışa aktarma işlemi kullanışlıdır. Her yapılandırmayı doğrudan kendi ana bilgisayarında oluşturursanız, dışa aktarma gerekmez ve yapılandırma dosyasını manuel olarak kopyalayabilirsiniz.
Sunucuda, sunucu yapılandırmasını seçin ve Etkinleştir'e tıklayın.

İstemcide, Tünel Ekle'ye tıklayın, istemci yapılandırma dosyasını seçin ve açın.

Ardından Etkinleştir'e tıklayın.

İlk istemci artık yapılandırılmıştır. Diğer istemcileri de aynı şekilde ekleyin: her istemci için yeni bir boş tünel oluşturun ve "İstemciyi sunucuya ekleme" bölümünde açıklandığı gibi, o istemcinin açık anahtarı ve tünel adresini içeren uygun bir [Peer] bölümünü sunucu yapılandırmasına ekleyin.
WireGuard'ı bir RDP oturumu üzerinden uzak bir sunucuda yapılandırıyorsanız, tüm trafiği yönlendiren bir tüneli etkinleştirmeden önce "AllowedIPs'i Anlama" bölümünü okuyun. AllowedIPs = 0.0.0.0/0 olan bir yapılandırma, sunucunun kendi trafiğini tünele yönlendirebilir ve RDP bağlantınızı kesebilir.
Bağlantıyı Doğrulama
Tüneli etkinleştirdikten sonra, Windows, Ağ ve Paylaşım Merkezi'nde WireGuard adaptörünü "Ağ erişimi yok" veya "İnternet erişimi yok" olarak gösterebilir. Bu beklenen bir davranıştır, çünkü Windows, VPN tünel adaptörlerini standart internet bağlantıları olarak değerlendirmez ve bu durum tüneli etkilemez. Windows, belirli Microsoft URL'lerini kontrol eden bağlantı denetimi ile bu durumu belirler; bu nedenle, tünel çalışsa bile bu denetimler engellenmişse veya DNS'niz tarafından çözümlenememişse bu uyarı görüntülenebilir.
Tünelin çalıştığını doğrulamak için WireGuard istemcisinde durumunu kontrol edin. Etkin bir tünel, veri aktarım sayaçlarıyla birlikte "Etkin " durumunu gösterir. Sayaçlar artıyorsa, tünel trafik aktarıyor demektir.
Sunucuda, tünel aktifken WireGuard'ın UDP bağlantı noktasını dinlediğini de doğrulayabilirsiniz:
netstat -ano | findstr 51820
PowerShell'de buna karşılık gelen komut şöyledir:
Get-NetUDPEndpoint -LocalPort 51820
51820 değerini kendi WireGuard bağlantı noktanızla değiştirin. Herhangi bir sonuç dönmezse, tünel aktif değildir veya bağlantı noktası sunucu yapılandırmasında ayarlanan bağlantı noktasından farklıdır.
Ardından, Komut İstemi'ni açın ve sunucunun dahili tünel adresine ping atın:
ping 10.0.0.1
10.0.0.1 değerini, sunucu için ayarladığınız gerçek dahili IP adresiyle değiştirin. Yanıtlar, tünelin çalıştığını doğrular.
İstemci AllowedIPs = 0.0.0.0/0 kullanıyorsa, trafiğin tünel üzerinden yönlendirildiğini de doğrulayabilirsiniz:
tracert 8.8.8.8
İlk atlama noktası, WireGuard sunucusunun dahili IP adresi olmalıdır.
WireGuard el sıkışmasını kontrol etme
El sıkışma, bir WireGuard bağlantısını teşhis ederken en yararlı göstergedir. WireGuard uygulamasında tüneli açın ve " En Son El Sıkışma " alanını izleyin. Çalışan bir tünelde el sıkışma, etkinleştirildikten birkaç saniye sonra görünür ve veri aktarımı sırasında periyodik olarak güncellenir. Tünel atıl durumdaysa, el sıkışma işlemleri arasında biraz zaman geçebilir; bu nedenle kısa bir ara olması normaldir. Alan boş kalırsa, eşler birbirlerine ulaşamıyordur; bu durum genellikle yanlış bir UDP Uç Noktası, kapalı bir UDP bağlantı noktası veya uyuşmayan anahtarlara işaret eder.
WireGuard ile birlikte gelen wg aracını kullanarak komut satırından da el sıkışmasını kontrol edebilirsiniz:
wg show
Çıktıda her bir eş, en son el sıkışma zamanı ve aktarım sayaçlarıyla birlikte listelenir.
AllowedIPs'yi Anlama
İstemci yapılandırmasındaki AllowedIPs değeri, hangi trafiğin tünel üzerinden gönderileceğini belirler. Kısaca, istemcide AllowedIPs hangi paketlerin tünele gönderileceğini belirlerken, sunucuda ise belirli bir istemciden hangi paketlerin kabul edileceğini ve bunların nereye yönlendirileceğini belirler.
0.0.0.0/0 değeri, sıradan internet taraması da dahil olmak üzere tüm trafiği tünel üzerinden yönlendirir. Tam trafik koruması istediğinizde bunu kullanın. Bu trafiğin internete ulaşabilmesi için sunucunun onu çevirmesi gerekir. Aşağıdaki "Tam tünelleme için sunucuda NAT yapılandırma" bölümüne bakın.
10.0.0.0/24 gibi bir değer, yalnızca iç ağ trafiğini tünel üzerinden yönlendirirken, normal internet trafiği normal bağlantıyı kullanmaya devam eder. Yalnızca uzak ağdaki belirli kaynaklara erişmeniz gerektiğinde bunu kullanın.
Virgülle ayrılmış birkaç alt ağı listeleyebilirsiniz, örneğin 10.0.0.0/24, 192.168.1.0/24.
Tünel düzenleyicisindeki Tünel Dışı Trafiği Engelle (kill-switch) seçeneği, AllowedIPs = 0.0.0.0/0 ayarıyla tam olarak devreye girer. Bu seçenek, tünelin dışına çıkacak her türlü trafiği engeller; bu da yerel ağı da engeller. Yazıcılara veya diğer LAN cihazlarına erişmeniz gerekiyorsa, kill-switch seçeneğini devre dışı bırakın.
AllowedIPs = 0.0.0.0/0 ayarı, her bağlantıyı tünel üzerinden yönlendirir. Bunu RDP üzerinden yönettiğiniz bir uzak sunucuya uygularsanız, sunucunun trafiği yeniden yönlendirildiği için tünel aktif hale gelir gelmez RDP oturumu kesilebilir. RDP üzerinden erişilen bir sunucuda, yalnızca ihtiyacınız olan alt ağları yönlendirin ve 0.0.0.0/0 değerine geçmeden önce dar bir AllowedIPs değeriyle test edin.
Tam tünelleme için sunucuda NAT'ı yapılandırma
İstemciler AllowedIPs = 0.0.0.0/0 kullanıyorsa ve trafiğinin sunucu üzerinden internete ulaşmasını istiyorsanız, sunucunun dahili WireGuard adreslerini kendi harici adresine çevirmesi gerekir. Windows'ta bu işlem, Linux'ta kullanılan PostUp ve PostDown komut dosyalarıyla değil, New-NetNat komutuyla yapılır.
Sunucuda PowerShell'i yönetici olarak açın ve sunucuya atadığınız tünel alt ağı kullanarak aşağıdakini çalıştırın:
New-NetNat -Name WireGuardNAT -InternalIPInterfaceAddressPrefix 10.0.0.0/24
10.0.0.0/24'ü tünel alt ağınızla değiştirin ve öneklerin atadığınız tüm istemci adreslerini kapsadığından emin olun. Bu aralığın dışındaki bir istemci, örneğin 10.0.1.2, bu kural ile eşleşmez. Etkin kuralları istediğiniz zaman inceleyebilirsiniz:
Get-NetNat
NAT kuralını daha sonra kaldırmak için şunu çalıştırın:
Remove-NetNat -Name WireGuardNAT
İstemciler bağlanır ve el sıkışma işlemi başarılı olur ancak internet trafiği yine de sunucudan geçmezse, yönlendirmede yer alan arayüzlerde IP yönlendirmeyi etkinleştirin ve tekrar test edin. Tam biçim, Windows sürümüne bağlıdır; örneğin:
Set-NetIPInterface -InterfaceAlias "Ethernet" -Forwarding Enabled
Bunu, internet trafiğini taşıyan harici arayüze ve WireGuard arayüzüne, Get-NetIPInterface komutundan alınan gerçek adlarını kullanarak uygulayın.
New-NetNat, Windows 10, Windows 11 veya Windows Server 2016 ve sonraki sürümleri gerektirir; bazı sistemlerde, Hyper-V'yi başka bir amaçla kullanmasanız bile Hyper-V özelliğinin etkinleştirilmesi gerekir. Bazı VPS planlarında Hyper-V etkinleştirilemez; bu da bu yöntemin kullanılmasını engeller. New-NetNat'ın tek başına yeterli olup olmadığı veya IP yönlendirmesinin de etkinleştirilmesi gerekip gerekmediği, Windows sürümüne bağlı olabilir; bu nedenle, tam tünelleme çalışmadığında bunu sunucunuzda doğrulayın
Sorun Giderme
Tünel aktif ancak sunucuya bağlantı yok. Sunucudaki güvenlik duvarında WireGuard UDP bağlantı noktasının (örneğin 51820) açık olup olmadığını kontrol edin. Sunucu ve istemci yapılandırmaları arasında açık anahtarların doğru şekilde kopyalandığından emin olun. İstemci yapılandırmasındaki Uç Nokta'nın, dahili tünel adresine değil, sunucunun gerçek genel IP adresine yönlendirildiğinden emin olun.
Bağlandıktan sonra DNS çalışmıyor. İstemci arayüzü bölümüne bir DNS sunucusu ekleyin:
[Interface] PrivateKey = ... Address = ... DNS = 1.1.1.1, 1.0.0.1
Paket sayaçları artmıyor. Tünel veri aktarmıyor. Her iki tarafta da AllowedIPs'in doğru ayarlandığını, dahili WireGuard adreslerinin mevcut yerel ağ ile çakışmadığını ve ListenPort'un başka bir uygulama tarafından zaten kullanılmadığını kontrol edin.
Sorunu teşhis etmek için daha fazla ayrıntıya ihtiyacınız var. WireGuard uygulamasında tüneli açın ve el sıkışma işlemlerini, hataları ve bağlantı olaylarını gerçekleştiği anda kaydeden Log sekmesine bakın. Paylaşmanız gerekirse, günlüğü buradan dışa aktarabilirsiniz.
Sunucu yeniden başlatıldıktan sonra WireGuard'ı otomatik olarak başlatma
Tünelin yeniden başlatma işlemlerinden sonra da çalışmaya devam etmesini sağlamak için, onu bir Windows hizmeti olarak yükleyin. Bir tünel hizmet olarak yüklendiğinde, yeniden başlatmanın ardından otomatik olarak başlar. Komut İstemi'ni veya PowerShell'i yönetici olarak açın ve sunucu yapılandırma dosyanızın yolunu kullanarak aşağıdakini çalıştırın:
wireguard /installtunnelservice "C:\Program Files\WireGuard\wg_server.conf"
Bu komutu her başlangıçta değil, yalnızca bir kez çalıştırın. Tüneli WireGuard uygulamasından etkinleştirmek normalde aynı hizmeti yükler, bu nedenle çoğu durumda bir kez etkinleştirmek yeterlidir. Hizmeti daha sonra kaldırmak için, .conf uzantısı hariç yapılandırma dosyası adı olan tünel adını kullanın.
wireguard /uninstalltunnelservice wg_server
Örneğin, yapılandırmayı düzenledikten sonra hizmeti yeniden başlatmak için, kaldırma komutunu çalıştırdıktan sonra kurulum komutunu tekrar çalıştırın.
Tünel bir hizmet olarak çalıştığı için ayrı bir Görev Zamanlayıcı görevine gerek yoktur.
Sunucuyu yeniden başlatın ve tünelin kendi kendine başladığını doğrulayın.
