İçeriğe geç
Wireguard VPN Kurulumu Ve Yapılandırma Rehberi

Wireguard VPN Kurulumu Ve Yapılandırma Rehberi

8 dk okuma DevOps

WireGuard VPN Kurulumu ve Yapılandırması: Adım Adım Rehber

VPN (Virtual Private Network) teknolojisi, günümüzde güvenli ağ iletişimi, uzaktan erişim ve internet trafiğinin şifrelenmesi için yaygın olarak kullanılmaktadır. WireGuard, modern şifreleme algoritmaları, sade yapılandırması ve yüksek performansı sayesinde günümüzde en çok tercih edilen VPN çözümlerinden biridir.

Bu rehberde Linux sunucu üzerinde WireGuard VPN kurulumu ve yapılandırmasını adım adım inceleyeceğiz. Ayrıca istemci yapılandırması, IP yönlendirme, NAT, firewall ve bağlantı testlerinin nasıl yapılacağını da ele alacağız.

WireGuard Nedir?

WireGuard, modern ve hafif bir VPN protokolüdür. Linux kernel ile entegre şekilde çalışabilir ve diğer VPN çözümlerine kıyasla oldukça sade bir kod tabanına sahiptir. WireGuard; güvenlik, performans ve kullanım kolaylığını bir arada sunmak amacıyla tasarlanmıştır.

WireGuard'ın öne çıkan özellikleri şunlardır:

  • Basit ve anlaşılır yapılandırma

  • Modern ve güçlü şifreleme algoritmaları

  • Yüksek performans ve düşük işlemci kullanımı

  • Küçük ve sade kod tabanı

  • Kolay istemci ve sunucu yönetimi

  • Mobil ve masaüstü cihazlarda kullanılabilme

  • UDP tabanlı hızlı ve düşük gecikmeli bağlantı

WireGuard, ev kullanıcılarından kurumsal ağlara kadar birçok farklı senaryoda kullanılabilir. Özellikle uzak sunuculara güvenli erişim ve kişisel VPN sunucusu oluşturmak için oldukça uygun bir çözümdür.

WireGuard VPN Kurulumu

WireGuard kurulumu kullanılan Linux dağıtımına göre değişiklik gösterebilir. Güncel Ubuntu ve Debian sürümlerinde WireGuard paketleri doğrudan dağıtım depolarından kurulabilir.

Ubuntu ve Debian

sudo apt update
sudo apt install wireguard -y

RHEL, Rocky Linux ve AlmaLinux

RHEL tabanlı sistemlerde WireGuard paketleri kullanılan sürüme ve etkin depolara göre farklılık gösterebilir. Modern sürümlerde öncelikle EPEL deposu etkinleştirilebilir:

sudo dnf install epel-release -y
sudo dnf install wireguard-tools -y

Kurulumdan sonra WireGuard'ın kullanılabilir olduğunu kontrol edebilirsiniz:

wg --version

Linux sisteminizde WireGuard kernel modülünün mevcut olup olmadığını kontrol etmek için:

lsmod | grep wireguard

Modül yüklü değilse ve sisteminiz destekliyorsa aşağıdaki komutla yükleyebilirsiniz:

sudo modprobe wireguard

WireGuard Sunucu Yapılandırması

WireGuard sunucusunu yapılandırmak için öncelikle sunucuya ait bir private key ve public key oluşturmalıyız. Private key gizli tutulmalı ve kesinlikle başka kişilerle paylaşılmamalıdır.

Öncelikle WireGuard yapılandırma dizinini oluşturun:

sudo mkdir -p /etc/wireguard

Ardından sunucu için anahtar çiftini oluşturun:

sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server_private.key'
sudo sh -c 'wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key'

Sunucunun private key değerini görmek için:

sudo cat /etc/wireguard/server_private.key

Public key değerini görmek için:

sudo cat /etc/wireguard/server_public.key

Daha sonra WireGuard sunucu yapılandırma dosyasını oluşturun:

sudo nano /etc/wireguard/wg0.conf

Örnek sunucu yapılandırması:

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SUNUCU_PRIVATE_KEY

PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -A FORWARD -o %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Buradaki SUNUCU_PRIVATE_KEY alanına daha önce oluşturduğunuz sunucu private key değerini yazmalısınız.

Address = 10.0.0.1/24 satırı WireGuard tünelindeki sunucu IP adresini belirtir. ListenPort = 51820 ise WireGuard'ın UDP üzerinden dinleyeceği portu belirtir.

PostUp ve PostDown kuralları, VPN istemcilerinden gelen trafiğin sunucunun internet bağlantısı üzerinden çıkabilmesi için forwarding ve NAT işlemlerini gerçekleştirir.

Buradaki eth0 değerinin sunucunuzdaki gerçek internet arayüzüyle aynı olduğundan emin olun. Arayüzleri görmek için:

ip route

Varsayılan rotanın bulunduğu arayüz genellikle aşağıdaki komutta default satırında görünür.

Linux IP Forwarding Ayarını Etkinleştirme

WireGuard sunucusunun VPN istemcilerinden gelen trafiği internete yönlendirebilmesi için Linux üzerinde IP forwarding özelliğinin etkinleştirilmesi gerekir.

Geçici olarak etkinleştirmek için:

sudo sysctl -w net.ipv4.ip_forward=1

Ayarın sistem yeniden başlatıldığında da aktif kalması için:

sudo nano /etc/sysctl.d/99-wireguard.conf

Dosyaya aşağıdaki satırı ekleyin:

net.ipv4.ip_forward = 1

Ayarları uygulayın:

sudo sysctl --system

WireGuard İstemci Yapılandırması

Sunucu yapılandırmasından sonra VPN'e bağlanacak istemci için de bir anahtar çifti oluşturmalıyız.

umask 077
wg genkey > client_private.key
wg pubkey < client_private.key > client_public.key

İstemcinin private key değeri yalnızca istemci cihazında tutulmalıdır. Public key ise sunucudaki ilgili [Peer] bölümünde kullanılacaktır.

Örnek istemci yapılandırması:

[Interface]
PrivateKey = ISTEMCI_PRIVATE_KEY
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = SUNUCU_PUBLIC_KEY
Endpoint = SUNUCU_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Burada ISTEMCI_PRIVATE_KEY yerine istemcinin private key değerini, SUNUCU_PUBLIC_KEY yerine ise WireGuard sunucusunun public key değerini yazmalısınız.

Endpoint bölümünde SUNUCU_IP yerine sunucunun public IP adresini veya DNS adresini yazabilirsiniz.

AllowedIPs = 0.0.0.0/0 kullanıldığında IPv4 internet trafiğinin tamamı WireGuard tüneli üzerinden gönderilir. Bu yapılandırma genellikle full-tunnel VPN olarak adlandırılır.

Yalnızca WireGuard ağına erişmek istiyorsanız örneğin:

AllowedIPs = 10.0.0.0/24

şeklinde daha sınırlı bir yapılandırma kullanabilirsiniz. Bu durumda internet trafiği doğrudan mevcut bağlantı üzerinden devam eder.

Sunucuya WireGuard İstemcisi Ekleme

İstemcinin public key değerini sunucuya eklememiz gerekir. Bunun için wg set komutunu kullanabilirsiniz:

sudo wg set wg0 peer ISTEMCI_PUBLIC_KEY allowed-ips 10.0.0.2/32

Yapılandırmanın kalıcı olması için istemciyi doğrudan /etc/wireguard/wg0.conf dosyasına da ekleyebilirsiniz:

[Peer]
PublicKey = ISTEMCI_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32

Her WireGuard istemcisine tünel içerisinde benzersiz bir IP adresi verilmelidir. Örneğin ikinci istemci için 10.0.0.3/32, üçüncü istemci için 10.0.0.4/32 kullanılabilir.

WireGuard Servisini Başlatma

Yapılandırma tamamlandıktan sonra WireGuard arayüzünü başlatabilirsiniz:

sudo systemctl enable --now wg-quick@wg0

Servisin durumunu kontrol etmek için:

sudo systemctl status wg-quick@wg0

WireGuard bağlantısının durumunu görmek için:

sudo wg show

Burada istemcinin public key bilgisi, son handshake zamanı ve gönderilen/alınan veri miktarı gibi bilgiler görüntülenebilir.

Firewall Yapılandırması

Sunucuda firewall kullanılıyorsa WireGuard'ın dinlediği UDP portuna izin verilmelidir. Örneğin UFW kullanıyorsanız:

sudo ufw allow 51820/udp

UFW durumunu kontrol etmek için:

sudo ufw status

Ayrıca sunucunuz bir VPS sağlayıcısında çalışıyorsa işletim sistemi firewall'ına ek olarak sağlayıcının güvenlik grubu veya cloud firewall ayarlarında da UDP 51820 portunun açık olduğundan emin olun.

WireGuard Bağlantısını Test Etme

İstemci yapılandırmasını .conf dosyası olarak kaydedip WireGuard istemcisi üzerinden bağlantıyı başlatabilirsiniz.

Bağlantı kurulduktan sonra istemciden WireGuard sunucusunun VPN IP adresine ping gönderin:

ping 10.0.0.1

İnternet erişimini test etmek için:

ping 8.8.8.8

DNS çözümlemesini test etmek için:

ping google.com

Eğer 10.0.0.1 adresine erişilebiliyor ancak 8.8.8.8 adresine erişilemiyorsa IP forwarding, NAT veya firewall yapılandırmasını kontrol edin. IP adresine erişiliyor ancak alan adları çözümlenmiyorsa DNS ayarlarını kontrol etmek gerekir.

WireGuard Bağlantı Durumunu Kontrol Etme

Sunucuda aşağıdaki komut ile WireGuard peer bağlantısını kontrol edebilirsiniz:

sudo wg show wg0

İstemci ile sunucu arasında başarılı bir bağlantı oluştuğunda latest handshake alanında güncel bir handshake zamanı görülür. Ayrıca RX ve TX değerleri üzerinden alınan ve gönderilen veri miktarı takip edilebilir.

Sonuç

WireGuard VPN, sade yapılandırması, modern şifreleme yaklaşımı ve yüksek performansı sayesinde güvenli ağ bağlantıları oluşturmak için güçlü bir çözümdür. Doğru yapılandırıldığında bir Linux sunucuyu güvenli bir VPN sunucusuna dönüştürmek oldukça kolaydır.

Bu rehberde WireGuard VPN kurulumu, sunucu ve istemci anahtarlarının oluşturulması, IP forwarding, NAT, firewall yapılandırması, istemci ekleme ve bağlantı testlerini ele aldık.

WireGuard yapılandırmanızı güvenli tutmak için private key değerlerini paylaşmamaya, sunucu firewall kurallarını yalnızca gerekli portlara izin verecek şekilde yapılandırmaya ve her istemci için benzersiz bir VPN IP adresi kullanmaya dikkat etmelisiniz.