NAT işleminde stateful yöntem, bağlantıya ait adres eşlemelerini ve gerektiğinde port eşlemelerini kaydeder. Stateless yöntem ise her paketi önceden tanımlı adresleme ve başlık dönüştürme kurallarıyla işler; bağlantı başına çeviri durumu tutmaz. Port, aynı IP adresindeki farklı iletişim uçlarını ayıran numaradır.

NAT64, IPv6 ile IPv4 arasında paket çevirir. SIIT, bağlantı durumu tutmayan bir IPv4/IPv6 çeviri algoritmasıdır; 464XLAT ise stateless ve stateful çeviriciyi iki ayrı aşamada kullanır. NPTv6, iki IPv6 adres bloğu arasında adres çevirir ve IPv4 ile iletişim sağlamaz. Bu yöntemler durum tutma, IPv4 adresi paylaşımı ve uygulama uyumluluğu bakımından farklı amaçlara hizmet eder.

Stateful Çeviri Nasıl Çalışır?

Stateful çeviricide dinamik eşleme genellikle bağlantıyı başlatan ilk paket geldiğinde oluşturulur; bazı eşlemeler önceden statik olarak da tanımlanabilir. Bu kayıt, örneğin bir IPv6 kaynak adresi ve portunun hangi IPv4 adresi ve portuna çevrildiğini gösterir. Sonraki paketler ve dönüş trafiği aynı kayda göre işlenir.

Bu yaklaşımın en önemli sonucu adres paylaşımıdır. Çevirici farklı kaynak portları kullanarak çok sayıda istemcinin daha küçük bir IPv4 adres havuzundan internete çıkmasını sağlar. Stateful NAT64 bu modeli IPv6 istemcileri ile IPv4 sunucuları arasındaki iletişime uygular.

Durum tablosu ağ işletiminde ek bir bağımlılık da oluşturur. Dönüş paketlerinin ilgili eşlemeyi bilen çeviriciye ulaşması gerekir; oturum zaman aşımı, tablo kapasitesi ve yedeklilik tasarımı bağlantı sürekliliğini etkileyebilir. Yük dengeleme yapılacaksa durumun cihazlar arasında paylaşılması veya aynı akışın aynı çeviriciye yönlendirilmesi gerekir.

Stateless Çeviri Nasıl Çalışır?

Stateless çeviride eşleme, bağlantı kurulduğunda oluşturulan geçici bir tabloya değil, önceden tanımlanmış algoritmik adres ilişkisine dayanır. Çevirici her paketin IPv4 veya IPv6 başlığını inceler, önceden tanımlı prefix kurallarını ve adres eşlemelerini uygular, gerekli başlık alanlarını ve denetim toplamlarını dönüştürür.

Bir paketin nasıl çevrileceği önceki pakete bağlı olmadığı için aynı kuralları kullanan farklı çeviriciler trafiği işleyebilir. Bu özellik, oturum durumunu eşitleme ihtiyacını azaltır. Buna karşılık stateless çeviri modeli genellikle çevrilecek uçlar arasında hesaplanabilir ve yönlendirilebilir bir adres eşlemesi gerektirir; çok sayıda istemcinin tek IPv4 adresini portlar üzerinden paylaşması bu modelin temel işlevi değildir.

Stateless çeviri ifadesi, güvenlik duvarı veya yönlendirme durumunun hiç bulunmadığı anlamına gelmez. Ağda ayrı güvenlik politikaları, komşu kayıtları ve yönlendirme tabloları bulunabilir; yalnız çeviri işleminin kendisi bağlantı başına eşleme saklamaz.

Stateful NAT64 ile DNS64 Aynı Görevi Yapmaz

Stateful NAT64, IPv6 paketlerini IPv4 paketlerine ve dönüş yönünde IPv4 paketlerini IPv6 paketlerine çeviren ağ bileşenidir. IPv6 istemcisi, hedef IPv4 adresini belirli bir IPv6 prefix’i içinde kodlanmış biçimde kullanır; NAT64 bu hedefi çıkarır, kaynak tarafında bir IPv4 adresi ve port eşlemesi oluşturur ve trafiği IPv4 ağına iletir.

DNS64 bir paket çeviricisi değildir. DNS yanıtında hedefe ait IPv6 adresi taşıyan uygun bir AAAA kaydı bulunmadığında, IPv4 adresi taşıyan A kaydını NAT64 prefix’iyle birleştirerek sentetik bir AAAA kaydı üretebilir. Paketleri taşıyan ve bağlantı durumunu tutan bileşen NAT64’tür.

DNS64 kullanan ve IPv6 bağlantısı kurabilen uygulamalar, alan adıyla eriştikleri IPv4 hedefi çoğu zaman ek işlem yapmadan bulabilir. Ancak uygulama doğrudan IPv4 adresi kullanıyorsa, kendi içinde IPv4 adresi taşıyorsa veya DNS64 sonucunu kullanmıyorsa yalnız NAT64 ve DNS64 bileşimi yeterli kalmayabilir.

Stateful NAT64 çoğunlukla IPv6 istemcisinin başlattığı bağlantılarda kullanılır. IPv4 tarafındaki bir uçtan başlatılan bağlantı için statik eşleme veya desteklenen başka bir bağlantı kurma yöntemi, erişim izni ve uygun yönlendirme gerekebilir.

SIIT ile Stateless Paket Çevirisi

SIIT (Stateless IP/ICMP Translation), IPv4 ile IPv6 arasında IP başlıklarını ve ICMP adlı protokolün hata ve kontrol mesajlarını bağlantı durumu tutmadan çeviren algoritmadır. Kaynak ve hedef adresleri belirlenmiş kurallarla eşlenir; çevirici bağlantı başına NAT tablosu oluşturmaz. TCP ve UDP gibi üst katmanların verileri genel olarak taşınırken protokol başlıklarındaki denetim toplamları yeni IP başlığına göre güncellenir.

SIIT'te aynı kurallar aynı adres eşlemesini üretir ve çeviri durumu merkezi bir tabloda tutulmaz. Fakat bu yapı IPv4 adresi kıtlığını stateful NAT64 gibi çözmez; her çevrilebilir uç için uygun adres planı ve yönlendirme gerekir. Ayrıca paket yükü içinde yazılı IPv4 adreslerine bağımlı uygulamalar, yalnız IP başlığının çevrilmesiyle otomatik olarak uyumlu hale gelmez.

SIIT, DNS kaydı üretmez ve uygulama katmanı geçidi görevi görmez. Yalnız kurallarla belirlenen IPv4 ve IPv6 gösterimleri arasında paket başlığını dönüştürür.

464XLAT Neden İki Çeviriciyi Birlikte Kullanır?

464XLAT, yalnız IPv6 erişimi olan bir ağda IPv4 kullanan uygulamaların IPv4 hedeflerle iletişim kurması için iki aşamalı çeviri kullanır. Uygulama ve hedef IPv6 ile iletişim kurabiliyorsa bu çeviri zincirine gerek kalmadan doğrudan IPv6 bağlantısı kurulabilir. CLAT (Customer-side Translator), uygulamadan gelen IPv4 paketini durum bilgisi olmadan IPv6 paketine çevirir. İnternet servis sağlayıcısının ağındaki PLAT (Provider-side Translator) ise bu IPv6 paketini stateful NAT64 işlemiyle IPv4 hedefine iletir.

CLAT sayesinde uygulama doğrudan bir IPv4 adresine bağlansa bile paket önce IPv6 erişim ağına taşınabilir. Bu, yalnız DNS64'e dayanan NAT64 kullanımına göre önemli bir uyumluluk farkıdır; çünkü uygulamanın sentetik AAAA kaydı istemesi zorunlu değildir.

PLAT tarafındaki durum tutan eşleme, birçok istemcinin IPv4 adres havuzunu paylaşmasını sağlar. Buna karşılık bağlantının IPv4 tarafındaki dönüş trafiği aynı çeviri durumuna bağlıdır. 464XLAT bu nedenle bütünüyle durum bilgisiz değildir; stateless ve stateful bileşenleri belirli görevler için birlikte kullanır.

464XLAT, IPv4 bağlantısı açan uygulamalara ağ erişimi sunar; ancak uygulama verisinin içine yazılmış IP adreslerini kendiliğinden düzeltmez. Bu adresleri karşı uca bildiren uygulamalarda protokole özgü ek destek gerekebilir.

NPTv6 IPv6 Prefix’lerini Nasıl Dönüştürür?

NPTv6 (IPv6-to-IPv6 Network Prefix Translation), bir IPv6 prefix’ini başka bir IPv6 prefix’ine bağlantı durumu tutmadan dönüştürür. IPv4 ile IPv6 arasında protokol başlığı çevirmediği için NAT64 veya SIIT ile aynı sorunu çözmez. Eşleme algoritmik ve geri çevrilebilir biçimde yapılır; üst katman protokollerinin denetim toplamlarını değiştirmeye gerek kalmaması için adresin çevrilen prefix dışındaki bir bölümünde de ayarlama yapılabilir.

Çeviri bağlantı başına durum tutulmadan algoritmik yapıldığı için port eşlemesi oluşturulmaz. NPTv6, IPv4 adresi paylaşımı sağlamaz ve IPv4'e bağımlı uygulamaları IPv6 üzerinde çalıştırmaz. Birden fazla internet servis sağlayıcısıyla çalışan ağlarda, prefix değişikliklerinde veya iç adres planını dış prefix’ten ayırmak için kullanılabilir.

NPTv6 ayrıca güvenlik duvarının yerine geçmez. Hangi paketlerin kabul veya reddedileceğini güvenlik duvarı politikası belirler; prefix çevirisi yalnız adreslerin nasıl temsil edildiğini değiştirir. NPTv6, RFC 6296'da deneysel bir yöntem olarak tanımlanır.

NAT64, SIIT, 464XLAT ve NPTv6 Karşılaştırması

Aşağıdaki karşılaştırma, mekanizmaları durum tutma, çevrilen adres ailesi, adres paylaşımı ve temel kullanım amacı üzerinden ayırır.

MekanizmaÇeviri durumuAdres aileleriIPv4 adres paylaşımıTrafik yönüKullanım ve uyumluluk odağı
Stateful NAT64Bağlantı durumu ile adres ve port eşlemesi tutarIPv6 ile IPv4 arasındaVarBağlantıyı genellikle IPv6 istemcisi başlatırIPv6 istemcilerinin paylaşılan IPv4 adresleri üzerinden IPv4 hizmetlerine erişmesi
SIITOturum durumu tutmazIPv4 ile IPv6 arasındaYokTanımlı eşleme kurallarıyla iki yönlüdürAlgoritmik IP ve ICMP başlık çevirisi
464XLATCLAT durum tutmaz, PLAT durum tutarUygulamada IPv4, erişim ağında IPv6, hedef ağda IPv4PLAT tarafında varİstemciden dış hedefe ve dönüş yönünde iki aşamalıdırDoğrudan IPv4 kullanan eski uygulamaları da desteklemek
NPTv6Oturum durumu tutmazIPv6 ile IPv6 arasındaYokİki IPv6 prefix’i arasında iki yönlüdürIPv6 prefix’lerini iç ve dış ağ arasında dönüştürmek

Yalnız IPv6 Kullanan Ağdan IPv4 Sunucusuna Trafik Akışı

Örnek bir senaryoda yalnız IPv6 bağlantısı sunan bir ağa bağlı cihazın yalnız IPv4 adresi bulunan bir sunucuya alan adıyla eriştiğini düşünelim. DNS64, sunucunun A kaydındaki IPv4 adresinden sentetik bir AAAA kaydı üretir. Cihaz paketi bu IPv6 hedefe gönderir; stateful NAT64 hedef IPv4 adresini çıkarır, istemci için bir IPv4 adresi ve port eşlemesi kurar ve dönüş paketlerini aynı kayıt üzerinden IPv6'ya çevirir.

Aynı cihazdaki eski bir uygulama alan adı yerine doğrudan IPv4 adresi kullanıyorsa DNS64 devreye giremez. 464XLAT ortamında CLAT, uygulamanın IPv4 paketini yerel olarak IPv6'ya dönüştürür; paket IPv6 erişim ağını geçtikten sonra PLAT tarafından durum bilgisi tutarak yeniden IPv4'e çevrilir. Böylece uygulama IPv4 bağlantısı kullanır; erişim ağı ise IPv6 olarak kalır.

Bu IPv4 hedefe erişim senaryosunda NPTv6 tek başına kullanılamaz; IPv6 paketini IPv4 paketine çevirmez. SIIT ise uygun adres eşlemesi ve yönlendirme varsa paket çevirisini yapabilir, fakat burada anlatılan stateful NAT64 gibi port paylaşımı sağlamaz.

Çeviri Tablosu ve Adres Kurallarıyla Sorun Giderme

Stateful çeviri, durum tablosu için ek bellek ve işlem kapasitesi kullanır ve oturum zaman aşımı kurallarına bağlıdır; stateless çeviri ise bağlantı başına çeviri durumu tutmasa da uygun adres eşlemesi olmadan çalışmaz. Bu nedenle stateless yaklaşım her koşulda daha hızlı veya daha basit değildir; stateful yaklaşım da her koşulda daha uyumlu değildir.

Kayıt tutma, hata ayıklama ve güvenlik kuralları da seçilen mekanizmaya göre değişir. Stateful NAT64'te belirli bir anda hangi iç istemcinin hangi IPv4 adresi ve port eşlemesini kullandığını izlemek önemlidir. SIIT ve NPTv6 gibi stateless mekanizmalarda sorun giderirken prefix kurallarını, yönlendirmeyi ve her iki yöndeki adres hesaplamasını kontrol etmek gerekir.