WireGuard VPN Kurulumu: Ubuntu Rehberi
Günümüzün dijital dünyasında güvenlik ve gizlilik her zamankinden daha önemli hale gelmiştir. Sanal Özel Ağ (VPN) bu ihtiyaçları karşılamak için güçlü bir araçtır. Geleneksel VPN çözümlerine modern ve minimalist bir alternatif olarak ortaya çıkan WireGuard, hızı, basitliği ve üstün güvenliği ile öne çıkmaktadır. Bu rehberde, Ubuntu işletim sistemi üzerinde adım adım bir WireGuard VPN sunucusu kuracak ve istemcilerinizin bu sunucuya nasıl bağlanacağını yapılandıracağız.
WireGuard, Linux çekirdeğine entegre edilmiş bir VPN tünelidir. Daha az kod satırı sayesinde daha küçük bir saldırı yüzeyine sahiptir, bu da onu daha güvenli ve denetlemesi daha kolay kılar. Ayrıca, modern kriptografi kullanır ve performansı oldukça yüksektir.
Ön Gereksinimler
- Bir Ubuntu Sunucusu (20.04 LTS veya üstü önerilir).
- SSH erişimi olan bir terminal.
sudoyetkilerine sahip bir kullanıcı.- İstemci cihazlar (Linux, Windows, macOS, Android, iOS).
- Sunucunuzun bir genel IP adresi (veya bir alan adı).
Adım 1: WireGuard Sunucusunu Hazırlama
1.1 Sistem Güncellemesi ve WireGuard Kurulumu
Öncelikle sunucunuzun paket listesini güncelleyelim ve yükseltmeleri yapalım. Ardından WireGuard paketini yükleyelim.
sudo apt update
sudo apt upgrade -y
sudo apt install wireguard -y
1.2 Anahtar Çifti Oluşturma
WireGuard, her arayüz için bir genel (public) ve özel (private) anahtar çifti kullanır. Bu anahtarlar, VPN tünelindeki şifrelemeyi ve kimlik doğrulamayı sağlar. Güvenlik için, bu anahtarları oluştururken doğru izinleri ayarlamak önemlidir.
umask 077
wg genkey | sudo tee /etc/wireguard/privatekey
sudo cat /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
sudo chmod 600 /etc/wireguard/{privatekey,publickey}
Şimdi sunucunuzun özel anahtarını ve genel anahtarını görüntüleyebilirsiniz (genel anahtara daha sonra istemci yapılandırmasında ihtiyacımız olacak).
echo "Sunucu Özel Anahtarı:"
sudo cat /etc/wireguard/privatekey
echo "Sunucu Genel Anahtarı:"
sudo cat /etc/wireguard/publickey
1.3 Sunucu Yapılandırma Dosyası Oluşturma
WireGuard, her arayüz için bir yapılandırma dosyası kullanır (örn. wg0.conf). Bu dosyayı oluşturup düzenleyelim:
sudo nano /etc/wireguard/wg0.conf
Aşağıdaki içeriği dosyaya yapıştırın. <SUNUCU_ÖZEL_ANAHTARI> kısmına az önce oluşturduğunuz sunucu özel anahtarını (privatekey içeriği) yapıştırmanız gerekmektedir. eth0 yerine sunucunuzun ana ağ arayüz adını (genellikle enpXsX veya ensX gibi) kontrol edip doğru olanı yazmalısınız. Bunu ip a komutu ile kontrol edebilirsiniz.
[Interface]
PrivateKey = <SUNUCU_ÖZEL_ANAHTARI>
Address = 10.0.0.1/24
ListenPort = 51820
SaveConfig = false
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o <ANA_AG_ARAYUZU> -j MASQUERADE; iptables -A FORWARD -o <ANA_AG_ARAYUZU> -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o <ANA_AG_ARAYUZU> -j MASQUERADE; iptables -D FORWARD -o <ANA_AG_ARAYUZU> -j ACCEPT
Açıklamalar:
PrivateKey: Sunucunuzun özel anahtarı.Address: WireGuard arayüzüne atanan özel IP adresi. Bu, VPN içindeki IP aralığınızdır.ListenPort: WireGuard’ın gelen bağlantıları dinleyeceği UDP portu.SaveConfig = false: WireGuard kapatıldığında yapılandırma dosyasını otomatik olarak güncellemesini engeller, manuel kontrol sağlar.PostUp/PostDown: WireGuard arayüzü başlatıldığında/kapatıldığında çalıştırılacak komutlar. Bu komutlar, VPN tüneli üzerinden gelen trafiğin internete yönlendirilmesini (NAT/MASQUERADE) sağlar.<ANA_AG_ARAYUZU>kısmını sunucunuzun dışa dönük ağ arayüzü ile değiştirmeyi unutmayın (örn.eth0).
1.4 IP Yönlendirmeyi Etkinleştirme
Sunucunuzun VPN istemcilerinden gelen trafiği internete yönlendirebilmesi için IP yönlendirmeyi etkinleştirmemiz gerekir.
Geçici olarak etkinleştirme:
sudo sysctl -w net.ipv4.ip_forward=1
Kalıcı olarak etkinleştirme:
sudo nano /etc/sysctl.conf
Dosyada aşağıdaki satırı bulun ve yorum satırı ise başındaki # işaretini kaldırın, yoksa ekleyin:
net.ipv4.ip_forward=1
Değişiklikleri kaydettikten sonra aşağıdaki komutla uygulayın:
sudo sysctl -p
1.5 UFW Güvenlik Duvarını Yapılandırma
Eğer Ubuntu sunucunuzda UFW (Uncomplicated Firewall) kullanıyorsanız, WireGuard portu için bir kural eklememiz ve SSH erişimine izin vermemiz gerekecektir.
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
sudo ufw enable komutu çalıştığında, SSH bağlantınızın kesilebileceği uyarısıyla karşılaşabilirsiniz. Devam etmek için y yazıp Enter’a basın. SSH ve WireGuard portlarına izin verdiğiniz sürece bağlantılarınız sorunsuz devam etmelidir.
1.6 WireGuard Servisini Başlatma
Şimdi WireGuard arayüzünü başlatabilir ve sunucu açılışında otomatik başlaması için etkinleştirebiliriz.
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0
Servisin durumunu kontrol edin:
sudo systemctl status wg-quick@wg0
Ayrıca WireGuard arayüzünün çalıştığını wg show komutu ile görebilirsiniz:
sudo wg show
Şu anda herhangi bir istemci eklemediğimiz için Peers (Eşler) bölümü boş olacaktır.
Adım 2: WireGuard İstemcisini Yapılandırma
Her istemci için bir yapılandırma dosyası oluşturmamız ve bunu sunucuya eklememiz gerekiyor. Bu örnekte, bir Linux istemcisi için CLI tabanlı bir yapılandırma göstereceğiz. Diğer işletim sistemleri için WireGuard’ın resmi uygulamalarını kullanabilirsiniz, adımlar benzer olacaktır.
2.1 İstemci Anahtarlarını Oluşturma
İstemci makinenizde (veya güvenlik amacıyla sunucuda oluşturup güvenli bir şekilde aktarın) özel ve genel anahtar çiftini oluşturun.
umask 077
wg genkey | tee privatekey_client
cat privatekey_client | wg pubkey | tee publickey_client
Bu anahtarları bir kenara not edin.
2.2 İstemci Yapılandırma Dosyası Oluşturma
İstemci için wg0.conf adında bir dosya oluşturun (örn. masaüstünüzde veya /etc/wireguard/ dizininde). Bu dosyayı WireGuard uygulaması aracılığıyla içe aktarabilirsiniz.
[Interface]
PrivateKey = <İSTEMCİ_ÖZEL_ANAHTARI>
Address = 10.0.0.2/24
DNS = 1.1.1.1, 8.8.8.8
[Peer]
PublicKey = <SUNUCU_GENEL_ANAHTARI>
Endpoint = <SUNUCU_GENEL_IP_ADRESİ_VEYA_ALAN_ADI>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Açıklamalar:
PrivateKey: İstemcinizin özel anahtarı.Address: İstemcinize atanan benzersiz IP adresi. (Her istemci için farklı bir IP, örneğin 10.0.0.2, 10.0.0.3 vb.).DNS: İstemcinin kullanacağı DNS sunucuları (Cloudflare ve Google DNS örnek olarak verilmiştir).PublicKey: Sunucunuzun genel anahtarı.Endpoint: Sunucunuzun genel IP adresi (veya alan adı) ve WireGuard portu.AllowedIPs: Bu IP’ler, VPN tüneli üzerinden yönlendirilecektir.0.0.0.0/0tüm trafiği VPN üzerinden göndermesini sağlar.PersistentKeepalive: Her 25 saniyede bir boş paket göndererek NAT arkasındaki bağlantıların canlı kalmasına yardımcı olur.
2.3 Sunucuya İstemci Ekleme
Şimdi sunucuya geri dönün ve /etc/wireguard/wg0.conf dosyasını düzenleyerek yeni istemcinizi bir Peer olarak ekleyin.
sudo nano /etc/wireguard/wg0.conf
Dosyanın sonuna aşağıdaki bölümü ekleyin. <İSTEMCİ_GENEL_ANAHTARI> kısmına istemcinizin genel anahtarını yapıştırmayı unutmayın.
[Peer]
PublicKey = <İSTEMCİ_GENEL_ANAHTARI>
AllowedIPs = 10.0.0.2/32
AllowedIPs = 10.0.0.2/32, sunucunun sadece bu belirli IP adresinden gelen trafiği bu istemciye yönlendireceğini belirtir.
Değişiklikleri yaptıktan sonra, WireGuard’ı yeniden başlatmanıza gerek kalmadan yapılandırmayı uygulamak için aşağıdaki komutu kullanın:
sudo wg syncconf wg0 < /etc/wireguard/wg0.conf
Veya basitleştirmek için servisi yeniden başlatabilirsiniz (bu, anlık bağlantı kesintilerine neden olur):
sudo systemctl restart wg-quick@wg0
Adım 3: Bağlantıyı Test Etme
3.1 İstemci Tarafında Bağlantı Kurma (Linux Örneği)
Eğer istemciniz de bir Linux makinesiyse, WireGuard’ı kurup yapılandırma dosyasını /etc/wireguard/wg0.conf konumuna kopyaladıktan sonra şu komutlarla bağlantıyı başlatabilirsiniz:
sudo apt install wireguard -y (eğer kurulu değilse)
sudo cp /path/to/client_wg0.conf /etc/wireguard/wg0.conf
sudo wg-quick up wg0
Bağlantı durumunu kontrol edin:
sudo wg show
Ayrıca genel IP adresinizin değişip değişmediğini kontrol edebilirsiniz:
curl ifconfig.me
Bu komut, VPN sunucunuzun genel IP adresini göstermelidir.
İstemcideki bağlantıyı durdurmak için:
sudo wg-quick down wg0
3.2 Diğer İstemciler (Windows, macOS, Android, iOS)
Diğer işletim sistemleri için WireGuard’ın resmi uygulamalarını indirin. Genellikle, oluşturduğunuz wg0.conf dosyasını (veya QR kodunu) uygulamaya içe aktararak kolayca kurulum yapabilirsiniz.
İpuçları ve Sorun Giderme
- Günlükleri Kontrol Edin: Sorun yaşadığınızda sunucu ve istemci üzerindeki WireGuard günlüklerini kontrol edin.
sudo journalctl -u wg-quick@wg0 - Güvenlik Duvarı: Sunucunuzdaki güvenlik duvarının (UFW, iptables) WireGuard portuna (varsayılan 51820 UDP) izin verdiğinden emin olun.
- IP Yönlendirme: Sunucunuzda IP yönlendirme (
net.ipv4.ip_forward=1) etkin olduğundan emin olun. - Anahtar Eşleşmesi: Sunucu ve istemci yapılandırma dosyalarındaki genel/özel anahtarların doğru eşleştiğinden emin olun.
- IP Adresleri: Her istemcinin VPN içindeki IP adresinin (
10.0.0.2,10.0.0.3vb.) benzersiz olduğundan ve sunucu yapılandırmasındakiAllowedIPsile eşleştiğinden emin olun. - Ağ Arayüzü: Sunucu yapılandırmasındaki
PostUp/PostDownkomutlarındaki ağ arayüz adının (örn.eth0) doğru olduğundan emin olun.
Sonuç
Tebrikler! Ubuntu sunucunuzda başarılı bir şekilde bir WireGuard VPN kurdunuz ve ilk istemcinizi yapılandırdınız. WireGuard’ın basitliği ve performansı sayesinde, artık internet bağlantılarınız için güvenli ve hızlı bir tüneliniz var. Daha fazla istemci eklemek için 2. ve 2.3 adımlarını tekrarlamanız yeterlidir. Güvenli internet deneyimleriniz olsun!
