Bulut sunucuda WireGuard kurulumu
2026-01-24WireGuard nedir?
WireGuard, yönlendirilmeli veya köprülü ağ yapılandırmalarında noktadan noktaya (P2P) güvenli bağlantılar oluşturmak için sanal özel ağ (VPN) tekniklerini uygulayan ücretsiz ve açık kaynak kodlu bir yazılım uygulaması ve iletişim protokolüdür.
Bu Vikipedi tanımı WireGuard’ın ne olduğu ve hangi amaçlarla kullanılabileceğine dair ufak da olsa bir önizlenim yaratıyor.
Bulut sağlayıcılardan kiraladığımız sanal sunucularda, genellikle açık portlardan gelen istekleri dinleyen ve işleyen birçok servis çalıştırırız. İnternetten gelen istekleri dinleyen her port, sunucumuzun atak yüzeyini arttırır ve dolayısıyla çalışan servislerin-bütünüyle sunucunun güvenliğini sağlamak, ekstra çaba ve dikkat gerektirir.
Kurumsal-çalışma ortamlarında bu tür sorunlar genellikle siber güvenlik-ağ uzmanları veya sistem yöneticileri tarafından çözülmektedir. Ama bir ev sunucusunda, sadece kullandığınız servisleri kendiniz sunup, dışa bağımlılığınızı (ekonomik veya veri paylaşımı) azaltmaya çalıştığınız bir ortamda durum böyle değildir.
Başka bir açıdan bakacak olursak, diyelim ki evde değilken ev sunucunuzdaki servislere erişmek istiyorsunuz. Fakat dizüstü bilgisayarınız ve sunucunuz artık aynı yerel ağda değiller. Yani sunucunuza ufak kağıda yazdığınız yerel IP adresi üzerinden erişemiyorunuz.
- Belki evdeki yönlendiricimin genel IP adresini çıkmadan not alıp, bu adres üzerinden port yönlendirmesi yaparak bağlanabilirim?
- Dışarıda bir kafeye oturana kadar, internet sağlayıcınız tarafından ev ağınıza yeni bir IP adresi atanması oldukça mümkündür.
- Peki ya internet sağlayımdan statik bir IP adresi satın alsam?
- Akşam saatlerinde ailenizin favori dizisini izlediği ağı statik bir IP adresine bağlamak iyi bir fikir olmayabilir.
- Öğrenciyseniz, yurt müdürünü dönem ortasında statik IP adresi satın almaya ikna etmek, oldukça zorlayıcı olabilir.
Uzun lafın kısası; sanal bulut sunucuda (statik IP’ye bağlı) bir sanal ağ (VPN) oluşturup, ev sunucunuzu ve istemci cihazlarınızı bu ağa katmak iyi bir çözüm olabilir.
Ev sunucusuna yerel ağ dışından bağlanırken WireGuard’ı tercih etmek için bazı sebepler:
- Kurulumu ve özelleştirilmesi basit
- Şifreli bağlantı
- Direkt olarak Linux çekirdeği ağ katmanında çalışır
- Atak yüzeyi ufak
- Hızlı bağlantı (OpenVPN’e kıyasla)

Sanal sunucu tarafında kurulum
Gerekli paketlerin kurulumu
wireguard ve ufw (uncomplicated firewall) paketlerini dağıtımınızın sağladığı depolardan indirip kurun.
- Fedora/RHEL tabanlı dağıtımlar için:
~$ dnf install wireguard ufw
- Debian tabanlı dağıtımlar için:
~$ apt install wireguard ufw
IP yönlendirmesini aktif hale getirin
/etc/sysctl.conf dosyasına aşağıdaki satırları ekleyin:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Yeni ayarları yüklemek için “sysctl -p” komutunu çalıştırın.
Anahtarların ve yapılandırma dosyasının oluşturulması
Bakınız: Vikipedi - Açık anahtarlı şifreleme
Yapılandırma dosyalarının bulunacağı klasörü oluşturun ve bu klasöre geçin:
~$ mkdir /etc/wireguard && cd /etc/wireguard
Sanal sunucu için gizli anahtar oluşturun:
~$ wg genkey | tee /etc/wireguard/server_private.key
Gizli anahtarın dosya izinlerini sadece yöneticilerin okuyup yazabileceği (rw) şekilde değiştirin:
~$ chmod 600 /etc/wireguard/server_private.key
ÖNEMLİ: Gizli anahtarların dosya izinlerini kısıtlayıcı şekilde ayarlamak, özellikle çok kullanıcılı ortamlarda oldukça önemli ve kritiktir! Ve ASLA GİZLİ ANAHTARI PAYLAŞMAYIN!
Sanal sunucu için önceden oluşturduğumuz gizli anahtarı kullanarak bir açık anahtar oluşturun:
~$ cat /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key
“/etc/wireguard/wg0.conf” yolunda yapılandırma dosyasını oluşturun:
[Interface]
Address = {SUNUCU_VPN_IP}/{ALT_AĞ_EKİ} # Örneğin: 130.10.0.1/24
ListenPort = {SUNUCU_PORT}
PrivateKey = {SUNUCU_GİZLİ_ANAHTAR}
PostUp = ufw route allow in on wg0 out on {AĞ_ARABİRİM}
PostUp = iptables -t nat -I POSTROUTING -o {AĞ_ARABİRİM} -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o {AĞ_ARABİRİM} -j MASQUERADE
PostDown = ufw route delete allow in on wg0 out on {AĞ_ARABİRİM}
PostDown = iptables -t nat -D POSTROUTING -o {AĞ_ARABİRİM} -j MASQUERADE
PostDown = ip6tables -t nat -D POSTROUTING -o {AĞ_ARABİRİM} -j MASQUERADE
Replace SERVER_VPN_IP, SUBNET, SERVER_PORT, SERVER_PRIVATE_KEY and SERVER_NIC with your own values (delete curly braces):
- SUNUCU_VPN_IP: Sunucunun sanal ağdaki IP adresi
- ALT_AĞ_EKİ: Sanal ağın, alt ağ ön eki
- SUNUCU_PORT: WireGuard’ın dinleyeceği port numarası. 51820 genellikle varsayılan olarak kullanılır fakat ekstra güvenlik için boştaki başka bir portun kullanılması tavsiye edilir.
- SUNUCU_GİZLİ_ANAHTAR: “
/etc/wireguard/server_private.key” dosyasına yazdığımız gizli anahtar - AĞ_ARABİRİM: Statik, genel IP’ye sahip ağ arabirim denetleyicisi. Bulmak için “
ip address” komutundan faydalanabilirsiniz.
Yapılandırma dosyasının, dosya izinlerini değiştirin (gizli anahtarı içeriyor):
~$ chmod 600 /etc/wireguard/wg0.conf
ufw’yi (güvenlik duvarı) yapılandırın ve aktif hale getirin
Aşağıdaki komutları çalıştırın:
~$ ufw default deny incoming # Tüm gelen trafiği reddet
~$ ufw default allow outgoing # Tüm giden trafiğe izin ver
~$ ufw allow {WIREGUARD_PORT}/udp # WIREGUARD_PORT'a gelen UDP paketlerine izin ver
~$ ufw allow {SSH_PORT}/tcp # SSH_PORT'a gelen TCP paketlerine izin ver
~$ ufw enable # Güvenlik duvarını aktif hale getir
SSH_PORT ve WIREGUARD_PORT (yapılandırma dosyasındaki gibi) değerlerini, kendi sunucunuza göre ayarlayın (süslü parantezleri silin).
Bu yazı, SSH ve WireGuard harici portları dinleyen servisin olmadığı düşünülerek yazılmıştır. Eğer bazı belirli portları dinlemesi gereken (örn. web servisleri: 80/443) servisleriniz varsa, onlara da güvenlik duvarında izin verin.
İstemci tarafında kurulum
wireguard paketinin istemciye kurulumu
wireguard paketini dağıtımınızın depolarından indirip kurun.
- Fedora/RHEL tabanlı dağıtımlar için:
~$ dnf install wireguard
- Debian tabanlı dağıtımlar için:
~$ apt install wireguard
İstemci anahtarlarının ve yapılandırma dosyasının oluşturulması
İstemci için açık ve gizli anahtarları oluşturun ve anahtarların dosya izinlerini değiştirin (sunucu kısmında yapıldığı gibi):
~$ mkdir /etc/wireguard && cd /etc/wireguard
~$ wg genkey | tee /etc/wireguard/client_private.key
~$ cat /etc/wireguard/client_private.key | wg pubkey | tee /etc/wireguard/client_public.key
~$ chmod 600 /etc/wireguard/client_private.key
“/etc/wireguard/wg-client0.conf” yolunda yapılandırma dosyasını oluşturun:
[Interface]
Address = {İSTEMCİ_VPN_IP}/{ALT_AĞ_EKİ} #Örneğin: 130.10.0.2/24
PrivateKey = {İSTEMCİ_GİZLİ_ANAHTAR}
[Peer]
PublicKey = {SUNUCU_AÇIK_ANAHTAR}
AllowedIPs = {AĞ_ADRESİ}/{ALT_AĞ_EKİ} #Örneğin: 130.10.0.0/24
Endpoint = {SUNUCU_AÇIK_IP}:{SUNUCU_PORT}
PersistentKeepalive = 25
Yapılandırma dosyalarının bulunduğu klasör izinlerini, sadece yöneticinin erişebileceği şekilde değiştirin (rwx):
~$ chmod 700 /etc/wireguard
İstemciyi VPN sunucu yapılandırmasına ekleme
Aşağıdaki ayarları eklemek istediğiniz her istemci için ekleyin (örn. ev sunucusu, dizüstü bilgisayar vb.):
[Peer]
PublicKey = {İSTEMCİ_AÇIK_ANAHTAR}
AllowedIPs = {İSTEMCİ_VPN_IP}/{İZİN_VERİLEN_ALT_AĞ} #Örneğin: 130.10.0.2/32
WireGuard Systemd servisinin aktivasyonu ve başlatılması
Sunucu tarafında:
~$ systemctl enable wg-quick@wg0
~$ systemctl restart wg-quick@wg0
İstemcilerde:
~$ systemctl enable wg-quick@wg-client0
~$ systemctl restart wg-quick@wg-client0
Bağlantı testi
wg showkomutu ile hem sunucu hem de istemci tarafında bağlantıların durumu kontrol edilebilir:
Sunucuda:
systemctl status wg-quick@wg0.serviceping {İSTEMCİ_VPN_IP}
İstemcilerde:
systemctl status wg-quick@wg-client0.serviceping {SUNUCU_VPN_IP}

