# Ubuntu veya Debian üzerinde WireGuard VPN sunucusu nasıl kurulur

> Ubuntu veya Debian'da wg-quick ve ufw ile WireGuard VPN sunucusu kurun: anahtarlar, IP yönlendirme, NAT, QR kodlu istemci ayarları, yeni eşler ve sorun giderme.

Zorluk: Orta\
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13

WireGuard, Linux çekirdeğine yerleşik modern bir VPN protokolüdür. Az sayıda güncel şifreleme yöntemi kullanır, yalnızca bir UDP portuna ihtiyaç duyar ve kısa metin dosyalarıyla yapılandırılır; bu da onu hızlı ve denetlemesi kolay kılar. Kendi WireGuard sunucunuzla dizüstü bilgisayarınızı ve telefonunuzu güvenilmeyen ağlarda denetiminizdeki bir sunucu üzerinden yönlendirebilir veya sunucuda internete açmak istemediğiniz servislere erişebilirsiniz.

Bu rehber WireGuard sunucusunu dağıtım paketleriyle ve `wireguard-tools` ile gelen standart araç `wg-quick` ile kurar. Anahtarları güvenli dosya izinleriyle üretir, `/etc/wireguard/wg0.conf` dosyasını yazar, IP yönlendirmeyi açar, istemcilerin internete çıkabilmesi için NAT ve yönlendirme kurallarını **ufw ile** ekler, tüneli `wg-quick@wg0` systemd servisi olarak çalıştırır ve QR kod olarak içe aktarabileceğiniz istemci ayarları oluşturursunuz. Eş ekleme, tam ve bölünmüş tünel, yedekleme ve sorun giderme sonda anlatılır. İstemcileri bir web arayüzünden yönetmeyi tercih ediyorsanız bunun yerine [wg-easy ile WireGuard](/guides/install-wg-easy) rehberine bakın.

## Ön koşullar

- **Ubuntu 24.04 LTS**, **Ubuntu 26.04 LTS**, **Debian 12** veya **Debian 13** çalıştıran bir sunucu. Bu sürümlerin çekirdekleri WireGuard'ı içerir ve `wireguard` paketi standart depolarda bulunur. Adımlar, root erişimli bir HyperDC Linux VPS, VDS veya dedicated sunucuda çalışır.
- `sudo` yetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı: [Yeni bir Linux sunucusunu güvenli hale getirin](/guides/secure-a-new-linux-server) ve [SSH anahtarlarını ayarlayın](/guides/ssh-keys) rehberlerine bakın.
- SSH'ye izin veren, kurulu ve etkin bir ufw (Debian'da `sudo apt install ufw` ile kurun).
- Sunucunun genel IP adresi (bu rehber `203.0.113.10` kullanır) ve sağlayıcınızın kontrol panelinde bir ağ güvenlik duvarı varsa orada da izin verilmiş UDP 51820 portu.
- Her istemcide WireGuard uygulaması: Windows, macOS, iOS ve Android için resmi uygulamalar veya Linux'ta `wireguard-tools`.

| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| CPU | Yayınlanmamış | 1 vCPU |
| RAM | Yayınlanmamış | 512 MB ile 1 GB |
| Disk | Yayınlanmamış | İşletim sistemi dışında ek alan gerekmez |
| Ağ | Yayınlanmamış | Sunucu üzerinden geçen tüm istemciler için yeterli bant genişliği |

WireGuard projesi en düşük gereksinim yayınlamaz; sağdaki sütun temkinli bir başlangıç noktasıdır. Kişisel veya küçük ekip VPN'lerinde sınırı genellikle CPU veya bellek değil, bant genişliği belirler.

## Adım 1 — WireGuard'ı kurun

Araçları ve istemci ayarlarını telefonlar için QR koda dönüştüren `qrencode` paketini kurun:

```bash
sudo apt update
sudo apt install wireguard qrencode
wg --version
```

`wg --version`, `wireguard-tools` sürümünü yazdırır. Çekirdek modülü Ubuntu ve Debian çekirdekleriyle gelir; derlenmesi gereken bir şey yoktur.

## Adım 2 — Anahtarları üretin

Her WireGuard eşinin bir özel anahtarı ve bundan türetilen bir açık anahtarı vardır. Özel anahtarlar yalnızca root tarafından okunabilmelidir. WireGuard'ın hızlı başlangıç rehberi anahtar üretmeden önce `umask 077` ayarlar; böylece yeni dosyalar 600 izniyle oluşturulur. Sunucu için bir, ilk istemci (burada `laptop`) için bir anahtar çifti oluşturun:

```bash
sudo mkdir -p /etc/wireguard/clients
sudo chmod 700 /etc/wireguard /etc/wireguard/clients
sudo sh -c 'umask 077; wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub'
sudo sh -c 'umask 077; wg genkey | tee /etc/wireguard/clients/laptop.key | wg pubkey > /etc/wireguard/clients/laptop.pub'
sudo ls -l /etc/wireguard /etc/wireguard/clients
```

Liste, anahtar dosyalarını `-rw-------` izinli ve root'a ait olarak gösterir. Bir `.key` dosyasını asla paylaşmayın; yalnızca `.pub` dosyaları paylaşılmak içindir.

## Adım 3 — Genel ağ arayüzünü bulun

NAT ve yönlendirme kuralları internete çıkan arayüzün adına ihtiyaç duyar. Bu ad çoğunlukla `eth0` olur, ancak `ens3`, `enp1s0` veya benzeri de olabilir:

```bash
ip -o -4 route show to default
```

Çıktı `default via 203.0.113.1 dev eth0 proto static` gibi görünür. `dev` sözcüğünden sonraki ad arayüzünüzün adıdır. Bu rehber `eth0` kullanır; sizinki farklıysa aşağıdaki her yerde değiştirin.

## Adım 4 — Sunucu yapılandırmasını yazın

`/etc/wireguard/wg0.conf` dosyasını oluşturun. VPN, `10.8.0.0/24` özel ağını kullanır: sunucu `10.8.0.1` adresini alır, her istemci kendi adresini alır. Komut, sunucunun özel anahtarını ve dizüstü bilgisayarın açık anahtarını doğrudan dosyalardan ekler:

```bash
sudo tee /etc/wireguard/wg0.conf > /dev/null <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(sudo cat /etc/wireguard/server.key)

[Peer]
# laptop
PublicKey = $(sudo cat /etc/wireguard/clients/laptop.pub)
AllowedIPs = 10.8.0.2/32
EOF
sudo chmod 600 /etc/wireguard/wg0.conf
```

- `Address` ve `ListenPort` değerlerini `wg-quick` okur; arayüz, dosya adına göre `wg0` olarak adlandırılır.
- Sunucudaki bir `[Peer]` bölümünde `AllowedIPs`, istemcinin kendi VPN adresidir ve `/32` olarak yazılır. Sunucu o eşten yalnızca bu kaynak adresli paketleri kabul eder ve bu adrese giden trafiği ona yönlendirir.
- İstemcilerinizin evde veya işte kullandığı ağlarla çakışmayan bir özel aralık seçin.

## Adım 5 — IP yönlendirmeyi açın

Sunucu paketleri `wg0` ile internet arasında yönlendirmelidir. IPv4 yönlendirmeyi bir sysctl dosyasıyla kalıcı olarak açın:

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

Son komut `net.ipv4.ip_forward = 1` yazdırır.

## Adım 6 — ufw ile güvenlik duvarı, yönlendirme ve NAT kurallarını ekleyin

Bu rehber her şey için ufw kullanır ve Ubuntu'nun `ufw-framework` belgelerindeki IP masquerading örneğini izler. Üç şey gerekir: WireGuard portunu açmak, `wg0` arayüzünden internete yönlendirmeye izin vermek ve VPN adreslerini sunucunun genel IP'si arkasında maskelemek (NAT). Önce `before.rules` dosyasını yedekleyin, ardından dosyanın sonuna bir `nat` bölümü ekleyin:

```bash
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on eth0
sudo cp /etc/ufw/before.rules /etc/ufw/before.rules.bak
sudo tee -a /etc/ufw/before.rules > /dev/null <<'EOF'

# WireGuard istemcileri için NAT
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
EOF
sudo ufw reload
sudo iptables -t nat -S POSTROUTING
sudo ufw status verbose
```

`iptables` çıktısı `10.8.0.0/24` için `MASQUERADE` kuralını içerir; `ufw status verbose` ise `51820/udp` portunu ve `wg0` arayüzünden `eth0` arayüzüne giden bir `ALLOW FWD` kuralını listeler. ufw'nin yönlendirilen trafik için varsayılan politikası `deny` olarak kalır; böylece yalnızca VPN trafiği yönlendirilir.

> **Uyarı**
>
> `tee -a` komutunu yalnızca bir kez çalıştırın; her çalıştırma bir `nat` bölümü daha ekler. Bir şeyler ters giderse kopyayı `sudo cp /etc/ufw/before.rules.bak /etc/ufw/before.rules` ile geri yükleyin ve `sudo ufw reload` çalıştırın.

## Adım 7 — Tüneli systemd ile başlatın

`wireguard-tools`, açılışta adı verilen yapılandırma için `wg-quick up` çalıştıran `wg-quick@.service` şablonunu getirir:

```bash
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0 --no-pager
sudo wg show
ip -brief address show wg0
```

`systemctl status` çıktısı `active (exited)` gösterir; bu tek seferlik birim için normaldir. `wg show` arayüzü açık anahtarı ve dinlediği portla, dizüstü bilgisayar eşini ise henüz el sıkışması olmadan listeler.

## Adım 8 — İstemci yapılandırmasını ve QR kodunu oluşturun

Dizüstü bilgisayarın yapılandırmasını `clients` klasörüne yazın. `203.0.113.10` yerine sunucunuzun IP adresini veya onu gösteren bir ana bilgisayar adını yazın:

```bash
sudo tee /etc/wireguard/clients/laptop.conf > /dev/null <<EOF
[Interface]
PrivateKey = $(sudo cat /etc/wireguard/clients/laptop.key)
Address = 10.8.0.2/24
DNS = 9.9.9.9, 149.112.112.112

[Peer]
PublicKey = $(sudo cat /etc/wireguard/server.pub)
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
EOF
sudo chmod 600 /etc/wireguard/clients/laptop.conf
```

- `DNS`, istemcinin bağlıyken kullandığı çözümleyicileri belirler. Herhangi bir genel çözümleyici çalışır; [bu VPN üzerinden AdGuard Home](/guides/install-adguard-home) çalıştırıyorsanız bunun yerine `10.8.0.1` kullanın.
- `AllowedIPs = 0.0.0.0/0, ::/0` tüm trafiği tünelden gönderir (aşağıdaki Tam veya bölünmüş tünel bölümüne bakın).
- `PersistentKeepalive = 25` her 25 saniyede küçük bir paket gönderir; WireGuard'ın hızlı başlangıç rehberi NAT veya güvenlik duvarı arkasındaki eşler için bu aralığı önerir.

Telefon için yapılandırmayı terminalde QR kod olarak gösterin ve WireGuard uygulamasıyla tarayın (**Add tunnel**, ardından QR koddan tarama):

```bash
sudo cat /etc/wireguard/clients/laptop.conf | qrencode -t ansiutf8
```

Masaüstü için dosyayı `sudo cat /etc/wireguard/clients/laptop.conf` ile görüntüleyin ve uygulamaya yeni boş bir tünel olarak yapıştırın; Linux istemcide ise `/etc/wireguard/wg0.conf` olarak kaydedip `sudo wg-quick up wg0` çalıştırın. Bağlanın, ardından sunucuda `sudo wg show` çalıştırın: eş artık bir **latest handshake** ve artan aktarım sayaçları gösterir; web siteleri de sizin adresiniz olarak sunucunun IP adresini görür.

Yapılandırma dosyası istemcinin özel anahtarını içerir. İstemci kurulduktan sonra `laptop.key` ve `laptop.conf` dosyalarını sunucudan silebilir veya yalnızca şifreli yedeklerinizde tutabilirsiniz.

## Adım 9 — Daha fazla eş ekleyin

Her cihaz kendi anahtar çiftini ve kendi adresini alır; bir yapılandırmayı asla cihazlar arasında paylaşmayın. `10.8.0.3` adresli bir telefon eklemek için anahtarlarını oluşturun, bir `[Peer]` bölümü ekleyin ve servisi yeniden yükleyin:

```bash
sudo sh -c 'umask 077; wg genkey | tee /etc/wireguard/clients/phone.key | wg pubkey > /etc/wireguard/clients/phone.pub'
sudo tee -a /etc/wireguard/wg0.conf > /dev/null <<EOF

[Peer]
# phone
PublicKey = $(sudo cat /etc/wireguard/clients/phone.pub)
AllowedIPs = 10.8.0.3/32
EOF
sudo systemctl reload wg-quick@wg0
sudo wg show
```

systemd biriminin `reload` eylemi değişen dosyayı `wg syncconf` ile uygular; bu komut yalnızca farklı olanı değiştirir ve bağlı eşleri kesintiye uğratmaz. Ardından Adım 8'deki gibi `phone.key` ve `Address = 10.8.0.3/24` ile `phone.conf` dosyasını oluşturun. Bir cihazın erişimini kaldırmak için onun `[Peer]` bölümünü silin ve yeniden yükleyin.

## Tam veya bölünmüş tünel

VPN'den neyin geçeceğine istemcideki `AllowedIPs` karar verir; sunucu yapılandırması aynı kalır:

- **Tam tünel** (`0.0.0.0/0, ::/0`): tüm trafik sunucu üzerinden geçer; herkese açık Wi-Fi ağlarında kullanışlıdır. Bu rehber tünele yalnızca IPv4 adresleri verir; bu yüzden `::/0` satırı esas olarak IPv6 trafiğinin VPN'i atlamasını önler. Yalnızca IPv6 ile erişilebilen siteler, tünele IPv6 ekleyene kadar açılmaz.
- **Bölünmüş tünel** (`10.8.0.0/24`): tüneli yalnızca VPN ağına giden trafik kullanır; örneğin `10.8.0.1` üzerinde dinleyen servislere erişmek için. Geri kalan her şey istemcinin normal bağlantısını kullanır ve `DNS` satırını kaldırabilirsiniz.

## Yedekleme ve geri yükleme

VPN'in tamamı birkaç dosyayla tanımlanır: `/etc/wireguard` (sunucu anahtarı, `wg0.conf` ve istemci dosyaları), `/etc/ufw/before.rules` içindeki NAT bölümü ve sysctl dosyası. Bunları arşivleyin ve özel anahtarlar içerdiği için arşivi gizli tutun:

```bash
sudo mkdir -p /opt/backups
sudo tar -czf /opt/backups/wireguard-$(date +%F).tar.gz /etc/wireguard /etc/ufw/before.rules /etc/sysctl.d/99-wireguard.conf
sudo chmod 600 /opt/backups/wireguard-*.tar.gz
```

Yeni bir sunucuya geri yüklemek için paketleri kurun (Adım 1), arşivi `sudo tar -xzf /opt/backups/wireguard-2026-10-09.tar.gz -C /` ile açın, `before.rules` içindeki arayüz adını kontrol edin, Adım 6'daki iki `ufw` komutunu ve `sudo sysctl --system` komutunu çalıştırın, ardından servisi Adım 7'deki gibi başlatın. Anahtarlar değişmediği için istemciler çalışmaya devam eder; sunucunun IP adresi değiştiyse yalnızca `Endpoint` satırlarının düzenlenmesi gerekir. Arşivi sunucunun dışına kopyalayın.

## WireGuard güncelleme

WireGuard çekirdeğin bir parçasıdır ve araçlar dağıtımdan gelir; bu yüzden olağan sistem güncellemeleri ikisini de kapsar:

```bash
sudo apt update
sudo apt upgrade
sudo reboot
```

Çekirdek güncellemelerinden sonra yeniden başlatın; `wg-quick@wg0` kendiliğinden yeniden başlar. Arayüzün geri geldiğini ve istemcilerin yeniden bağlandığını `sudo wg show` ile kontrol edin.

## Sorun giderme

### wg show çıktısında latest handshake yok

İstemcinin paketleri sunucuya ulaşmıyor veya anahtarlar eşleşmiyor. UDP 51820 portuna ufw'de ve sağlayıcınızın güvenlik duvarında izin verildiğini, `Endpoint` satırında doğru IP adresi ve port olduğunu ve anahtarların doğru çaprazlandığını kontrol edin: sunucudaki `[Peer]` istemcinin **açık** anahtarını, istemcideki `[Peer]` ise sunucunun **açık** anahtarını içerir. WireGuard yanlış anahtarlarda tasarımı gereği sessiz kalır; bu yüzden bir hata mesajı görmezsiniz.

### El sıkışması çalışıyor ama internet yok

Yönlendirme veya NAT eksik. `sysctl net.ipv4.ip_forward` (1 olmalı), `sudo iptables -t nat -S POSTROUTING` (`MASQUERADE` kuralını içermeli) ve `sudo ufw status verbose` (`ALLOW FWD` kuralını göstermeli) çıktılarını kontrol edin. En sık neden, iki yerde de `eth0` yerine yazılması gereken arayüz adının yanlış olmasıdır.

### Bağlıyken web siteleri çözümlenmiyor

İstemcinin çalışan bir DNS'i yok. İstemci yapılandırmasındaki `DNS` satırını kontrol edin. Linux istemcilerde `wg-quick` bu satırı `resolvconf` ile uygular; `resolvconf: command not found` görüyorsanız dağıtımınızdan bir resolvconf uygulaması kurun veya `DNS` satırını kaldırıp DNS'i başka bir yolla ayarlayın.

### Bazı siteler takılıyor veya yarım yükleniyor

Bu bir MTU sorununa işaret eder; mobil ağlarda, PPPoE hatlarında veya iç içe tünellerde sık görülür. `wg-quick` MTU değerini kendiliğinden seçer; istemcinin `[Interface]` bölümüne `MTU = 1280` ekleyerek daha düşük bir değer ayarlayın ve yeniden bağlanın.

### wg-quick@wg0, Operation not supported hatasıyla başarısız oluyor

Çekirdekte WireGuard desteği yok. `sudo modprobe wireguard` çalıştırın ve hatayı inceleyin. Standart Ubuntu ve Debian çekirdekleri modülü içerir; bu durum genellikle özel bir çekirdeğe veya çekirdek modüllerinin yüklenemediği konteyner tabanlı bir ortama işaret eder.

## Sonraki adımlar

- İstemciler için web arayüzü mü istiyorsunuz? [wg-easy ile WireGuard](/guides/install-wg-easy) rehberini deneyin.
- Tüm VPN istemcileri için reklamları ve izleyicileri [WireGuard üzerinden AdGuard Home](/guides/install-adguard-home) ile engelleyin.
- Yönetici sayfalarına, örneğin [Vaultwarden](/guides/install-vaultwarden) yönetici sayfasına, yalnızca VPN üzerinden erişin.
- Kendi VPN'iniz için sunucuları [VPN sunucusu](/vpn-server) sayfasında karşılaştırın.
- Tüm seçenekler için [WireGuard hızlı başlangıç](https://www.wireguard.com/quickstart/) sayfasını ve `wg-quick(8)` kılavuz sayfasını okuyun.

## Sık sorulan sorular

### Düz WireGuard mı yoksa wg-easy mi kullanmalıyım?

Bu rehberdeki gibi düz WireGuard'ın web arayüzü yoktur ve en az parçaya sahiptir; eşleri bir metin dosyasında yönetirsiniz. wg-easy ise WireGuard'ı istemci oluşturmak için bir web arayüzüyle birlikte Docker konteynerinde çalıştırır. Bir sunucuda ikisinden birini kullanın, ikisini aynı portta çalıştırmayın.

### WireGuard hangi porta ihtiyaç duyar?

Yalnızca ListenPort içindeki UDP portuna, bu rehberde 51820'ye. WireGuard TCP kullanmaz. Başka bir UDP portu seçebilirsiniz, ancak o zaman güvenlik duvarı kuralını ve her istemcideki Endpoint satırını da değiştirin.

### Tam tünel ile bölünmüş tünel arasındaki fark nedir?

Bunu istemci ayarındaki AllowedIPs belirler. 0.0.0.0/0 ve ::/0 tüm trafiği sunucu üzerinden gönderir (tam tünel). 10.8.0.0/24 gibi özel bir aralık ise yalnızca VPN ağına giden trafiği tünelden geçirir (bölünmüş tünel).

### İstemci anahtarları sunucuda mı üretilmeli?

QR kod gösterebildiğiniz için pratiktir; ancak anahtar çiftini istemci cihazda üretmek daha gizlidir, çünkü özel anahtar cihazdan hiç çıkmaz. WireGuard uygulamaları anahtar üretebilir; sunucuya yalnızca istemcinin açık anahtarını eklersiniz.

### WireGuard bağlantı logu tutar mı?

WireGuard'ın kendisi bağlantı logu yazmaz. sudo wg show arayüz açıkken her eşin son uç noktasını, son el sıkışmasını ve aktarım sayaçlarını gösterir; bu bilgiler yeniden başlatmadan sonra kaybolur.

---

Kaynak: <https://hyperdc.com/tr/guides/tutorials/wireguard-vpn-server>\
Son güncelleme: 2026-10-09
