IPv6 Teknolojisi
Yayın tarihi
Okuma süresi
5 dk okuma

NAT64 ve DNS64 Nedir? IPv4 Sitesine IPv6'dan Erişim

NAT64 ve DNS64, yalnızca IPv6 kullanan bir istemcinin IPv4 sunucuya ulaşmasını sağlar. 64:ff9b::/96 ön eki, akış, sınırlar ve proxy açısından anlamı.

NAT64, yalnızca IPv6 kullanan bir istemcinin IPv4 sunucuya ulaşmasını sağlayan bir çeviri mekanizmasıdır. DNS64 ise ona eşlik eden ve alan adlarından IPv6 adresi üreten DNS parçasıdır. Bu yazı iki mekanizmanın nasıl birlikte çalıştığını, 64:ff9b::/96 ön ekinin ne olduğunu ve proxy kullanıcısı için neyi değiştirdiğini anlatır.

Sorun: IPv6 istemci, IPv4 sunucu

İnternet iki adres ailesiyle çalışır. IPv6 çıkışlı bir istemci, bir hedefe doğrudan ulaşmak için o hedefin IPv6 adresini bilmelidir. Hedefin IPv6 adresi DNS'te AAAA kaydında tutulur; IPv4 adresi A kaydındadır. Hedefin yalnızca A kaydı varsa IPv6 istemci ona doğrudan bağlanamaz.

Üç yol vardır: istemciye de IPv4 vermek (çift yığın), IPv4 üzerinden IPv6 taşımak (tünelleme) ya da iki aile arasında çeviri yapmak. NAT64 üçüncü yoldur (RFC 6146 (yeni sekmede açılır)). Karşılaştırmalı özet için IPv4 ve IPv6 farkları yazısına bakın.

NAT64 nasıl çalışır?

Durumlu NAT64 (stateful NAT64), yalnızca IPv6 istemcilerin IPv4 sunuculara tekil yayın UDP, TCP veya ICMP ile ulaşmasını sağlar. Bir NAT64 çeviricisine atanan bir veya birkaç genel IPv4 adresi, birçok IPv6 istemci arasında paylaşılır. DNS64 ile birlikte kullanıldığında genellikle istemcide ya da sunucuda değişiklik gerekmez.

Çeviri, paket başlıklarının IP/ICMP çeviri algoritmasıyla çevrilmesiyle yapılır. IPv4 adresleri IPv6'ya RFC 6052 (yeni sekmede açılır) algoritmasıyla eşlenir. Kapsam sınırlıdır: yalnızca tekil yayın TCP, UDP ve ICMP; çoklu yayın, SCTP, DCCP ve IPsec kapsam dışıdır.

Mantıksal akış şöyle özetlenir:

Metin
IPv6 istemci
    |  1) AAAA sorgusu: example.com
    v
DNS64 çözümleyici
    |  2) Gerçek AAAA yok; A kaydı sorgulanır: 192.0.2.33
    |  3) Sentetik AAAA döner: 64:ff9b::c000:221
    v
IPv6 istemci
    |  4) Paket hedefi: 64:ff9b::c000:221
    v
NAT64 geçidi
    |  5) Başlıkları IPv4'e çevirir; kaynak = geçidin IPv4 adresi
    v
IPv4 sunucu (192.0.2.33)

Dönüş yolunda aynı işlem tersine yapılır: sunucunun yanıtı geçide gelir, geçit durum tablosuna bakar ve paketi IPv6 istemciye çevirip iletir. Örnek adresler belgelendirme aralığındandır.

Adım 5 önemlidir. Sunucu, IPv6 istemcinin adresini değil geçidin IPv4 adresini görür. Aynı geçidin arkasındaki çok sayıda istemci aynı IPv4 adresinden çıkar.

DNS64: sentetik AAAA kaydı

DNS64 (RFC 6147 (yeni sekmede açılır)), A kayıtlarından AAAA kayıtları üretir. Mantık basittir:

  1. İstemci bir alan adı için AAAA sorgusu gönderir.
  2. Hedef için gerçek AAAA kaydı yoksa DNS64, A kaydını sorgular.
  3. Her A kaydı için sentetik bir AAAA kaydı oluşturur ve döner.

Kritik kural: gerçek AAAA kaydı varsa DNS64 varsayılan olarak sentez yapmaz. Yani çift yığınlı hedeflerde istemci gerçek IPv6 adrese doğrudan gider, NAT64'e uğramaz. "DNS64 her sorguya sentetik AAAA döner" yaygın bir yanlıştır.

AAAA kaydı tek bir IPv6 adresi saklayan kaynak kaydı türüdür; IANA tür değeri 28'dir (RFC 3596 (yeni sekmede açılır)).

Bir alan adının AAAA kaydını görmek için:

Bash
dig AAAA example.com +short

Çıktı boşsa alan adının AAAA kaydı yok demektir. DNS64 çözümleyici kullanan bir ağdaysanız aynı sorgu sentetik bir adres döndürebilir. Bunu ayırt etmek için sorguyu belirli bir çözümleyiciye yönlendirin:

Bash
dig AAAA example.com @DNS64_SUNUCU +short

Bu komutta DNS64_SUNUCU yer tutucudur. Testin tamamı için IPv6 desteği nasıl test edilir yazısına bakın.

64:ff9b::/96 ön eki ve adres biçimi

RFC 6052, IPv4 adresinin bir IPv6 ön ekinin içine nasıl gömüleceğini tanımlar. İyi bilinen ön ek 64:ff9b::/96'dır. Bu ön ekle IPv4 adresi son 32 bite yazılır:

IPv4 adresiGömülü adres (RFC 5952)
192.0.2.3364:ff9b::c000:221
198.51.100.764:ff9b::c633:6407
203.0.113.1064:ff9b::cb00:710a

64:ff9b::192.0.2.33 ve 64:ff9b::c000:221 aynı adrestir; birincisi karma, ikincisi saf onaltılık yazımdır. Dönüşümü elle yapmak yerine IPv4-IPv6 dönüştürücüyle denetleyebilirsiniz. Python ile de gösterilebilir:

Python
import ipaddress

v4 = ipaddress.IPv4Address("192.0.2.33")
on_ek = 0x0064FF9B << 96            # 64:ff9b::/96
v6 = ipaddress.IPv6Address(on_ek | int(v4))
print(v6)                           # 64:ff9b::c000:221

Ağa özgü ön ekler de kullanılabilir. Uzunluklar 32, 40, 48, 56, 64 veya 96 olabilir; iyi bilinen ön ek yalnızca /96'dır. Uzunluk 96'dan kısaysa IPv4 adresi son 32 bite oturmaz, parçalar halinde yerleştirilir ve 64–71. bitler (u sekizlisi) sıfır kalır. Bu yüzden örneğin /64 ön ekte adres beklenmedik bir yerde görünür.

Yerel kullanım için ayrılmış 64:ff9b:1::/48 ön eki de vardır; küresel erişilebilir değildir.

Önemli

İyi bilinen 64:ff9b::/96 ön eki, özel (RFC 1918 gibi) ya da global olmayan IPv4 adreslerini temsil etmek için kullanılamaz. Çeviriciler bu kurala aykırı paketleri düşürmelidir. 192.0.2.0/24 gibi belgelendirme adresleri yalnızca örnek amaçlıdır.

İstemci ve hedef durumuna göre sonuç

Her durumda NAT64 devreye girmez. Aşağıdaki tablo ne zaman neyin gerektiğini özetler (IPv6 çıkışlı istemci için):

HedefÇıkış ağında NAT64 + DNS64Sonuç
Çift yığınlı (A + AAAA)gerekmezGerçek AAAA döner, doğrudan IPv6 ile ulaşılır
Yalnızca IPv4, alan adıylavarDNS64 AAAA üretir, NAT64 çevirir
Yalnızca IPv4, alan adıylayokIPv6 ile ulaşılamaz
IPv4 adres literal'i (192.0.2.33)varDNS sorgusu olmadığı için sentez istemcide yapılmalıdır
IPv4 adres literal'iyokIPv6 ile ulaşılamaz

Dördüncü satır sık gözden kaçar. Hedefi http://192.0.2.33/ gibi doğrudan IPv4 adresiyle verirseniz DNS64 devreye girmez; çünkü sorgulanacak bir ad yoktur. Bu durumda istemci ön ek keşfi yapıp adresi kendisi sentezlemelidir ya da 464XLAT gibi bir çözüm kullanılmalıdır. Bunu bir proxy yazılımının yapıp yapmadığı yazılıma bağlıdır; varsaymayın.

NAT64'ün sınırları

NAT64 evrensel bir çözüm değildir. Bilinmesi gerekenler:

  • Protokol kapsamı. Yalnızca tekil yayın TCP, UDP ve ICMP çevrilir. Çoklu yayın, SCTP, DCCP ve IPsec kapsam dışıdır.
  • Uygulama sınıfı. DNS64 yöntemi, NAT'ler üzerinden çalışan uygulama sınıfı için tasarlanmıştır. NAT64 her uygulamayı çalıştırmaz.
  • Gömülü IPv4 adresleri. Protokol içinde (örneğin yük kısmında) IPv4 adresi taşıyan uygulamalar çeviri sonrası yanlış adresle kalabilir. Böyle protokoller için ek bir uygulama katmanı çevirisi gerekebilir; çözümler arasında 464XLAT (RFC 6877 (yeni sekmede açılır)) anılır; ayrıntısı bu yazının kapsamı dışındadır.
  • Adres paylaşımı. Çok sayıda istemci aynı IPv4 adresinden çıkar. Hedef tarafında hız sınırı ve kısıtlamalar bu ortak adres üzerinden uygulanabilir.
  • Kaynak adres görünürlüğü. IPv4 hedef IPv6 kaynak adresinizi hiç görmez.

NAT64 ile 6to4 ya da Teredo'yu karıştırmayın. Bunlar IPv4 üzerinden IPv6 taşıyan tünelleme mekanizmalarıdır; NAT64 ise çeviridir.

Proxy bağlamında anlamı

IPv6 çıkışlı bir proxy, hedefin yalnızca IPv4 olması halinde iki durumdan birinde olur: ya çıkış ağında NAT64/DNS64 vardır ve hedefe ulaşılır, ya da yoktur ve ulaşılamaz.

Sınırları doğru okuyun:

  1. NAT64 bir proxy değildir. HTTP CONNECT veya SOCKS5 proxy'si istemcinin isteği üzerine hedefe kendi bağlantısını kuran bir aracıdır. NAT64 paket başlıklarını çeviren bir ağ katmanıdır. Aynı yolda ikisi birlikte bulunabilir, ama rolleri farklıdır. Proxy akışı için IPv6 proxy nasıl çalışır yazısına bakın.
  2. Çeşitlilik kaybolur. Yalnızca IPv4 hedefe NAT64 üzerinden giderken çok sayıda IPv6 çıkış adresiniz olsa bile hedef çeviri katmanının IPv4 adresini görür. "Bir /64 alt ağdan çok adres" avantajı o hedefte geçerli olmaz.
  3. Kapsam ürüne bağlıdır. IPv6 Proxy ürün sayfası, yalnızca IPv4 hedeflere bir NAT64/DNS64 çeviri katmanıyla erişim sağlandığını belirtir; katmanın kapsamı doğrulanamamıştır. Önemli işlerden önce hedefinizi deneyin.
  4. Test yöntemi. Çıkış adresinizi kontrol etmek için yalnızca IPv4 yayın yapan bir hedefe curl -x ile istek gönderin ve hedefin gördüğü adresin ailesine bakın. İstek başarılı olup hedef IPv4 adres görüyorsa bu, çevirinin devrede olduğuna işaret edebilir.

Genel bir sonuç çıkaralım: Çalışacağınız hedeflerin çoğu çift yığınlıysa NAT64'ün rolü sınırlıdır. Yalnızca IPv4 hedefler işinizin merkezindeyse bir IPv6 proxy ürününü seçmeden önce NAT64 kapsamını ve çeviri sonrası görünen adres ailesini sorgulayın. Ürünün ne olduğunu ve kimlere uygun olduğunu IPv6 proxy nedir yazısında ele aldık.

Kısa özet

  • NAT64, IPv6 istemciyi IPv4 sunucuya bağlayan bir çeviri mekanizmasıdır; DNS64 ona sentetik AAAA kaydı sağlar.
  • İyi bilinen ön ek 64:ff9b::/96'dır; IPv4 adresi son 32 bite yazılır.
  • Gerçek AAAA kaydı varsa DNS64 sentez yapmaz.
  • Yalnızca TCP, UDP ve ICMP çevrilir; IPv4 adres literal'i için istemci tarafında sentez gerekir.
  • NAT64 bir proxy değildir; çeviri katmanı üzerinden giderken hedef IPv4 adresini görür.

Sık sorulan sorular

NAT64 ne işe yarar?

NAT64, yalnızca IPv6 kullanan bir istemcinin IPv4 sunucularla tekil yayın TCP, UDP ve ICMP üzerinden konuşmasını sağlayan bir çeviri mekanizmasıdır. Paket başlıklarını IPv6 ile IPv4 arasında çevirir.

DNS64 neden gerekir?

Alan adıyla bağlanan bir istemci hedef için AAAA kaydı ister. Hedefin yalnızca A kaydı varsa DNS64 bu A kaydından sentetik bir AAAA kaydı üretir. Böylece istemci, paketlerini NAT64 geçidine yönlendirecek bir IPv6 adresi öğrenir.

64:ff9b::/96 nedir?

RFC 6052'nin tanımladığı iyi bilinen ön ektir. IPv4 adresi bu ön ekin sonuna eklenerek IPv6 adresi oluşturulur. Örneğin 192.0.2.33 adresi 64:ff9b::c000:221 olarak yazılır.

NAT64 bir IPv6 proxy midir?

Hayır. NAT64 paket başlıklarını çeviren bir ağ katmanı mekanizmasıdır. Proxy ise istemcinin isteği üzerine hedefe kendi bağlantısını kuran bir aracıdır. İkisi farklı katmanlardadır ve bir arada kullanılabilir.

NAT64 üzerinden gelen istekte hedef hangi adresi görür?

Yalnızca IPv4 olan hedef genellikle IPv6 kaynak adresinizi değil, çeviri katmanının IPv4 adresini görür. Çok sayıda IPv6 çıkış adresiniz olsa bile o hedefe karşı bu çeşitlilik görünmez.

/128Ürün

IPv6 Proxy ürününü inceleyin

Adet bazlı fiyatlanan IPv6 proxy paketleri. Satışı Sağlam Proxy (saglamproxy.com) üzerinden yapılır.