Uygulamalı rehber
Ubuntu’da Betikle WireGuard VPN Sunucusu Nasıl Kurulur?
Yeni bir Ubuntu sunucusundan kişisel VPN bağlantısına: sunucuyu kurun, cihaz profillerini oluşturun ve internet trafiğinizin tünelden geçtiğini kontrol edin.
Sunucu kurulumu, Linux konteyner bağlantısı ve Windows hız testi yapıldı. macOS, Ubuntu Desktop, iPhone ve Android üzerinde doğrudan cihaz testleri henüz tamamlanmadı.
Bu kurulum ne zaman uygundur?
Seçtiğiniz sunucu üzerinden internete çıkan kişisel bir VPN istiyorsanız ve ağınız WireGuard bağlantılarına izin veriyorsa uygundur. Sağlayıcıyı, sunucu konumunu ve bağlanabilecek cihazları siz seçersiniz.
Ağınız VPN bağlantılarını engelliyorsa standart WireGuard uygun olmayabilir. Bağlantısını normal web trafiği gibi gizlemez. Doğru yapılandırılmış bir sunucuya bile internet sağlayıcınız üzerinden erişilemeyebilir. VPS için ödeme yapmadan önce bunu değerlendirin.
VPN engellemesi olan ağlarda AmneziaWG veya VLESS ve REALITY ile Xray seçeneklerini değerlendirin. AmneziaVPN bunları kendi sunucunuza kurmayı destekler. Tespit ve engellemeye direnmek için tasarlanmışlardır, ancak her ağdan bağlantı garantisi vermezler.
1. Sunucuyu seçin ve erişimi hazırlayın
Bu rehber Ubuntu 26.04 LTS VPS üzerinde sıfırdan kurulum içindir. Genel IPv4 adresi ve root parolası veya SSH anahtarı gerekir. İhtiyacınıza uygun sağlayıcıyı ve bölgeyi seçin.
Bu rehberde 1 vCPU ve 1 GB RAM bulunan bir VPS kullanıyoruz.
IPv6 desteklemeyen ağlardan da bağlanabilmek için IPv4 adresli sunucu seçin. Yalnızca IPv6 sunucuların IPv4 sitelerine erişimi ek ayarlar gerektirir ve bu rehberin kapsamı dışındadır.
Sunucu güvenliği: bu rehber VPN kurulumunu kapsar; VPS güvenliğinin ve bakımının tamamını değil. Betik SSH ve WireGuard için güvenlik duvarını ayarlar. Güvenlik güncellemeleri ve erişimi korumak sizin sorumluluğunuzdadır. SSH anahtarı kullanın, barındırma hesabınızda iki faktörlü doğrulamayı açın ve VPN profillerini parola gibi koruyun. SSH parola girişini ancak anahtarla girişin çalıştığını doğruladıktan sonra kapatın.
2. SSH ile giriş yapabildiğinizi kontrol edin
Windows: Başlat’ta PowerShell arayıp açın. Mac: Command+Space tuşlarına basın, Terminal yazıp Enter’a basın. Ubuntu Desktop: Ctrl+Alt+T.
Tüm komutlarda SERVER_IP yerine sunucu panelindeki genel IPv4 adresini yazın. ssh root@SERVER_IP, sunucuya root olarak bağlanır.
Parolalı komutu veya mevcut SSH anahtarınız varsa anahtarlı komutu seçin. Örnek anahtar yolunu kendi yolunuzla değiştirin.
İlk bağlantıda SSH sunucuya güvenip güvenmediğinizi sorabilir. Adresin oluşturduğunuz VPS’ye ait olduğunu kontrol edin, yes yazıp Enter’a basın. İstendiğinde root parolasını girin; yazarken ekranda karakter görünmez.
Bağlandıktan sonra Ubuntu’yu kontrol etmek için aşağıdaki sunucu komutunu çalıştırın; exit ile kendi bilgisayarınıza dönün.
ssh root@SERVER_IPssh -i ~/.ssh/id_ed25519 root@SERVER_IPcat /etc/os-release
exitssh komutu bulunamazsa
Windows’ta PowerShell’i Yönetici olarak çalıştır seçeneğiyle açıp aşağıdaki komutu çalıştırın. Kurulumdan sonra kapatıp normal PowerShell açın. Ubuntu’da Ubuntu komutunu kullanın. macOS’ta SSH istemcisi bulunur.
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0Komutu aynen kopyalayın. OpenSSH.Client~~~~0.0.1.0, Windows bileşeninin kimliğidir; tildeleri ve sayıları değiştirmeyin.
sudo apt update
sudo apt install openssh-client3. Kurulum paketini indirin ve inceleyin
ZIP dosyasını indirip açın. Betikleri wireguard-guide klasöründe birlikte tutun. Aşağıdaki Windows, Mac veya Ubuntu yollarından birini izleyin.
Betik VPS’ye WireGuard kurar ve profili bilgisayara kaydeder; tüm kurulum tek SSH bağlantısıyla yapılır. Parolalı girişte başarılı her çalıştırma için parola bir kez sorulur ve betik tarafından kaydedilmez.
Profil adı 1–15 Latin harfi (büyük veya küçük), rakam ve tire içerebilir; harfle başlamalıdır. Boşluk kullanmayın. Örnekler: my-wg-vpn, my-laptop, my-phone. Adı yazmazsanız betik sorar; Enter ile my-wg-vpn seçilir. Geçersiz adda yeniden giriş istenir. Her ek cihaz için farklı ad kullanın.
Mevcut profili indirmek için betiği çalıştırın, 2 (Manage existing server) seçeneğini seçip bağlanın, ardından 9 (Download profile) seçeneğini seçin. Listeden bir ad girin; boşken Enter iptal eder. İndirme aynı SSH bağlantısını kullanır ve sunucu parolasını tekrar istemez. Başarılı indirme aynı adlı yerel dosyanın üzerine yazar.
4a. Windows’tan sunucuyu kurun
Çıkardığınız wireguard-guide klasörünü Dosya Gezgini’nde açın. Adres çubuğuna powershell yazıp Enter’a basın; PowerShell doğru klasörde açılır.
Komutlardan birini çalıştırın. SERVER_IP yerine VPS adresini, anahtar kullanıyorsanız anahtar yolunu da değiştirin.
1 (Set up server) seçeneğini seçin, sunucu IP adresini ve profil adını girin, ardından SSH anahtarının yolunu girin veya Enter tuşuna basın. Enter önerilen adı korur. Özeti kontrol edip devam etmek için yes/y yazın; İptal etmek için no yazın. 3 tanınmayan yanıttan sonra betik kapanır. Kurulum sırasında ilerleme gösterilir. Enter tuşuna basarak da devam edebilirsiniz.
Profil, kullanıcı ana klasörünüzde WireGuard/SERVER_IP/my-wg-vpn.conf yoluna kaydedilir. Betik tam yolu gösterir.
.\Connect-WireGuardServer.ps1.\Connect-WireGuardServer.ps1 -Server SERVER_IP -ProfileName my-wg-vpn.\Connect-WireGuardServer.ps1 -Server SERVER_IP -ProfileName my-wg-vpn -IdentityFile "$HOME\.ssh\id_ed25519"PowerShell betiği engellerse
Hata indirilen dosyanın dijital imzalı olmadığını söylüyorsa aynı klasörde bu komutu çalıştırıp kurulumu tekrar deneyin.
Unblock-File -LiteralPath .\Connect-WireGuardServer.ps1, .\ManagementClient.ps1Betik çalıştırmanın devre dışı olduğu belirtiliyorsa bu komutları çalıştırın, soruyu onaylayın ve tekrar deneyin. Değişiklik PowerShell penceresi kapanınca sona erer.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
Unblock-File -LiteralPath .\Connect-WireGuardServer.ps1, .\ManagementClient.ps1İlke hatası devam ederse durun ve hata mesajını sorun giderme için saklayın.
4b. Mac’ten sunucuyu kurun
Terminal’i açın. cd ve bir boşluk yazın, çıkarılmış wireguard-guide klasörünü Finder’dan Terminal’e sürükleyip Enter’a basın.
Başındaki bash dahil bir komutu çalıştırın. SERVER_IP ve varsa anahtar yolunu değiştirin. my-wg-vpn profil adıdır; başka Mac için macbook gibi farklı bir ad kullanın.
Profil, kullanıcı ana klasörünüzde WireGuard/SERVER_IP/my-wg-vpn.conf yoluna kaydedilir. Betik tam yolu gösterir.
1 (Set up server) seçeneğini seçin, sunucu IP adresini ve profil adını girin, ardından SSH anahtarının yolunu girin veya Enter tuşuna basın. Enter önerilen adı korur. Özeti kontrol edip devam etmek için yes/y yazın; İptal etmek için no yazın. 3 tanınmayan yanıttan sonra betik kapanır. Kurulum sırasında ilerleme gösterilir. Enter tuşuna basarak da devam edebilirsiniz.
bash ./connect-wireguard-server.shbash ./connect-wireguard-server.sh SERVER_IP my-wg-vpnbash ./connect-wireguard-server.sh SERVER_IP my-wg-vpn 22 ~/.ssh/id_ed255194c. Ubuntu Desktop’tan sunucuyu kurun
Ctrl+Alt+T ile Terminal’i açın. cd ve boşluk yazın, wireguard-guide klasörünü pencereye sürükleyip Enter’a basın.
SERVER_IP adresini değiştirip komutlardan birini çalıştırın. my-wg-vpn cihaz profilinin adıdır. Bu başlatıcı ve SSH girişi için sudo gerekmez.
Profil, kullanıcı ana klasörünüzde WireGuard/SERVER_IP/my-wg-vpn.conf yoluna kaydedilir. Betik tam yolu gösterir.
1 (Set up server) seçeneğini seçin, sunucu IP adresini ve profil adını girin, ardından SSH anahtarının yolunu girin veya Enter tuşuna basın. Enter önerilen adı korur. Özeti kontrol edip devam etmek için yes/y yazın; İptal etmek için no yazın. 3 tanınmayan yanıttan sonra betik kapanır. Kurulum sırasında ilerleme gösterilir. Enter tuşuna basarak da devam edebilirsiniz.
bash ./connect-wireguard-server.shbash ./connect-wireguard-server.sh SERVER_IP my-wg-vpnbash ./connect-wireguard-server.sh SERVER_IP my-wg-vpn 22 ~/.ssh/id_ed25519Bağlanmadan önce: VPN çalışmayı durdurursa ne olur?
Full tunnel, profil etkinken normal internet trafiğini VPN üzerinden yönlendirir.
Kill switch, VPN dışındaki internet bağlantılarını engeller. Davranışı uygulamaya ve ayarlara bağlıdır: sunucuya erişilememesi, profilin elle kapatılması ve cihazın yeniden başlatılması farklı sonuçlar doğurabilir. Rehber full-tunnel profili oluşturur, ancak bütün cihazlarda aynı kalıcı engeli kurmaz. Ek koruma yoksa profili kapatmak normal interneti geri getirebilir.
Windows: resmi istemci, betiğin oluşturduğu profil için kill switch’i otomatik açar. Koruma tünel etkinken geçerlidir. Profili elle kapatınca normal internet erişimi geri gelir.
Android: telefonun sistem ayarlarında VPN’i ve WireGuard ayarlarını bulun. VPN dışı bağlantıları engellemek için Always-on VPN ve Block connections without VPN seçeneklerini açın; yalnızca Always-on yeterli değildir. Adlar ve konumlar telefona göre değişebilir. Engelleme açıkken VPN erişilemiyorsa internet de çalışmaz.
Mac ve iPhone: On-Demand, ayarlanan kurallara göre otomatik bağlanır. Bunu kalıcı bir kill switch olarak değerlendirmeyin.
Ubuntu Desktop: aşağıdaki NetworkManager içe aktarma işlemi ayrı bir kill switch oluşturmaz. Bunun için bilgisayarda ek güvenlik duvarı kuralları gerekir.
Erişilemeyen sunucu ile kapatılmış VPN profili farklı durumlardır. Profil açıkken sunucu yanıt vermeyi keserse trafik yalnızca durabilir; bu, cihazın mutlaka VPN dışına geçtiği anlamına gelmez.
5a. Windows veya macOS’u bağlayın
Sisteminiz için resmi WireGuard uygulamasını kurun. Oluşturulan .conf dosyasını içe aktarın, VPN iznini onaylayıp tüneli etkinleştirin. İçe aktarma seçeneğinin adı sürüme göre değişebilir.
Profil IPv4 trafiğini tünele gönderir; IPv6’nın dışarıdan gitmesini önlemek için IPv6 varsayılan rotası da içerir. Sunucu IPv6 internet erişimi sağlamaz. Cihazınızın davranışını aşağıdaki kontrollerle doğrulayın.
Profil özel anahtar içerir. Kopyasına sahip biri cihazın VPN kimliğini kullanmayı deneyebilir. Profili destek taleplerine veya çevrimiçi QR araçlarına yüklemeyin, cihazlar arasında paylaşmayın.
5b. Ubuntu Desktop’ı NetworkManager ile bağlayın
NetworkManager, grafik arayüz sürümüne bağlı kalmadan profili içe aktarır, DNS ve rotaları yönetir. Komutları VPS’nin SSH oturumunda değil masaüstünüzde çalıştırın. Önce nmcli’nin ve NetworkManager hizmetinin çalıştığını kontrol edin.
my-wg-vpn.conf dosyası my-wg-vpn adlı bağlantı oluşturur. Bu ad varsa başka cihaz adı seçip komutları uyarlayın. Yalnızca bir kez içe aktarın; sonra up ve down kullanın. Aşağıdaki ayar bilgisayar açılırken otomatik VPN bağlantısını kapatır.
Bu DNS ayarları, bağlantı açıkken tüm adlar için VPN’yi öncelikli yapar. Tarayıcının güvenli DNS’i farklı davranabilir. 7. adımdaki IP, DNS ve IPv6 kontrollerini yapın. Bu yöntem gerçek Ubuntu Desktop üzerinde henüz test edilmedi; konteyner testi masaüstü DNS ve IPv6 davranışını doğrulamaz.
Aynı profili ayrıca wg-quick ile açmayın; iki yöneticinin rotaları çakışabilir. Grafik arayüz farklı gösterse bile nmcli ile bağlantıyı kontrol edip kapatabilirsiniz.
nmcli --version
systemctl is-active NetworkManagersudo nmcli connection import type wireguard file "$HOME/WireGuard/SERVER_IP/my-wg-vpn.conf"
sudo nmcli connection modify my-wg-vpn connection.autoconnect no ipv4.dns-priority -50 ipv4.dns-search "~."sudo nmcli connection up my-wg-vpn
nmcli connection show --activesudo nmcli connection down my-wg-vpn6. iPhone veya Android’i QR koduyla bağlayın
Aşağıdaki App Store veya Google Play bağlantısından resmi WireGuard uygulamasını kurun.
Bilgisayardan ssh root@SERVER_IP veya anahtarlı komutunuzla VPS’ye yeniden girin. Telefonunuzun komutunu çalıştırarak profil ve QR kodu oluşturun.
Telefondaki WireGuard’da QR tarayarak tünel ekleme seçeneğini seçin. Bilgisayardaki kodu tarayın, bağlantıya ad verin, VPN iznini onaylayıp açın.
Her telefon için ayrı profil kullanın. QR kodu VPN erişimi verir; paylaşmayın. Kod satırlara bölünürse Terminal penceresini büyütüp yeniden gösterin.
python3 /root/internetspeed-wireguard/manage-client.py add iphone
qrencode -t ANSIUTF8 < /etc/wireguard/clients/iphone.confpython3 /root/internetspeed-wireguard/manage-client.py add android
qrencode -t ANSIUTF8 < /etc/wireguard/clients/android.conf7. İnternet trafiğinin VPN’den geçtiğini kontrol edin
VPN kapalıyken aşağıdaki My IP sayfasını açıp adresinizi not edin. WireGuard’ı açın, sayfayı yenileyin ve sonucu VPS’nin genel IPv4 adresiyle karşılaştırın.
Sayfa açılıyor ve VPS adresini gösteriyorsa tarayıcı bağlantısı VPN’den geçiyordur. Eski adres görünüyorsa sorun giderme bölümüne bakın.
Bu, tarayıcı bağlantısını doğrular; tüm uygulamaları veya VPN kesildiğindeki korumayı değil. Ek kontroller DNS ve IPv6 içindir.
Genel IP adresinizi kontrol edin
İsteğe bağlı: IPv6 ve DNS kontrolü
IPv6: VPN kapalıyken Test IPv6’yı açıp IPv6 adresi gösterilip gösterilmediğine bakın. VPN’yi açıp tekrarlayın. Bu IPv4 kurulumunda çalışan IPv6 internet erişimi olmamalıdır. Normal IPv6 adresiniz görünüyorsa tüneli atlıyordur. Başta IPv6 yoksa test, IPv6 destekli ağdaki davranışı göstermez.
DNS: VPN açıkken DNS Leak Test’te Standard test çalıştırın. Profil Cloudflare DNS kullanır. Ev interneti sağlayıcınız görünürse cihaz DNS ayarlarını inceleyin. Başka sağlayıcı tarayıcının Secure DNS ayarından da gelebilir; bu tek başına sızıntı kanıtı değildir. Sonuçlar tüm uygulamaların korunduğunu garanti etmez.
8. Çalışmayan bağlantıda sorun giderme
My IP normal adresi gösteriyorsa WireGuard’da aktardığınız bağlantının açık olduğunu kontrol edin. Bir kez kapatıp açın, My IP’yi yenileyin.
VPN açıkken siteler açılmıyorsa kapatıp aynı sayfayı deneyin. Kapalıyken de açılmıyorsa önce normal interneti düzeltin. Yalnızca VPN ile bozuluyorsa aşağıdaki kontrolleri yapın.
Karşılaştırmak için bilgisayarı telefonun erişim noktasına bağlayıp VPN’yi deneyin. Telefonda Wi-Fi’yi kapatıp mobil veriyi kullanın. Bu geçici testte mobil ücret doğabilir. VPN sadece bu şekilde çalışıyorsa sorun Wi-Fi bağlantısına özgüdür; kesin nedeni henüz göstermez.
Kurulum hatayla durursa son mesajı saklayın. Sorunu düzelttikten sonra aynı cihaz adıyla komutu yeniden çalıştırın; mevcut profil korunur.
VPN sunucusunun çalıştığını kontrol edin
2. adımdaki gibi SSH ile girip komutu çalıştırın. Sonuç active olmalıdır. inactive veya failed ise yeniden başlatma komutunu çalıştırıp kontrol edin. Hâlâ active değilse hatayı saklayın.
systemctl is-active wg-quick@wg0systemctl restart wg-quick@wg0
systemctl is-active wg-quick@wg0Yeniden başlatma bağlı cihazları kısa süreliğine keser.
Cihazınızın sunucuya ulaştığını kontrol edin
VPN’yi açıp My IP’yi deneyin. Sunucuda wg show çalıştırın. Cihazın altında latest handshake satırını arayın. 10 seconds ago, kısa süre önce şifreli bağlantı kurulduğunu gösterir. Satır yoksa bu cihaz için başarılı bağlantı kaydedilmemiştir.
Yeni bağlantı görünmüyorsa profilde Endpoint değerinin VPS adresi ve :51820 içerdiğini kontrol edin. VPS panelinde Firewall veya Security groups bölümüne bakın. Bağlı güvenlik duvarı varsa gelen UDP 51820’ye izin vermelidir. Ekran sağlayıcıya göre değişir; Ubuntu içindeki güvenlik duvarını betik ayarlar.
Güncel handshake var ama siteler açılmıyorsa sonucu ve uygulama hatasını veya günlüğünü kaydedin. Rastgele gelişmiş ağ ayarı değiştirmek teşhisi zorlaştırabilir.
wg show9. Hangi hızları bekleyebilirsiniz?
Windows testimizde indirme yaklaşık 450–500 Mbps, yükleme 450–500 Mbps idi. Projedeki diğer VPN’lerle aynı yöntem kullanıldı. Yol: San Diego’daki kullanıcı → San Francisco Körfez Bölgesi’ndeki VPN → Seattle’daki ölçüm sunucusu.
Vultr Shared CPU (vc2-1c-1gb) kullanıldı: 1 vCPU, 1 GB RAM, aylık 1 TB trafik; satın alındığında aylık 5 ABD doları.
Ayrı bir testte, aylık 6 ABD doları fiyatlı Vultr Shared CPU Intel High Frequency (vhf-1c-1gb; 1 vCPU, 1 GB RAM) sunucusu hem indirmede hem yüklemede yaklaşık 550–750 Mbps sağladı. Her iki paket de Windows üzerinde aynı yöntem ve güzergâhla test edildi: San Diego → San Francisco Körfez Bölgesi’ndeki VPN sunucusu → Seattle’daki ölçüm sunucusu.
Test ettiğimiz Intel High Frequency sunucularının sonuçları farklıydı: bazıları sürekli aralığın üst sınırına yakın hız verirken diğerleri alt sınıra yakın kaldı. Yalnızca bu paketi seçmek 750 Mbps hız garantisi sağlamadı.
Bu sonuçlar bu kurulumda gözlendi. Hızınız bağlantınıza, sunucunuza ve konuma bağlıdır.
10. Maliyet, gizlilik ve sağlayıcı sınırları
Kendi VPN’niz yapılandırmayı ve tek bir çıkış konumunu kontrol etmenizi sağlar. Güncellemeler, fatura, cihaz erişimi ve kurtarma size aittir. Hosting sağlayıcısına karşı anonimlik sağlamaz; HTTPS gereksinimi sürer.
Test sunucularımız aylık 5 ve 6 ABD dolarıydı. Fiyat, donanım ve trafik kotaları sağlayıcıya ve bölgeye göre değişir. VPN aboneliğiyle karşılaştırırken tek VPS’nin tek konum sunduğunu ve bakımını sizin yaptığınızı da hesaba katın.
Gezinme, video, dosya indirme/yükleme ve hız testleri VPS trafik kotasını tüketir. Kalan kotayı panelden izleyin. Aşım pakete göre ek ücret veya kısıtlama getirebilir.
P2P öncesinde sağlayıcının güncel kullanım şartlarını ve geçerli hukuku inceleyin. Protokol ile içerik hakları ayrıdır. Yalnızca indirme ve paylaşma hakkınız olan içeriği kullanın; her sağlayıcı tüm P2P kullanımlarını kabul etmez.
Veri merkezi IP’si CAPTCHA, hizmet veya yayın engelleriyle karşılaşabilir. Standart WireGuard her filtreli ağda erişim vadetmez. Tek VPS, büyük sağlayıcıların konum ve yedek sunucu havuzu yerine tek arıza noktasıdır.
11. Cihaz ekleyin, erişimi iptal edin ve sunucuyu yönetin
Her cihaz için ayrı profil kullanın. Bir VPN profilinin erişimini iptal etmek için VPS’ye SSH ile bağlanıp aşağıdaki silme komutunu çalıştırın; iphone yerine profil adını yazın. Ardından kaydedilmiş dosya veya QR kod kopyalarını silin. Profili yalnızca cihazdan silmek sunucudaki erişimi iptal etmez.
Ubuntu güvenlik güncellemelerini uygulayın, yeniden başlatma gereksinimini kontrol edin. Uygun zamanda yeniden başlatıp VPN’yi doğrulayın. Hosting hesabını ve SSH’ı koruyun; SSH doğrulamasını değiştirirken çalışan alternatif girişiniz olsun.
Kaldırma betiği bu VPN’yi durdurur, yönettiği yapılandırma ve güvenlik duvarı kurallarını siler. SSH, UFW ve paketler kalır. Yönlendirme yeniden başlatmada sistem politikası uygulanana kadar açık kalır. VPN’yi silmek VPS faturasını iptal etmez; gereken veriyi saklayıp kullanılmayan sunucuyu sağlayıcı panelinden silin.
python3 /root/internetspeed-wireguard/manage-client.py remove iphoneapt update
apt list --upgradable
test ! -f /var/run/reboot-required || cat /var/run/reboot-requiredBu komutlar güncellemeleri listeler ve yeniden başlatma gereksinimini kontrol eder; güncellemeleri kurmaz. Güvenlik güncellemelerini ve kapsamlı VPS korumasını VPN kurulumundan ayrı ayarlayın.
bash /root/internetspeed-wireguard/remove-server.sh --confirm