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.
- Orta
- 35 dk okuma
- Güncellendi
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13
Bu sayfada
- Ön koşullar
- Adım 1 — WireGuard'ı kurun
- Adım 2 — Anahtarları üretin
- Adım 3 — Genel ağ arayüzünü bulun
- Adım 4 — Sunucu yapılandırmasını yazın
- Adım 5 — IP yönlendirmeyi açın
- Adım 6 — ufw ile güvenlik duvarı, yönlendirme ve NAT kurallarını ekleyin
- Adım 7 — Tüneli systemd ile başlatın
- Adım 8 — İstemci yapılandırmasını ve QR kodunu oluşturun
- Adım 9 — Daha fazla eş ekleyin
- Tam veya bölünmüş tünel
- Yedekleme ve geri yükleme
- WireGuard güncelleme
- Sorun giderme
- wg show çıktısında latest handshake yok
- El sıkışması çalışıyor ama internet yok
- Bağlıyken web siteleri çözümlenmiyor
- Bazı siteler takılıyor veya yarım yükleniyor
- wg-quick@wg0, Operation not supported hatasıyla başarısız oluyor
- Sonraki adımlar
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 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
wireguardpaketi standart depolarda bulunur. Adımlar, root erişimli bir HyperDC Linux VPS, VDS veya dedicated sunucuda çalışır. sudoyetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı: Yeni bir Linux sunucusunu güvenli hale getirin ve SSH anahtarlarını ayarlayın rehberlerine bakın.- SSH'ye izin veren, kurulu ve etkin bir ufw (Debian'da
sudo apt install ufwile kurun). - Sunucunun genel IP adresi (bu rehber
203.0.113.10kullanı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:
sudo apt update
sudo apt install wireguard qrencode
wg --versionwg --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:
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/clientsListe, 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:
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:
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.confAddressveListenPortdeğerleriniwg-quickokur; arayüz, dosya adına görewg0olarak adlandırılır.- Sunucudaki bir
[Peer]bölümündeAllowedIPs, istemcinin kendi VPN adresidir ve/32olarak 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:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sysctl net.ipv4.ip_forwardSon 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:
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 verboseiptables çı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.
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 [email protected] şablonunu getirir:
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0 --no-pager
sudo wg show
ip -brief address show wg0systemctl 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:
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.confDNS, istemcinin bağlıyken kullandığı çözümleyicileri belirler. Herhangi bir genel çözümleyici çalışır; bu VPN üzerinden AdGuard Home çalıştırıyorsanız bunun yerine10.8.0.1kullanın.AllowedIPs = 0.0.0.0/0, ::/0tüm trafiği tünelden gönderir (aşağıdaki Tam veya bölünmüş tünel bölümüne bakın).PersistentKeepalive = 25her 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):
sudo cat /etc/wireguard/clients/laptop.conf | qrencode -t ansiutf8Masaü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:
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 showsystemd 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::/0satı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ğin10.8.0.1üzerinde dinleyen servislere erişmek için. Geri kalan her şey istemcinin normal bağlantısını kullanır veDNSsatı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:
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.gzYeni 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:
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 rehberini deneyin.
- Tüm VPN istemcileri için reklamları ve izleyicileri WireGuard üzerinden AdGuard Home ile engelleyin.
- Yönetici sayfalarına, örneğin Vaultwarden yönetici sayfasına, yalnızca VPN üzerinden erişin.
- Kendi VPN'iniz için sunucuları VPN sunucusu sayfasında karşılaştırın.
- Tüm seçenekler için WireGuard hızlı başlangıç 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.
Kaynaklar
- wireguard.com/install
- wireguard.com/quickstart
- manpages.ubuntu.com/manpages/noble/en/man8/wg-quick.8.html
- manpages.ubuntu.com/manpages/noble/en/man8/wg.8.html
- git.zx2c4.com/wireguard-tools/tree/src/systemd/[email protected]
- manpages.ubuntu.com/manpages/noble/en/man8/ufw-framework.8.html
- manpages.ubuntu.com/manpages/noble/en/man1/qrencode.1.html