Giriş: WireGuard Nedir ve Neden Kullanmalıyız?
Günümüzde internet üzerindeki gizlilik ve güvenlik endişeleri giderek artarken, Sanal Özel Ağlar (VPN’ler) bu sorunlara etkili çözümler sunmaktadır. VPN’ler, internet trafiğinizi şifreleyerek ve farklı bir sunucu üzerinden yönlendirerek çevrimiçi kimliğinizi korumanıza ve verilerinizi güvence altına almanıza yardımcı olur. Geleneksel VPN protokolleri (OpenVPN, IPsec) genellikle karmaşık yapılandırmaları ve yüksek performans yükleri ile bilinirken, WireGuard bu alana yepyeni bir soluk getirmiştir.
WireGuard, modern kriptografi tekniklerini kullanan, son derece hızlı, basit ve güvenli bir VPN protokolüdür. Linux çekirdeğine entegre edilmiş olması sayesinde yüksek performans sunar ve sadece birkaç yüz satır koddan oluştuğu için güvenlik denetimini kolaylaştırır. Bu sadelik, hem kurulumu hem de bakımı basitleştirirken, aynı zamanda saldırı yüzeyini de önemli ölçüde azaltır. WireGuard, özellikle mobil cihazlarda ve düşük kaynaklı sunucularda bile etkileyici hızlar ve kararlılık sunar.
Bu rehberde, popüler ve kararlı bir Linux dağıtımı olan Ubuntu 22.04 LTS (Jammy Jellyfish) üzerinde WireGuard sunucusu kurma ve bir istemciyi bu sunucuya bağlama adımlarını detaylı bir şekilde ele alacağız. İster ev ağınız için güvenli bir tünel oluşturmak, ister coğrafi kısıtlamaları aşmak, isterse de genel Wi-Fi ağlarında güvenliğinizi sağlamak isteyin, WireGuard güçlü ve pratik bir çözüm sunar.
Adım 1: Ubuntu 22.04 Üzerine WireGuard Kurulumu
WireGuard kurulumuna başlamadan önce, sisteminizin güncel olduğundan emin olmanız önemlidir. Bu, olası bağımlılık sorunlarını önler ve en son güvenlik yamalarına sahip olmanızı sağlar.
Sistemi Güncelleme
Terminali açın ve aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
Bu komutlar, paket listelerinizi günceller ve mevcut tüm paketleri en son sürümlerine yükseltir.
WireGuard Paketini Kurma
Ubuntu 22.04’te WireGuard çekirdek modülü ve kullanıcı alanı araçları, resmi depolarda mevcuttur. Kurulum için aşağıdaki komutu kullanın:
sudo apt install wireguard -y
Kurulum tamamlandıktan sonra, WireGuard’ın doğru bir şekilde yüklenip yüklenmediğini kontrol edebilirsiniz:
wg --version
Bu komut, yüklü WireGuard sürümünü göstermelidir. Eğer bir sürüm numarası görüyorsanız, kurulum başarılı demektir.
Adım 2: WireGuard Sunucusu İçin Anahtar Çiftleri Oluşturma ve Yapılandırma
WireGuard, kriptografik anahtar çiftleri kullanarak güvenli bir iletişim sağlar. Her cihaz (sunucu ve istemci) kendine ait bir özel (private) ve genel (public) anahtar çiftine sahip olmalıdır. Özel anahtar gizli tutulurken, genel anahtar diğer cihazlarla paylaşılır.
Anahtar Çiftleri Oluşturma
İlk olarak, sunucunuz için anahtar çiftlerini oluşturacağımız bir dizin oluşturalım ve bu dizine geçelim. Güvenlik nedeniyle, bu anahtarları /etc/wireguard/ dizininde saklamak en iyi uygulamadır.
sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard
cd /etc/wireguard
Şimdi özel ve genel anahtarları oluşturalım:
sudo wg genkey | sudo tee privatekey_server
sudo chmod 600 privatekey_server
sudo cat privatekey_server | wg pubkey | sudo tee publickey_server
privatekey_server: Bu dosya sunucunuzun özel anahtarını içerir ve kesinlikle gizli tutulmalıdır.chmod 600komutu, yalnızca root kullanıcısının bu dosyayı okuyup yazabilmesini sağlar.publickey_server: Bu dosya sunucunuzun genel anahtarını içerir. Bu anahtarı daha sonra istemcilerinizle paylaşacaksınız.
WireGuard Sunucu Yapılandırma Dosyası Oluşturma (wg0.conf)
WireGuard sunucusu için bir yapılandırma dosyası oluşturacağız. Bu dosya, WireGuard arayüzünün nasıl çalışacağını tanımlar. Dosya adı genellikle wg0.conf olur, burada wg0 sanal ağ arayüzünün adıdır.
sudo nano /etc/wireguard/wg0.conf
Açılan dosyaya aşağıdaki içeriği ekleyin. Kendi özel anahtarınızı (privatekey_server içeriği) ve istediğiniz IP adres aralığını kullanmayı unutmayın:
[Interface]
PrivateKey =
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PrivateKey: Az önce oluşturduğunuzprivatekey_serverdosyasının içeriğini buraya yapıştırın.Address: WireGuard VPN arayüzünüz için kullanılacak IP adresidir.10.0.0.1/24genellikle dahili VPN ağı için kullanılır. Bu, sunucunun VPN içindeki IP’si olacaktır.ListenPort: WireGuard’ın gelen bağlantıları dinleyeceği UDP portudur. Varsayılan olarak 51820 kullanılır. Bu portu güvenlik duvarınızda açmanız gerekecektir.PostUp: WireGuard arayüzü başlatıldığında çalıştırılacak komutlardır. Burada, istemcilerin internete erişebilmesi için IP yönlendirme (NAT/Masquerading) kuralları eklenir.eth0yerine sunucunuzun ana ağ arayüzünün adını kullanmanız gerekebilir (örneğin,enp0s3,ens3,ens18). Bunuip akomutuyla kontrol edebilirsiniz.PostDown: WireGuard arayüzü kapatıldığında çalıştırılacak komutlardır.PostUpile eklenen kuralları temizler.
IP Yönlendirmeyi Etkinleştirme
İstemcilerinizin sunucu üzerinden internete erişebilmesi için IP yönlendirmeyi (IP Forwarding) etkinleştirmeniz gerekir:
sudo sysctl -w net.ipv4.ip_forward=1
Bu ayarın kalıcı olması için /etc/sysctl.conf dosyasını düzenleyin:
sudo nano /etc/sysctl.conf
Dosyada #net.ipv4.ip_forward=1 satırını bulun ve başındaki # işaretini kaldırarak satırı aktif hale getirin:
net.ipv4.ip_forward=1
Kaydedip çıkın (Ctrl+O, Enter, Ctrl+X).
Güvenlik Duvarı Ayarları (UFW)
Eğer Ubuntu sunucunuzda UFW (Uncomplicated Firewall) kullanıyorsanız, WireGuard’ın dinlediği portu ve SSH portunu açmanız gerekmektedir. Ayrıca, NAT kurallarının UFW tarafından doğru işlenebilmesi için UFW’nin varsayılan kurallarını da düzenlememiz gerekebilir.
sudo ufw allow ssh
sudo ufw allow 51820/udp
sudo ufw enable
NAT kurallarının UFW ile çalışması için /etc/default/ufw dosyasını düzenleyin ve DEFAULT_FORWARD_POLICY="DROP" satırını DEFAULT_FORWARD_POLICY="ACCEPT" olarak değiştirin:
sudo nano /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
Ardından, UFW’nin NAT kurallarını işleyebilmesi için /etc/ufw/before.rules dosyasını düzenleyin. Bu dosyanın en başına (genellikle *filter satırından önce) aşağıdaki NAT kurallarını ekleyin. eth0 yerine yine ana ağ arayüzünüzün adını kullanın:
# START WIREGUARD NAT
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
END WIREGUARD NAT
Değişikliklerin etkili olması için UFW’yi yeniden başlatın:
sudo ufw disable
sudo ufw enable
Adım 3: İstemci (Client) İçin Anahtar Çiftleri Oluşturma ve Yapılandırma
Şimdi sıra istemci için anahtar çiftleri oluşturmaya ve yapılandırma dosyasını hazırlamaya geldi. Bu adımları, sunucunuz üzerinde geçici olarak yapabilir ve daha sonra istemci cihazınıza (bilgisayar, telefon vb.) aktarabilirsiniz.
İstemci Anahtarlarını Oluşturma
Sunucunuzda, istemci için anahtar çiftlerini oluşturun:
cd ~ # Ev dizininize dönün veya farklı bir yere
wg genkey | tee client_privatekey
cat client_privatekey | wg pubkey | tee client_publickey
client_privatekey: İstemcinin özel anahtarı. Bu, yalnızca istemci cihazında bulunmalıdır.client_publickey: İstemcinin genel anahtarı. Bu anahtarı sunucu yapılandırma dosyasına ekleyeceğiz.
İstemci Yapılandırma Dosyası Oluşturma (client.conf)
İstemci için bir yapılandırma dosyası oluşturalım. Bu dosyayı daha sonra istemci cihazınıza aktaracaksınız.
nano client.conf
Aşağıdaki içeriği ekleyin. Kendi istemci özel anahtarınızı (client_privatekey içeriği), sunucunun genel anahtarını (publickey_server içeriği) ve sunucunuzun genel IP adresini kullanmayı unutmayın:
[Interface]
PrivateKey =
Address = 10.0.0.2/24
DNS = 8.8.8.8, 8.8.4.4
[Peer]
PublicKey =
Endpoint = :51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
PrivateKey: Az önce oluşturduğunuzclient_privatekeydosyasının içeriğini buraya yapıştırın.Address: İstemcinin WireGuard VPN ağı içindeki IP adresidir. Sunucunun IP’sinden (10.0.0.1) farklı bir IP kullanın (örneğin, 10.0.0.2).DNS: İstemcinin kullanacağı DNS sunucuları. Google DNS (8.8.8.8, 8.8.4.4) veya Cloudflare DNS (1.1.1.1, 1.0.0.1) kullanabilirsiniz.[Peer]: Bu bölüm, sunucuya ait bilgileri tanımlar.PublicKey: Sunucunun genel anahtarıdır (publickey_serverdosyasının içeriği).Endpoint: Sunucunuzun genel IP adresi ve WireGuard’ın dinlediği porttur (örn.your_server_ip:51820).AllowedIPs: İstemcinin hangi IP adreslerine VPN tüneli üzerinden erişeceğini belirtir.0.0.0.0/0: Tüm trafiği (varsayılan ağ geçidi dahil) VPN tüneli üzerinden gönderir (Full Tunnel).10.0.0.0/24: Sadece VPN ağı içindeki cihazlara (örneğin sunucuya) erişimi tünel üzerinden sağlar (Split Tunnel). Güvenliğiniz için genellikle0.0.0.0/0tercih edilir.
PersistentKeepalive: NAT arkasındaki istemciler için bağlantının canlı kalmasını sağlar. Her 25 saniyede bir boş paket gönderir.
Adım 4: Sunucu ve İstemci Arasındaki Bağlantıyı Kurma ve Test Etme
Anahtarlar ve yapılandırma dosyaları hazır olduğuna göre, artık bağlantıyı kurma ve test etme zamanı.
İstemciyi Sunucu Yapılandırmasına Ekleme
Sunucu, hangi istemcilerin bağlanmasına izin verileceğini bilmelidir. Bunun için istemcinin genel anahtarını sunucunun wg0.conf dosyasına bir [Peer] bölümü olarak eklememiz gerekir.
sudo nano /etc/wireguard/wg0.conf
Dosyanın sonuna aşağıdaki bölümü ekleyin. İstemcinizin genel anahtarını (client_publickey içeriği) ve VPN içindeki IP adresini kullanın:
# İstemci 1
[Peer]
PublicKey =
AllowedIPs = 10.0.0.2/32
PublicKey: İstemcinin genel anahtarıdır.AllowedIPs: Bu, sunucunun bu belirli istemciye hangi IP adreslerini atayacağını ve hangi trafikleri tünel üzerinden yönlendireceğini belirtir. Burada, istemcinin VPN içindeki tekil IP adresini (/32) belirtiyoruz.
Kaydedip çıkın.
WireGuard Sunucusunu Başlatma
Şimdi WireGuard arayüzünü başlatabiliriz:
sudo wg-quick up wg0
WireGuard’ın sistem başlangıcında otomatik olarak başlamasını sağlamak için:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
Sunucunun durumunu kontrol etmek için:
sudo wg
Bu komut, aktif WireGuard arayüzlerini, dinleme portunu, kendi genel anahtarınızı ve bağlı peer’ları (istemcileri) göstermelidir. Şu an istemci bağlı olmadığı için peer bölümü boş görünebilir.
İstemci Tarafında Bağlantıyı Kurma
Oluşturduğunuz client.conf dosyasını istemci cihazınıza aktarın. WireGuard’ın resmi web sitesinden (wireguard.com/install/) veya uygulama mağazalarından istemciniz için uygun WireGuard uygulamasını indirin ve kurun.
- Windows/macOS/Linux: WireGuard uygulamasını kurduktan sonra, “Tunnel ekle” veya “Add tunnel” seçeneğini kullanarak
client.confdosyasını içeri aktarabilirsiniz. - Android/iOS: WireGuard uygulamasını indirin. Genellikle QR kodu ile veya dosyayı içeri aktararak yapılandırma ekleme seçenekleri bulunur.
client.confdosyasını cihazınıza kopyaladıktan sonra uygulamadan içeri aktarabilirsiniz. (QR kodu oluşturmak için sunucudasudo apt install qrencodekurupqrencode -t ansiutf8 < client.confkomutunu kullanabilirsiniz.)
Yapılandırmayı içeri aktardıktan sonra, WireGuard uygulamasından bağlantıyı başlatın.
Bağlantıyı Test Etme
İstemci tarafından bağlantı kurulduktan sonra, aşağıdaki testleri yapabilirsiniz:
- Ping Testi: İstemci bilgisayarınızdan WireGuard sunucusunun dahili IP adresine (örn.
10.0.0.1) ping atın:ping 10.0.0.1Yanıt alıyorsanız, VPN tüneli üzerinden sunucuya erişiminiz var demektir.
- IP Adresi Kontrolü: İstemci bilgisayarınızda bir web tarayıcısı açın ve
curl ifconfig.me(Linux/macOS) veyawhatismyip.comgibi bir siteye gidin. Gördüğünüz genel IP adresinin WireGuard sunucunuzun genel IP adresi olması gerekir. Bu, tüm internet trafiğinizin VPN üzerinden yönlendirildiğini gösterir. - Sunucu Tarafında Kontrol: Sunucunuzda tekrar
sudo wgkomutunu çalıştırın. İstemcinizin genel anahtarı altındalatest handshakevetransferbilgilerini görmelisiniz. Bu, istemcinizin bağlı olduğunu ve veri alışverişi yaptığını gösterir.
Sonuç ve Sıkça Sorulan Sorular (SSS)
Bu rehberde, Ubuntu 22.04 üzerinde hızlı, güvenli ve basit bir WireGuard VPN sunucusu kurmayı ve bir istemciyi bu sunucuya bağlamayı adım adım öğrendiniz. WireGuard'ın kurulumu ve yapılandırması, diğer VPN çözümlerine kıyasla oldukça basittir ve modern kriptografi sayesinde yüksek güvenlik sunar. Artık internet trafiğinizi güvenli bir tünel üzerinden yönlendirerek gizliliğinizi koruyabilir ve sansürlü içeriklere erişebilirsiniz.
Kurulum sırasında veya sonrasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri aşağıda listelenmiştir:
Sıkça Sorulan Sorular (SSS)
S: WireGuard bağlantım neden çalışmıyor?
C: Birkaç olası nedeni olabilir:
- Güvenlik Duvarı: Sunucunuzun güvenlik duvarında (UFW, iptables vb.) WireGuard portunun (varsayılan 51820/udp) açık olduğundan emin olun.
- IP Yönlendirme: Sunucunuzda IP yönlendirme (
net.ipv4.ip_forward=1) etkinleştirilmemiş olabilir./etc/sysctl.confdosyasını kontrol edin vesudo sysctl -pile uygulayın. - Anahtar Eşleşmesi: Sunucu ve istemcinin anahtar çiftlerinin doğru bir şekilde kopyalandığından ve eşleştiğinden emin olun. İstemci, sunucunun genel anahtarını; sunucu ise istemcinin genel anahtarını bilmelidir.
- IP Adresleri:
wg0.confveclient.confdosyalarındakiAddressayarlarının veAllowedIPsaralıklarının doğru ve çakışmadığından emin olun. - Endpoint: İstemci yapılandırmasındaki
Endpoint(sunucunun genel IP adresi ve portu) doğru yazıldığından emin olun. - Ağ Arayüzü Adı: Sunucu yapılandırmasındaki
PostUpvePostDownkomutlarındaki ağ arayüzü adının (örn.eth0) doğru olduğundan emin olun.
S: Farklı bir port kullanabilir miyim?
C: Evet, wg0.conf dosyasındaki ListenPort değerini ve istemci yapılandırmasındaki Endpoint kısmındaki port numarasını değiştirerek farklı bir UDP portu kullanabilirsiniz. Güvenlik duvarınızda da bu yeni portu açmayı unutmayın.
S: Birden fazla istemciyi nasıl eklerim?
C: Her yeni istemci için ayrı bir anahtar çifti oluşturmanız ve her istemci için ayrı bir client.conf dosyası hazırlamanız gerekir. Ardından, her istemcinin genel anahtarını ve VPN içindeki benzersiz IP adresini (10.0.0.3/32, 10.0.0.4/32 vb.) sunucunuzun /etc/wireguard/wg0.conf dosyasına ayrı bir [Peer] bölümü olarak ekleyin. Her [Peer] için farklı bir AllowedIPs (örn. 10.0.0.X/32) kullanın.
S: WireGuard'ı otomatik başlatmak için ne yapmalıyım?
C: Sunucu tarafında, kurulumun 4. adımında bahsedildiği gibi aşağıdaki komutları kullanın:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
Bu, WireGuard'ın sunucunuz her yeniden başlatıldığında otomatik olarak başlamasını sağlar.
S: Firewall ayarları önemli mi?
C: Kesinlikle evet. Güvenlik duvarı (Firewall) ayarları, WireGuard'ın doğru çalışması için kritik öneme sahiptir. WireGuard'ın dinlediği UDP portunun (varsayılan 51820) dışarıdan gelen bağlantılara açık olması ve NAT kurallarının (PostUp/PostDown) doğru yapılandırılması gerekmektedir, aksi takdirde istemcileriniz bağlanamaz veya internete erişemez.
