Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
Site-to-site VPN, iki ayrı ağdaki (örneğin iki veri merkezi veya ofis ile veri merkezi) cihazların birbirini özel IP adresleriyle görmesini sağlar. WireGuard bu iş için sade yapısı, küçük yapılandırma dosyaları ve yüksek performansıyla yaygın bir tercihtir. Bu rehberde iki Linux ağ geçidi arasında WireGuard site-to-site VPN kuracağız: anahtar üretimi, iki tarafta yapılandırma, IP yönlendirme, güvenlik duvarı ve doğrulama.
Rehber, birden fazla lokasyonu birbirine bağlayan hosting ve sistem yöneticilerine hitap eder. Uygulama yaklaşık 40-60 dakika sürer. Örneklerde A sitesi 192.168.10.0/24, B sitesi 192.168.20.0/24 ağına sahiptir; tünel adresleri ise 10.10.0.1 ve 10.10.0.2 olarak seçilmiştir. Kendi adres planınıza göre değiştirin ve iki sitenin ağlarının çakışmadığından emin olun.
Gereksinimler
- Her sitede ağ geçidi görevi yapacak bir Linux sunucu (Debian, Ubuntu, AlmaLinux veya Rocky)
- Ağ geçitlerinden en az birinin internetten erişilebilir, sabit bir genel IP adresi veya alan adı
- İki sitenin birbiriyle çakışmayan iç ağ aralıkları
- Her iki uca sudo erişimi ve UDP 51820 (veya seçtiğiniz port) trafiğine izin verebilme
- Sitelerdeki cihazlarda ağ geçidi veya statik rota ekleyebilme yetkisi
Adım adım WireGuard site-to-site VPN kurulumu
1. WireGuard’ı iki uca da kurun
# Debian/Ubuntu
sudo apt update
sudo apt install -y wireguard
# AlmaLinux/Rocky
sudo dnf install -y wireguard-toolsRHEL tabanlı sistemlerde çekirdek modülü sürüme göre dağıtımda gelebilir ya da ek paket gerekebilir; paket bulunamazsa dağıtımınızın belgesine bakın.
2. Her uçta anahtar çifti üretin
Özel anahtar yalnızca üretildiği makinede kalmalı, hiçbir yere gönderilmemelidir. Yalnızca genel anahtarları karşılıklı paylaşacaksınız.
sudo sh -c 'umask 077; mkdir -p /etc/wireguard; wg genkey | tee /etc/wireguard/ozel.key | wg pubkey > /etc/wireguard/genel.key'
sudo cat /etc/wireguard/genel.keyBu komutu hem A hem B ağ geçidinde çalıştırın ve yalnızca genel.key çıktısını diğer tarafa iletin.
3. A sitesi yapılandırması
Dosyayı sudoedit /etc/wireguard/wg0.conf ile açın ve özel anahtarı sudo cat /etc/wireguard/ozel.key çıktısından kopyalayarak yerleştirin. Parolayı veya anahtarı komut satırında kullanmaktan kaçının.
[Interface]
Address = 10.10.0.1/30
ListenPort = 51820
PrivateKey = <A_OZEL_ANAHTAR>
[Peer]
PublicKey = <B_GENEL_ANAHTAR>
Endpoint = <B_GENEL_IP_VEYA_ALAN_ADI>:51820
AllowedIPs = 10.10.0.2/32, 192.168.20.0/24
PersistentKeepalive = 254. B sitesi yapılandırması
[Interface]
Address = 10.10.0.2/30
ListenPort = 51820
PrivateKey = <B_OZEL_ANAHTAR>
[Peer]
PublicKey = <A_GENEL_ANAHTAR>
Endpoint = <A_GENEL_IP_VEYA_ALAN_ADI>:51820
AllowedIPs = 10.10.0.1/32, 192.168.10.0/24
PersistentKeepalive = 25AllowedIPs, WireGuard’da hem yönlendirme hem de erişim denetimi işlevi görür: o eşten yalnızca bu aralıklardan gelen paketler kabul edilir ve bu aralıklara giden paketler o eşe yollanır. Yapılandırma dosyasının iznini kısıtlayın:
sudo chmod 600 /etc/wireguard/wg0.confYalnızca bir uç sabit IP’ye sahipse, o uçtaki [Peer] bölümünden Endpoint satırını kaldırabilirsiniz. Bu durumda bağlantıyı NAT arkasındaki uç başlatır; bu yüzden Endpoint ve PersistentKeepalive NAT arkasındaki uçta kalmalıdır.
5. IP yönlendirmeyi etkinleştirin
Ağ geçidi makineleri iç ağdan gelen paketleri tünele iletecek, bu yüzden IP yönlendirme açık olmalıdır.
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard-forward.conf
sudo sysctl --system6. Güvenlik duvarını yapılandırın
Her iki uçta UDP 51820 portuna dışarıdan erişim izni verin ve tünel trafiğinin iç ağ ile arasında akmasına izin verin. Erişimi gerekli ağlarla sınırlamak, tünelin her şeye açık kapı olmasını önler.
# ufw (Debian/Ubuntu, kuruluysa)
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on <IC_ARABIRIM>
sudo ufw route allow in on <IC_ARABIRIM> out on wg0
# firewalld (AlmaLinux/Rocky)
sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --permanent --zone=internal --change-interface=wg0
sudo firewall-cmd --permanent --zone=internal --change-interface=<IC_ARABIRIM>
sudo firewall-cmd --permanent --zone=internal --add-forward
sudo firewall-cmd --reload
sudo firewall-cmd --get-active-zonesufw route kurallarını önce ufw’nin etkin olduğundan emin olarak uygulayın. firewalld’de wg0’ı trusted bölgesine koymak tüneli her şeye açar ve iç arabirim başka bölgedeyse iç ağdan tünele yönlendirmeyi yine engeller; bu yüzden iki arabirimi aynı bölgeye alıp bölge içi yönlendirmeyi (--add-forward, firewalld 0.9 ve sonrası) açtık. Genel arabirim iç arabirimle aynıysa bu adımı resmî belgeye göre uyarlayın. SSH erişimi için açık ikinci bir oturum bulundurun.
7. Tüneli başlatın ve açılışta etkinleştirin
sudo systemctl enable --now wg-quick@wg08. Sitelerdeki cihazlara rota ekleyin
İç ağdaki cihazların diğer sitenin ağına giden paketleri ağ geçidine yollaması gerekir. En kolay yol, birincil yönlendiricide statik rota tanımlamaktır; örneğin B sitesindeki bir Linux istemci için:
sudo ip route add 192.168.10.0/24 via <B_AG_GECIDI_IC_IP>Bu komut kalıcı değildir; kalıcı yapmak için dağıtımınızın ağ yapılandırma aracını kullanın ya da rotayı sitenin yönlendiricisine ekleyin.
Doğrulama
Tünelin kurulduğunu ve trafiğin aktığını şu komutlarla kanıtlayın:
sudo wg show
ping -c 4 10.10.0.2
ping -c 4 192.168.20.<CIHAZ>Beklenen sonuç: wg show çıktısında eşin altında latest handshake satırı (birkaç dakikadan yeni) ve artan transfer değerleri. Tünel IP’sine ping başarılıysa şifreli bağlantı kurulmuştur; uzak sitedeki bir cihaza ping başarılıysa yönlendirme ve güvenlik duvarı da doğrudur.
Sık karşılaşılan sorunlar
- Handshake görünmüyor: UDP portu arada bir güvenlik duvarında kapalıdır, genel anahtarlar yanlış yerleştirilmiştir ya da Endpoint hatalıdır. Her iki yanda
sudo wg showçıktısını karşılaştırın. - Tünel IP’sine ping var ama uzak LAN’a yok:
AllowedIPsiçinde uzak ağ eksiktir veya ip_forward kapalıdır. - Tek yönlü iletişim: Uzak cihazlarda dönüş rotası yoktur; cihazın varsayılan ağ geçidi VPN ağ geçidi değilse statik rota ekleyin.
- Büyük dosya aktarımları takılıyor: MTU sorunu olabilir. Yapılandırmaya
MTU = 1380gibi daha düşük bir değer eklemeyi deneyin. - Servis açılışta başlamıyor: Alan adı çözümlemesi ağ hazır olmadan yapılıyor olabilir; sabit IP kullanın veya ağın hazır olmasını bekleyen bir bağımlılık ekleyin.
Güvenlik ve bakım notları
- Özel anahtarları yalnızca kendi makinelerinde
600izniyle tutun; yedeklerini şifreli ve ayrı bir yerde saklayın. AllowedIPsaralıklarını mümkün olan en dar kapsamda tutun ve güvenlik duvarında tünel trafiğini yalnızca gerekli servislere açın.- Anahtarları belirli aralıklarla veya yönetici değişiminde yenileyin; yeni anahtarı iki uçta eşzamanlı güncelleyin.
- Her iki uçta
wg showçıktısını ve handshake zamanını izleme sistemine bağlayın. - Tünel üzerinden geçen trafik de güvenilir sayılmamalıdır; iç ağdaki servislerde kimlik doğrulamayı sürdürün.
- Yapılandırma değişikliklerinden önce dosyanın bir kopyasını alın.
Sık sorulan sorular
Her iki ucun da sabit IP adresi olması şart mı?
Hayır. En az birinin erişilebilir olması yeterlidir. Diğer taraf NAT arkasındaysa PersistentKeepalive ile bağlantıyı kendisi başlatır ve açık tutar.
Üçüncü bir site eklemek için ne yapmalıyım?
Yeni siteye yeni bir anahtar çifti ve tünel adresi verin, diğer uçlara yeni bir [Peer] bölümü ekleyin. Sitelerin tamamen birbirini görmesi gerekiyorsa her çift arasında bağlantı veya merkezden yönlendirme (hub-and-spoke) düzeni kurabilirsiniz.
WireGuard yalnızca IPv4 mü destekler?
Hayır, IPv6 da desteklenir. Address ve AllowedIPs alanlarına IPv6 aralıkları ekleyebilirsiniz; ayrıca IPv6 yönlendirmeyi etkinleştirmeyi unutmayın.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- HAProxy ile TCP yük dengeleme ve sağlık kontrolleriHAProxy ile TCP yük dengeleme kurun: frontend ve backend tanımı, sağlık kontrolleri, istatistik sayfası, yapılandırma doğrulama ve arka uç sunucu devre dışı kalma testi.
- SSH tüneli ve SOCKS proxy (yerel, uzak ve dinamik yönlendirme)SSH tüneli ile yerel (-L), uzak (-R) ve dinamik (-D) port yönlendirmeyi öğrenin; SOCKS proxy kurun, kalıcı tünel için systemd kullanın ve sunucuda tünel yetkilerini kısıtlayın.
- VPN kullanıcı yönetimi ve yapılandırma dağıtımı (ekleme, kaldırma, anahtar yenileme)WireGuard VPN sunucusunda kullanıcı ekleme, kaldırma ve anahtar yenilemeyi düzenli bir süreçle yönetin; istemci yapılandırmalarını güvenli biçimde dağıtın ve kayıt tutun.
- VPN’de DNS sızıntısı testi ve önlemiVPN kullanırken DNS isteklerinin tünel dışına sızıp sızmadığını test edin; WireGuard, OpenVPN ve Windows için ayarlarla kendi DNS çözümleyicinizi kurarak önlem alın.