· 6 dk okuma

WireGuard VPN Sunucusu Kurulumu: Linux, NAT ve Mobil İstemci

WireGuard VPN sunucusu kurulumu, Linux sunucuda wireguard paketini kurmak, bir anahtar çifti üretmek, /etc/wireguard/wg0.conf dosyasını yazmak, IP forwarding ile NAT'ı açmak ve UDP portunu güvenlik duvarında izinlemekten ibarettir. Bu rehberde Ubuntu 22.04/24.04 ve Debian 12 için komutlarla sunucuyu, masaüstü istemciyi ve mobil istemciyi (QR kodla) kuruyoruz. Sonda sık yapılan hataları da listeledik.

WireGuard Nedir, Neden Tercih Edilir?

WireGuard, Linux çekirdeğine entegre çalışan, modern kriptografi (Curve25519, ChaCha20-Poly1305) kullanan ve yalnızca UDP üzerinden konuşan bir VPN protokolüdür. Yapılandırması birkaç satırdır, bağlantı kurulumu çok hızlıdır ve ağ değiştiğinde (Wi-Fi'dan mobil veriye geçiş gibi) oturum sorunsuz devam eder. Her eş (peer) bir açık anahtar ve izinli IP listesiyle tanımlanır; ayrı bir "sunucu/istemci" ayrımı protokol düzeyinde yoktur, ama pratikte biri sabit IP'li uç nokta olarak çalışır.

Tipik kullanım alanları:

Ön Hazırlık

Kendi sunucunuzu kurmak için kaynak ayırmanız gerekiyorsa, sabit IP ve esnek kaynak sunan bir VDS sunucu bu iş için yeterlidir; WireGuard çok az CPU ve RAM tüketir.

1. Kurulum

sudo apt update
sudo apt install -y wireguard qrencode

Çekirdek modülü 5.6 ve üzeri çekirdeklerde zaten mevcuttur. Kontrol: modinfo wireguard | head -3.

2. Sunucu Anahtarlarını Üretme

cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

umask 077 anahtar dosyalarının yalnızca root tarafından okunabilmesini sağlar. Özel anahtarı (server_private.key) kimseyle paylaşmayın.

3. Sunucu Yapılandırması (wg0.conf)

# /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <server_private.key içeriği>

# NAT ve forward kuralları (dış arayüz: eth0)
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

# İstemciler aşağıya [Peer] olarak eklenecek

PrivateKey satırına cat /etc/wireguard/server_private.key çıktısını yapıştırın. Dosyanın izinlerini sıkılaştırın:

sudo chmod 600 /etc/wireguard/wg0.conf

4. IP Forwarding'i Açma

VPN istemcilerinin trafiğini internete çıkarmak için sunucunun paket yönlendirmesi açık olmalıdır:

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system

IPv6 de yönlendirecekseniz net.ipv6.conf.all.forwarding=1 satırını ekleyin ve Address satırına bir ULA veya sağlayıcınızdan aldığınız 2001:db8::/32 benzeri bir alt ağ tanımlayın (örnek dokümantasyon aralığıdır).

5. Güvenlik Duvarı

UFW kullanıyorsanız SSH'ı kilitlemeden önce kuralları ekleyin:

sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on eth0
sudo ufw reload

Yalnızca iptables/nftables kullanıyorsanız INPUT zincirinde UDP 51820'ye izin verdiğinizden emin olun. Ayrıca bulut/hosting panelinde ayrı bir güvenlik grubu veya firewall varsa orada da portu açın.

6. Servisi Başlatma

sudo systemctl enable --now wg-quick@wg0
sudo wg show

wg show çıktısında interface: wg0 ve dinleme portu görünmelidir. Henüz peer olmadığı için el sıkışma (handshake) satırı yoktur.

7. İstemci Ekleme (Masaüstü)

İstemci anahtarlarını sunucuda üretmek pratiktir (üretimde istemcinin kendi cihazında üretmesi daha güvenlidir):

cd /etc/wireguard
umask 077
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
wg genpsk > client1_psk.key

Sunucudaki wg0.conf dosyasına peer ekleyin:

[Peer]
# client1
PublicKey = <client1_public.key içeriği>
PresharedKey = <client1_psk.key içeriği>
AllowedIPs = 10.8.0.2/32

Servisi kesintisiz güncellemek için:

sudo bash -c 'wg syncconf wg0 <(wg-quick strip wg0)'

İstemci tarafı yapılandırması (client1.conf):

[Interface]
PrivateKey = <client1_private.key içeriği>
Address = 10.8.0.2/32
DNS = 9.9.9.9
MTU = 1420

[Peer]
PublicKey = <server_public.key içeriği>
PresharedKey = <client1_psk.key içeriği>
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Linux istemcide sudo apt install wireguard resolvconf, ardından dosyayı /etc/wireguard/client1.conf olarak kaydedip sudo wg-quick up client1 ile bağlanın. Windows ve macOS'ta resmi WireGuard uygulamasında "Import tunnel(s) from file" yeterlidir.

Full tunnel mı, split tunnel mı?

AllowedIPs istemcide hangi trafiğin tünele gireceğini belirler:

Hedef AllowedIPs
Tüm trafik tünelden 0.0.0.0/0, ::/0
Sadece VPN iç ağı 10.8.0.0/24
VPN + ofis ağı 10.8.0.0/24, 192.0.2.0/24

Sunucu tarafında ise AllowedIPs o peer'in kaynak adreslerini sınırlar; her istemci için yalnızca kendi /32 adresini yazın.

8. Mobil İstemciler (Android ve iOS)

Mobilde en kolay yol QR koddur. Android ve iOS için "WireGuard" uygulamasını resmi mağazadan kurun, ardından istemci dosyasını sunucuda QR olarak gösterin:

qrencode -t ansiutf8 < /etc/wireguard/client2.conf

Uygulamada "+" → "QR kodundan tara" deyin. QR kod özel anahtarı içerir; ekran görüntüsünü paylaşmayın ve işiniz bitince terminal geçmişini temizleyin. Mobil için önerilen ayarlar:

9. Doğrulama

sudo wg show
ping -c3 10.8.0.1           # istemciden sunucuya
curl -4 ifconfig.me         # full tunnel'da sunucunun IP'sini göstermeli

latest handshake değeri birkaç saniye ile 2 dakika arasında görünüyorsa tünel çalışıyordur. Sunucuda trafiği izlemek için sudo tcpdump -ni eth0 udp port 51820 kullanabilirsiniz.

Sık Yapılan Hatalar ve Çözümleri

El sıkışma hiç oluşmuyor. UDP 51820 kapalıdır (sunucu firewall'u, hosting paneli veya yerel ağ) ya da Endpoint IP'si yanlıştır. Anahtarların karşılıklı doğru yapıştırıldığını kontrol edin: istemcide sunucunun public, sunucuda istemcinin public anahtarı bulunmalı.

El sıkışma var ama internet yok. Büyük olasılıkla ip_forward kapalı veya NAT kuralındaki arayüz adı yanlış (eth0 yerine ens3, enp1s0 olabilir). sysctl net.ipv4.ip_forward ve iptables -t nat -S POSTROUTING ile kontrol edin.

IP'ye gidiyor, alan adı çözülmüyor. İstemcideki DNS satırı eksik ya da erişilemez. Linux'ta resolvconf veya systemd-resolved kurulu olmayabilir.

Bağlantı yavaş veya bazı siteler açılmıyor. MTU sorunudur; 1380 veya 1280 deneyin.

wg-quick up sonrası SSH kopuyor. İstemci 0.0.0.0/0 yönlendiriyorsa ve sunucuya SSH'la kendi VPN'iniz üzerinden bağlanıyorsanız rota döngüsü oluşabilir. Yönetim IP'sini AllowedIPs dışında bırakmak için hesaplanmış bir liste kullanın veya split tunnel tercih edin.

Aynı istemci iki yerde bağlı. Aynı anahtar çifti iki cihazda kullanılamaz; her cihaza ayrı peer tanımlayın.

UFW açıkken forward çalışmıyor. /etc/default/ufw içinde DEFAULT_FORWARD_POLICY değerini kontrol edin veya ufw route allow kuralını ekleyin.

Güvenlik ve İşletme Önerileri

Site-to-Site İçin Kısa Not

İki ofisi bağlamak için her iki uca da WireGuard kurup karşı tarafın LAN'ını AllowedIPs'e yazmanız yeterlidir. Örneğin A ofisi 192.0.2.0/24, B ofisi 198.51.100.0/24 ise A'daki peer AllowedIPs = 10.8.0.2/32, 198.51.100.0/24, B'dekinde AllowedIPs = 10.8.0.1/32, 192.0.2.0/24 olur. Her iki uçta forwarding açık olmalı ve LAN'daki cihazlar rotayı bu ağ geçidi üzerinden almalıdır.

Sık sorulan sorular

WireGuard hangi portu kullanır?

Varsayılan port yoktur ama yaygın olarak UDP 51820 kullanılır. ListenPort ile değiştirebilirsiniz; seçtiğiniz UDP portunu sunucu güvenlik duvarında ve varsa hosting panelindeki firewall'da açmanız gerekir.

WireGuard sunucusu için kaç GB RAM ve kaç çekirdek gerekir?

WireGuard çekirdek seviyesinde çalıştığı için hafiftir. Birkaç kullanıcı için küçük bir VDS yeterlidir; asıl belirleyici olan ağ bant genişliği ve şifreleme yapılan toplam trafiktir.

Aynı anahtarla birden fazla cihaz bağlanabilir mi?

Teknik olarak mümkün görünse de önerilmez. Aynı anahtar çifti ve IP iki cihazda kullanılırsa bağlantılar birbirini düşürür. Her cihaz için ayrı anahtar çifti ve ayrı /32 iç IP tanımlayın.

WireGuard bağlantısı kuruldu ama internet çalışmıyor, ne yapmalıyım?

Önce sunucuda net.ipv4.ip_forward değerinin 1 olduğunu, ardından iptables NAT (MASQUERADE) kuralındaki dış arayüz adının doğru olduğunu kontrol edin. DNS ve MTU ayarları da sık görülen nedenlerdir.

Kendi WireGuard sunucunuz için Nixcon VDS çözümlerine göz atın.İncele