Bir sunucuya uzaktan bağlanmaya, ev ağınızda bir oyun sunucusu barındırmaya veya bir cihaza port yönlendirme ile erişmeye çalıştığınızda, karşınıza çoğu zaman aynı soru çıkar: bu IP adresi gerçekten benim ağıma mı ait, yoksa yönlendiricinin arkasında saklı bir özel adres mi? Bu sorunun cevabı, IPv4 adres uzayının nasıl bölündüğünü ve NAT'ın (Network Address Translation) neyi çözüp neyi çözemediğini anlamaktan geçiyor.
Genel IP ile özel IP arasındaki fark
Bir genel (public) IP adresi, internet üzerinde doğrudan yönlendirilebilen, dünyanın herhangi bir yerinden erişilebilecek şekilde küresel yönlendirme tablolarında yer alan bir adrestir. Buna karşılık bir özel (private) IP adresi, yalnızca bir yerel ağ içinde anlamlıdır; internet omurgasındaki hiçbir router bu adresleri yönlendirmez. Aynı 192.168.1.5 adresi aynı anda binlerce farklı ev ağında kullanılabilir, çünkü bu adres yalnızca kendi ağının içinde geçerlidir.
Bu ayrımın nedeni tarihsel: IPv4, toplam yaklaşık 4,3 milyar adrese sahiptir ve internete bağlı her cihaza kalıcı bir genel adres ayırmak sürdürülebilir değildir. Bunun yerine, bir yerel ağdaki tüm cihazlar özel bir aralıktan adres alır ve internete çıkarken tek bir genel IP'nin arkasında NAT ile birleştirilir.
RFC 1918: Üç özel IPv4 aralığı
RFC 1918, internete doğrudan yönlendirilmeyecek şekilde ayrılmış üç özel IPv4 aralığı tanımlar. Ev/ofis yönlendiricileri ve kurumsal iç ağlar bu aralıkları kullanır; bu adresler internete çıkarken NAT ile bir genel IP'ye çevrilir.
| Aralık (CIDR) | Adres sayısı | Tipik kullanım |
|---|---|---|
10.0.0.0/8 | ~16,7 milyon | Büyük kurumsal ağlar, veri merkezleri, VPN alt ağları |
172.16.0.0/12 | ~1 milyon | Orta ölçekli kurumsal ağlar, konteyner/sanal ağ platformları |
192.168.0.0/16 | ~65 bin | Ev yönlendiricileri, küçük ofis ağları |
Bunların dışında ayrılmış başka özel amaçlı aralıklar da vardır: 127.0.0.0/8 loopback'tir (kendi makinenize referans; 127.0.0.1 = "localhost"), 169.254.0.0/16 ise link-local'dır — DHCP sunucusuna ulaşılamadığında işletim sisteminin otomatik atadığı APIPA adresidir. Bu iki aralık RFC 1918'in parçası değildir ama aynı şekilde internette yönlendirilmez.
NAT özel adresi genel adrese nasıl çevirir
NAT (Network Address Translation), yönlendiricinizin iç ağdaki özel adresle dış dünyadaki genel adresi eşleştirmesini sağlayan mekanizmadır. Ev ağınızdaki bir cihaz (örneğin 192.168.1.10) bir web sitesine istek gönderdiğinde, yönlendirici bu paketin kaynak adresini kendi genel IP'siyle değiştirir ve hangi iç cihazın hangi bağlantıya ait olduğunu bir çeviri tablosunda tutar. Sunucudan gelen cevap paketi bu genel IP'ye ulaştığında, yönlendirici tabloya bakarak paketi doğru iç cihaza yönlendirir.
Bu mekanizma giden bağlantılar için sorunsuz çalışır, çünkü çeviri tablosu bağlantı iç ağdan başlatıldığında otomatik oluşur. Ancak dışarıdan içeri, yani bir istemcinin sizin ev ağınızdaki bir cihaza bağlanmaya çalıştığı durumda (bir oyun sunucusu, bir web sunucusu, bir uzak masaüstü servisi barındırmak gibi), yönlendiricinin bu isteği hangi iç cihaza yönlendireceğini bilmesi için elle bir kural tanımlanması gerekir. Buna port yönlendirme (port forwarding) denir ve yalnızca yönlendiricinizin kendisi gerçek bir genel IP'ye sahipse işe yarar.
CGNAT nedir ve neden bir sorun yaratır
IPv4 adres tükenmesi ISS'leri (internet servis sağlayıcılarını) her müşteriye ayrı bir genel IP verememe noktasına getirdi. Çözüm olarak birçok ISS, CGNAT (Carrier-Grade NAT, RFC 6598) uygulamaya başladı: yüzlerce, hatta binlerce müşteri tek bir genel IP'nin arkasında paylaştırılır. Bunun için ayrılmış özel aralık 100.64.0.0/10'dur — RFC 1918'deki üç aralıktan ayrı, "taşıyıcı sınıfı" (carrier-grade) bir özel bloktur.
CGNAT arkasındaki bir kullanıcının yönlendiricisi genel bir IP değil, bu 100.64.0.0/10 aralığından bir adres alır; gerçek genel IP ISS'nin kendi ekipmanında, birden fazla müşteri arasında paylaşılan bir NAT katmanının üzerindedir. Sonuç olarak ev kullanıcısının yönlendiricisinde port yönlendirme ayarlasanız bile, bu ayar yalnızca ISS'nin CGNAT cihazına kadar geçerlidir — ISS'nin ötesinde, dışarıdan gelen hiçbir bağlantı sizin yönlendiricinize ulaşamaz. Bu durum ev sunucusu barındırma, bazı oyunların doğrudan bağlantı modları, kamera/DVR sistemlerine uzaktan erişim ve bazı VPN/uzak masaüstü senaryolarını doğrudan etkiler.
CGNAT arkasında çalışma yolları
- ISS'den statik veya gerçek genel IP talep etmek (genellikle iş paketlerinde veya ek ücretli seçenek olarak sunulur)
- Genel IP'ye sahip bir VPS üzerinden ters tünel (reverse tunnel) veya VPN kurmak
- WireGuard/OpenVPN gibi bir VPN ile, genel IP'si olan bir sunucuyu giriş noktası yaparak trafiği ona yönlendirmek
- Bulut tabanlı tünel servisleri kullanmak (örneğin ters proxy sağlayan servisler)
Sık yapılan hatalar
- 100.64.0.0/10 aralığını genel IP sanmak. Bu aralık "görünüşte" 192.168 veya 10. ile başlamadığı için bazı kullanıcılar bunu genel bir adres zannediyor; oysa RFC 6598 ile ayrılmış özel bir CGNAT bloğudur.
- "Public görünen" bir IP'nin her zaman erişilebilir olduğunu varsaymak. Yönlendiricinizin arayüzünde gördüğünüz IP genel bir adres olsa bile, ISS seviyesinde ek bir NAT katmanı, güvenlik duvarı veya CGNAT olabilir; bu adresin gerçekten dışarıdan erişilebilir olduğunu doğrulamadan port yönlendirme kurmak zaman kaybettirir.
- Port yönlendirme çalışmıyor diye modemi/yönlendiriciyi suçlamak. Sorun çoğu zaman yönlendirici ayarında değil, ISS'nin CGNAT uyguluyor olmasındadır; bu durumda yönlendirici tarafında yapılacak hiçbir ayar sorunu çözmez.
127.0.0.0/8ve169.254.0.0/16gibi aralıkları RFC 1918'in bir parçası sanmak. Bunlar ayrı amaçlarla ayrılmış (loopback ve link-local) farklı bloklardır.
Bir IPv4 adresinin RFC 1918 özel aralık, loopback, link-local, CGNAT veya genel (public) olduğunu anında öğrenin.
Bu tür bir araç, sorgu göndermeden salt bit düzeyinde aralık karşılaştırması yaptığı için, ağınızı yeniden yapılandırmadan önce elinizdeki adresin gerçekte ne olduğunu doğrulamak için güvenilir bir ilk adımdır. Port yönlendirme kurmadan, bir VPN yapılandırmadan ya da bir sunucuyu dışarıya açmadan önce bu kontrolü yapmak, CGNAT kaynaklı sorunlarla saatler kaybetmenizi engeller.