
CGNAT arkasında kendi kendine barındırma: VPS köprüsü ve WireGuard tüneli
IPv4 adres sıkıntısı yüzünden operatörler tek bir genel adresi bütün mahallelere paylaştırıyor ve evdeki port yönlendirme artık işe yaramıyor. Yazarın çözümü: ucuz bir VPS köprüsü ve WireGuard tüneli.
Eskiden evden servis barındırmak için yönlendirici üzerinde bir port açıp dinamik DNS kaydını genel adrese yöneltmek yeterliydi. IPv4 adres sıkıntısı bunu değiştirdi: operatörler artık tek bir genel adresi bütün mahalleler arasında paylaştırıyor ve istekleri kendi ağlarının içindeki ek bir NAT katmanından — carrier-grade NAT (CGNAT) — geçiriyor. Yönlendiricinin adresi özel kalıyor ve dışarı çıkarken çevriliyor; genel adres operatöre ait olduğu için port yönlendirme artık çalışmıyor.
David Álvarez Rosa bir blog yazısında servislerini yine de evde nasıl barındırdığını anlatıyor: hizmetleri İspanya'nın kuzeyinde, annesinin bodrumundaki orta seviye bir makinede çalışıyor ve internete Fransa'daki bir veri merkezinde köprü görevi gören ucuz bir VPS üzerinden açılıyor.
Barındırma sağlayıcısı değil, köprü
İki makine arasındaki bağlantı çift yönlü bir WireGuard tüneli: tüm paketleri tüm portlarda köprüden evdeki makineye ve ters yönde iletiyor. Asıl avantaj, tüneli evdeki makinenin başlatması; bu yüzden evde statik ve özel bir IP gerekmiyor. İspanyol bir operatörden statik adres almak ayda yaklaşık 20 avroya geçerli bir alternatif, köprünün bedeli ise 39 ms ek RTT.
Yapılandırma: DNAT, ayrı yönlendirme tablosu ve gerçek istemci IP'leri
Köprü tarafında wg0 arayüzü 10.0.0.1/24 adresine sahip ve 51820 portunu tek bir eşle — 10.0.0.2/32 — dinliyor. PostUp, iptables üzerinden çekirdek düzeyinde NAT ve yönlendirme kurallarını kuruyor, PostDown ise tünel düştüğünde bunları kaldırıyor. İlk iki kural 2222 (SSH) ve 51820 (tünelin kendisi) portlarını hariç tutuyor, kalanlar tüm trafiği tüm portlarda evdeki makineye yönlendiriyor. Hedef adres yeniden yazılıyor ama kaynak adres yazılmıyor; böylece evdeki makine gerçek istemci IP'lerini görüyor.
Ev tarafında wg0 10.0.0.2/24 adresine ve Table = off ayarına sahip; PostUp, 200 numaralı yönlendirme tablosuna tünel üzerinden varsayılan rotayı ve 10.0.0.2'den gelen trafik için bir ip rule kuralını ekliyor. Böylece yanıtlar köprü üzerinden geri dönüyor, evdeki makinenin kendi trafiği ise ev yönlendiricisinde kalıyor. Bundan sonra ssh.alvarezrosa.com adresine 22 portundan SSH evdeki makineye, 2222 portu ise köprüye düşüyor. Tüneli AllowedIPs 0.0.0.0/0 ve PersistentKeepalive 25 ayakta tutuyor.
Neler bozulabilir
Üç bileşen arızalanabilir. Evdeki makinede bir cron görevi SSH'ın hâlâ yanıt verip vermediğini kontrol ediyor ve vermiyorsa makineyi yeniden başlatıyor. Köprü çökerse yazar yedek bir giriş noktası öneriyor: örneğin doğrudan evdeki makineye bakan bir Cloudflare tüneli ya da Tailscale. Tünelin kısa süreli kopması kendi kendine yeniden el sıkışıyor, daha uzun kesintiler ise önceki iki durumun kapsamına giriyor.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.