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 -yRHEL, 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 -yKurulumdan sonra WireGuard'ın kullanılabilir olduğunu kontrol edebilirsiniz:
wg --versionLinux sisteminizde WireGuard kernel modülünün mevcut olup olmadığını kontrol etmek için:
lsmod | grep wireguardModül yüklü değilse ve sisteminiz destekliyorsa aşağıdaki komutla yükleyebilirsiniz:
sudo modprobe wireguardWireGuard 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/wireguardArdı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.keyPublic key değerini görmek için:
sudo cat /etc/wireguard/server_public.keyDaha 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 MASQUERADEBuradaki 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 routeVarsayı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=1Ayarın sistem yeniden başlatıldığında da aktif kalması için:
sudo nano /etc/sysctl.d/99-wireguard.confDosyaya aşağıdaki satırı ekleyin:
net.ipv4.ip_forward = 1Ayarları uygulayın:
sudo sysctl --systemWireGuard İ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 = 25Burada 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/32Yapı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/32Her 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@wg0Servisin durumunu kontrol etmek için:
sudo systemctl status wg-quick@wg0WireGuard bağlantısının durumunu görmek için:
sudo wg showBurada 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/udpUFW durumunu kontrol etmek için:
sudo ufw statusAyrı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.8DNS çözümlemesini test etmek için:
ping google.comEğ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.