Branicki Park

Bulut sunucuda WireGuard kurulumu

2026-01-24

WireGuard 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.

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:

VPN


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.

~$ dnf install wireguard ufw
~$ 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):


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.

~$ dnf install wireguard
~$ 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

Sunucuda:

İstemcilerde:

wireshark capture