IPv4 ve IPv6 farkı ilk bakışta bir adres uzunluğu meselesidir: IPv4 adresleri 32 bit, IPv6 adresleri 128 bittir. Oysa bu tek fark yazım biçimini, adreslerin dağıtımını, NAT'a duyulan ihtiyacı ve en sonunda hangi proxy türünün hangi hedefte çalışacağını değiştirir.
İki sürüm uzun süredir yan yana çalıştığı için biri diğerinin yerini tamamen almış değildir. Bu yazıda iki protokolü adres yapısı, gösterim, adres tükenmesi ve çift yığın açısından karşılaştırıyor, ardından proxy kullanıcısı için en önemli sonucu açıklıyoruz: hedef IPv6 desteklemiyorsa IPv6 çıkışlı bir proxy o hedefe ulaşamaz.
32 bit ile 128 bit: adres uzayı ne kadar büyüdü?
IPv4'te 32 bit, 2^32 = 4.294.967.296 adres demektir; adresin oktet yapısını IPv4 nedir yazısında anlattık. IPv6'da adres 128 bittir ve uzay 2^128 adrese, yani yaklaşık 3,4 × 10^38 adrese çıkar. Somut bir karşılaştırma: tek bir IPv6 /64 alt ağı 2^64 adres içerir ve bu sayı, bütün IPv4 uzayının yaklaşık 4,3 milyar katıdır.
| Özellik | IPv4 | IPv6 |
|---|---|---|
| Adres uzunluğu | 32 bit | 128 bit |
| Adres sayısı | 2^32 = 4.294.967.296 | 2^128, yaklaşık 3,4 × 10^38 |
| Yazım | Dört oktet, noktalı ondalık (203.0.113.42) | Sekiz grup, onaltılık, iki nokta üst üste (2001:db8::1) |
| Ağ ön eki | CIDR öneki (/24) | Aynı mantık (/64) |
| Başlık | 20 ile 60 bayt arasında değişken | Sabit 40 bayt |
| Yayın (broadcast) | Var | Yok, çoklu yayın kullanılır |
| NAT ihtiyacı | Adres kıtlığı nedeniyle yaygın | Adres kıtlığı olmadığı için gerekmez |
| Şartname | RFC 791 | RFC 8200 |
Büyüme yalnızca “daha çok adres” demek değildir. IPv6'da bir yerel ağ alt ağı geleneksel olarak /64'tür: adresin ilk 64 biti ağı, son 64 biti arayüzü tanımlar. Bu yüzden IPv6'da “kaç adres var?” sorusu yerini “kaç alt ağım var?” sorusuna bırakır. Resmî tanımlar IPv4 için RFC 791, IPv6 için RFC 8200 belgelerindedir.
Yazım farkı: noktalı ondalık, onaltılık ve :: kısaltması
IPv4 adresi dört oktetin ondalık yazımıdır. IPv6 adresi ise 16'şar bitlik sekiz grubun onaltılık (0–9 ve a–f) yazımıdır; gruplar iki nokta üst üste ile ayrılır. Tam yazım uzun olduğundan iki kısaltma kuralı vardır: bir gruptaki baştaki sıfırlar atılabilir ve art arda gelen sıfır grupları adres boyunca bir kez :: ile değiştirilebilir.
2001:0db8:0000:0000:0000:0000:0000:0001 tam yazım
2001:db8:0:0:0:0:0:1 baştaki sıfırlar atıldı
2001:db8::1 :: ile kısaltıldı:: adreste yalnızca bir kez kullanılabilir; iki kez kullanılsaydı her birinin kaç sıfır grubunu temsil ettiği anlaşılamazdı. Birden fazla sıfır dizisi varsa en uzunu kısaltılır, uzunluklar eşitse ilki seçilir (RFC 5952). Örneğin 2001:db8:0:0:1:0:0:1 adresi 2001:db8::1:0:0:1 olarak yazılır.
Port yazarken de bir fark vardır. IPv4 adresinde 203.0.113.42:8080 yazarsınız; IPv6 adresinde iki nokta üst üste zaten adresin parçası olduğundan adres köşeli parantez içine alınır: [2001:db8::1]:8080. Proxy adresi IPv6 olduğunda bu biçimi unutmak, istemcinin adresi yanlış okumasına yol açabilir.
http://KULLANICI:PAROLA@203.0.113.42:PORT
http://KULLANICI:PAROLA@[2001:db8::1]:PORTAdres tükenmesi ve NAT: IPv4 neden hâlâ ayakta?
IANA'nın merkezi boş IPv4 havuzu 2011'de tükendi. Bundan sonra IPv4 adresleri sınırlı bir kaynak olarak ele alınır oldu ve bölgesel internet kayıtları ellerindeki bloklarla çalıştı. Buna rağmen IPv4 çökmedi, çünkü ihtiyacı iki mekanizma erteledi: CIDR ile daha tutumlu dağıtım ve NAT.
NAT (Network Address Translation), bir ağdaki birçok cihazın tek bir genel adresin arkasında özel adreslerle çalışmasını sağlar. Çoğu evde her cihazın 192.168.x.x gibi özel bir adresi vardır; internete çıkarken yönlendirici bunları tek genel adrese çevirir ve dönen yanıtı doğru cihaza iletir. Bazı internet servis sağlayıcıları aynı yöntemi bir adım öteye taşıyıp aynı genel adresi birçok aboneye paylaştırır ve bunun için 100.64.0.0/10 aralığını kullanır (CGNAT).
Bu yöntem adres kıtlığını yönetilebilir kıldı ama bir bedeli vardır: dışarıdan NAT arkasındaki bir cihaza doğrudan bağlantı kurmak için port yönlendirme gibi ek yapılandırma gerekir. Özel ve genel adres ayrımının ayrıntıları özel, genel ve CGNAT IP adresleri yazısında.
IPv6 bu sorunu adres bolluğuyla çözer: her cihaz genel olarak yönlendirilebilir bir adres alabilir ve adres paylaşımı için NAT gerekmez. NAT'ın olmaması cihazların korumasız olduğu anlamına gelmez; koruma her iki sürümde de güvenlik duvarı kurallarından gelir.
Çift yığın: iki sürüm yan yana nasıl çalışır?
Geçiş döneminde ağların ve sunucuların çoğu iki sürümü birden konuşur; buna çift yığın (dual stack) denir. Alan adı sistemi de buna uyum sağlar: bir alan adının IPv4 adresi A kaydında, IPv6 adresi AAAA kaydında tutulur. Her iki kaydı da yayımlayan site hem IPv4 hem IPv6 ile erişilebilir; yalnızca A kaydı olan siteye ise IPv6 çıkışıyla doğrudan ulaşılamaz.
İstemci tarafında tarayıcılar ve işletim sistemleri genellikle önce IPv6'yı dener, bağlantı kısa sürede kurulmazsa IPv4'e geçer; bu davranışa “Happy Eyeballs” denir. Yalnızca IPv6 çalışan ağlar ise IPv4 hedeflere NAT64 gibi çeviri mekanizmalarıyla ulaşabilir.
Bir hedefin IPv6 desteğini aşağıdaki komutlarla denetleyebilirsiniz. Aynı sorguyu tarayıcıda DNS sorgulama aracıyla da yapabilirsiniz; araç A ve AAAA dahil birçok kayıt türünü destekler.
# Hedefin IPv6 adresi (AAAA kaydı) var mı? Boş çıktı: yok.
dig +short AAAA ALAN_ADI
# Hedefe yalnızca IPv6 üzerinden bağlanmayı dene
curl -6 -I https://ALAN_ADI/
# Aynı hedefe yalnızca IPv4 üzerinden bağlan
curl -4 -I https://ALAN_ADI/Proxy açısından sonuç: hedef IPv6 desteklemiyorsa
Bir proxy, hedefe kendi çıkış adresinin sürümüyle bağlanır. IPv6 çıkışlı bir proxy yalnızca IPv6 üzerinden ulaşılabilen hedeflerle konuşabilir. Hedef site yalnızca IPv4 yayını yapıyorsa, yani yalnızca A kaydı varsa, IPv6 proxy ile o siteye ulaşılamaz; bu bir yapılandırma hatası değil, protokollerin doğasıdır.
Genel olarak istemci ile proxy arasındaki bağlantının sürümü, proxy ile hedef arasındaki bağlantının sürümünden bağımsızdır. Belirleyici olan, proxy'nin hedefe çıkış sürümüdür. Çıkış adresinizin sürümünü IP Adresim ile, adresin hangi ağa kayıtlı olduğunu IPv4 / IPv6 bilgisi aracıyla görebilirsiniz; adres noktalı ondalık ise IPv4, iki nokta üst üste içeriyorsa IPv6'dır.
Mağazanın ürün sayfasında belirtildiği üzere IPv6 proxy paketleri /64 alt ağlardan IPv6 adresleri olarak listelenir (100, 500, 2.500 ve 15.000 adetlik aylık paketler) ve protokol yalnızca HTTP(S) olarak belirtilmiştir. SOCKS5 gerekiyorsa bu protokolü sunan IPv4 ürünler, örneğin IPv4 datacenter proxy paketleri daha uygundur.
Hangi durumda hangi sürüm?
| Durum | Uygun çıkış | Not |
|---|---|---|
Hedef yalnızca A kaydı yayımlıyor | IPv4 | IPv6 çıkışıyla doğrudan ulaşılamaz. |
Hedef hem A hem AAAA yayımlıyor | IPv4 ya da IPv6 | Hangisinin kullanılacağı çıkış adresinin sürümüne bağlıdır. |
Hedef yalnızca AAAA yayımlıyor | IPv6 | IPv4 çıkışı bu hedefe doğrudan ulaşamaz. |
| Protokol olarak SOCKS5 gerekiyor | IPv4 ürünler | IPv6 proxy paketlerinde protokol yalnızca HTTP(S) olarak belirtilmiştir. |
Kısacası seçim, hedefin IPv6 desteğine bağlıdır. IPv6 desteği olmayan siteler hâlâ vardır; bu yüzden genel amaçlı işlerde IPv4 çıkışı daha öngörülebilir, IPv6 paketleri ise hedefin IPv6 desteği doğrulandığında anlamlıdır. İki seçeneğe de IPv6 proxy paketleri ve IPv4 datacenter proxy paketleri üzerinden bakabilirsiniz.