NAT64 — IPv6-only clientlarga IPv4 serverlar bilan aloqa qilish imkonini beradigan manzil va protokol tarjima mexanizmi.
NAT64 gateway IPv6 paketdagi destination manzil ichidan IPv4 manzilni ajratadi, paketni IPv4 formatga o‘giradi va qaytish trafikini yana IPv6ga tarjima qiladi.
NAT64 odatda DNS64 bilan birga ishlaydi. DNS64 IPv4-only server uchun sun’iy IPv6 manzil yaratadi.
Muammo
IPv6 host IPv4 manzilga to‘g‘ridan-to‘g‘ri packet yubora olmaydi.
Masalan:
NAT64 va DNS64 ular orasida tarjima qiladi.
NAT64 prefiksi
NAT64 IPv4 manzilni maxsus IPv6 prefiks ichiga joylaydi.
Well-known prefix:
64:ff9b::/96
IPv4 192.0.2.33 shu prefiks bilan quyidagiga o‘xshash IPv6 manzilga aylantiriladi:
64:ff9b::c000:221
Oxirgi 32 bit IPv4 manzilning hexadecimal ko‘rinishi.
Operator network-specific prefix ham ishlatishi mumkin.
DNS64
Client example.com uchun AAAA record so‘raydi.
Agar authoritative DNSda:
- AAAA record yo‘q;
- A record bor
bo‘lsa, DNS64 resolver A recorddagi IPv4 manzilni NAT64 prefiks bilan birlashtirib synthetic AAAA javob yaratadi.
Jarayon:
A: 198.51.100.20
NAT64 prefix: 64:ff9b::/96
Synthetic AAAA: 64:ff9b::c633:6414
Client bu manzilga oddiy IPv6 packet yuboradi.
Paket oqimi
- IPv6-only client synthetic IPv6 manzilga ulanadi.
- Router packetni NAT64 gatewayga yo‘naltiradi.
- Gateway embedded IPv4 manzilni ajratadi.
- Source IPv6 manzil IPv4 pooldagi manzil va portga bog‘lanadi.
- IPv4 packet serverga yuboriladi.
- Javob NAT64 gatewayga qaytadi.
- Gateway uni IPv6 packetga aylantiradi.
- Client javobni oladi.
Ilova ko‘pincha tarjimani sezmaydi.
Stateful NAT64
Stateful NAT64 har ulanish uchun state saqlaydi.
State tarkibi:
Ko‘plab IPv6 clientlar kichik IPv4 pooldan foydalanishi mumkin. Bu NAT44 PATga o‘xshaydi.
Stateless NAT64
Stateless NAT64 algoritmik mapping ishlatadi va per-flow state talab qilmaydi.
IPv6 manzil va IPv4 manzil o‘rtasida qayta tiklanadigan moslik bo‘ladi.
Stateless variant:
uchun ishlatilishi mumkin.
U port translation bilan ko‘p clientni bitta IPv4ga siqmaydi.
SIIT
Stateless IP/ICMP Translation IPv4 va IPv6 headerlari orasidagi stateless tarjima algoritmlarini belgilaydi.
NAT64 SIIT tamoyillaridan foydalanadi.
Tarjima quyidagilarni o‘z ichiga oladi:
- IP header;
- source va destination;
- TTL va Hop Limit;
- checksum;
- ICMP va ICMPv6;
- fragmentation;
- protocol fields.
ICMP tarjimasi
IPv4 ICMP va ICMPv6 xabar turlari bir xil emas.
NAT64 quyidagilarni moslashtiradi:
- Destination Unreachable;
- Packet Too Big;
- Time Exceeded;
- Parameter Problem;
- Echo Request;
- Echo Reply.
Path MTU Discovery ishlashi uchun ICMP tarjimasi muhim.
Checksum
TCP va UDP checksum pseudo-header ichida source va destination IP manzillarni hisobga oladi.
NAT64 manzillarni o‘zgartirgani sabab checksumni ham moslashtiradi.
IPv4 UDP checksum nol bo‘lishi mumkin, IPv6 UDP checksum esa odatda majburiy. Tarjimon bunday paketlarni maxsus qoidalar bilan qayta ishlaydi.
Fragmentatsiya
IPv4 va IPv6 fragmentatsiya modeli farq qiladi.
IPv4 router yo‘lda fragmentlashi mumkin. IPv6da fragmentatsiyani faqat sender bajaradi.
NAT64:
ni mos tarjima qilishi kerak.
Fragmentlar security va state trackingni murakkablashtiradi.
IPv4 literal muammosi
DNS64 faqat DNS so‘roviga ta’sir qiladi.
Ilova URL ichida to‘g‘ridan-to‘g‘ri IPv4 literal ishlatsa:
http://198.51.100.20/
DNS so‘rovi bo‘lmaydi va synthetic AAAA yaratilmaydi.
Yechimlar:
- ilovani IPv6ga moslash;
- CLAT;
- platformaga xos address synthesis API;
- hostname ishlatish.
464XLAT
464XLAT mobil tarmoqlarda keng qo‘llanadigan arxitektura.
Ikki qism:
- CLAT — client tomonda IPv4 packetni IPv6ga stateless tarjima qiladi;
- PLAT — operator tarmog‘idagi stateful NAT64.
IPv4-only ilova lokal IPv4 socket ishlatadi. CLAT paketni IPv6ga aylantiradi. PLAT internetdagi IPv4 serverga uzatadi.
Bu IPv6-only mobil tarmoqda eski ilovalarni ishlatadi.
DNSSEC bilan munosabat
DNS64 resolver authoritative A recorddan synthetic AAAA yaratadi.
DNSSEC end-to-end tekshiruvchi client synthetic AAAA authoritative zone tomonidan imzolanmaganini ko‘rishi mumkin.
DNS64 resolver odatda DNSSEC validationni o‘zi bajaradi va synthesis ma’lumotini tegishli tarzda qaytaradi.
Client-side validation va DNS64 kombinatsiyasi maxsus e’tibor talab qiladi.
IPv6 native server
Serverda haqiqiy AAAA record bo‘lsa, DNS64 odatda synthetic AAAA yaratmaydi.
Client native IPv6 orqali bevosita serverga ulanadi.
NAT64 faqat IPv4-only destination uchun ishlaydi.
Bu IPv6 kontentni ustun qo‘yadi.
Port exhaustion
Stateful NAT64 ko‘p client uchun cheklangan IPv4 pool va portlardan foydalanadi.
Har tashqi IPv4da TCP va UDP port maydoni cheklangan.
Port exhaustionga ta’sir qiluvchi omillar:
- concurrent connection;
- destination;
- timeout;
- port allocation;
- subscriber quota;
- IPv4 pool hajmi.
Monitoring tashqi port sarfini kuzatadi.
Log va tracing
Bir ulanishni aniqlash uchun:
kerak.
Carrier-scale muhitda NAT log hajmi katta bo‘ladi.
Application Layer Gateway
Ba’zi protokollar IP manzilni payload ichida uzatadi.
Misollar:
- FTP active mode;
- SIP;
- ayrim game protokollari;
- eski peer-to-peer.
Oddiy header tarjimasi yetarli bo‘lmasligi mumkin.
ALG payloadni o‘zgartiradi, lekin murakkablik va xavfsizlik muammosi keltiradi.
NAT64 cheklovlari
NAT64 quyidagilarni avtomatik hal qilmaydi:
- IPv4 literal;
- serverdan clientga kutilmagan inbound connection;
- IP address payload ichida;
- barcha VPN protokollari;
- multicast;
- broadcast;
- end-to-end IPsec transport mode;
- peer-to-peer address exchange.
Ilovalar hostname va standart transportdan foydalansa yaxshi ishlaydi.
Diagnostika
NAT64 ishlamasa:
- DNS64 synthetic AAAA;
- NAT64 prefix;
- IPv6 routing;
- IPv4 routing;
- state table;
- pool;
- port exhaustion;
- firewall;
- ICMP translation;
- MTU;
- IPv4 literal;
- DNSSEC;
- CLAT;
- packet capture
tekshiriladi.
AAAA javobi bor, lekin ulanish ishlamasa, synthetic manzil NAT64 prefixga mosligi va gateway route’i tekshiriladi.
Bog‘liq tushunchalar
IPv6-only, IPv4, DNS64, Synthetic AAAA, Stateful NAT64, Stateless NAT64, SIIT, 464XLAT, CLAT, PLAT, ICMP translation