NAT64 และ DNS64
เครือข่ายโทรศัพท์เคลื่อนที่บางแห่งใช้งาน IPv6 เท่านั้นมาหลายปีแล้ว — T-Mobile US ซึ่งเป็นส่วนใหญ่ของ Reliance Jio ผู้ใช้ของพวกเขายังคงเข้าถึงไซต์ IPv4 เช่นเดียวกับส่วนอื่นๆ ของเว็บ การแปลเกิดขึ้นผ่าน NAT64 และ DNS64 ซึ่งเป็นเทคโนโลยีคู่ที่เชื่อมโยงโลก IPv4 และ IPv6 ทำความเข้าใจว่าการกระทำตรงกลางอย่างเงียบ ๆ ของการเปลี่ยนผ่าน IPv6 ให้ความกระจ่างได้อย่างไร
เนื้อหาบทความฉบับเต็มมีให้เป็นภาษาอังกฤษด้านล่าง
NAT64 และ DNS64 เป็นเทคโนโลยีที่ช่วยให้ไคลเอ็นต์ที่ใช้ IPv6 เท่านั้นเข้าถึงเซิร์ฟเวอร์ที่ใช้ IPv4 เท่านั้น พวกเขาร่วมกันปล่อยให้เครือข่ายปรับใช้ IPv6 เท่านั้น โดยไม่สูญเสียการเข้าถึงส่วน IPv4 ของอินเทอร์เน็ต T-Mobile US, ผู้ให้บริการมือถือรายใหญ่อื่นๆ หลายราย และเครือข่ายองค์กรจำนวนมากใช้รูปแบบนี้ในการผลิต
ปัญหาที่พวกเขาแก้ไข
การเปลี่ยนผ่าน IPv4 เป็น IPv6 เป็นไปอย่างค่อยเป็นค่อยไป เซิร์ฟเวอร์จำนวนมากยังคงเป็น IPv4 เท่านั้น หากเครือข่ายของคุณใช้ IPv6 เท่านั้น ไคลเอนต์ของคุณจะไม่สามารถเข้าถึงเซิร์ฟเวอร์เหล่านั้นได้โดยตรง เนื่องจากโปรโตคอลเข้ากันไม่ได้แบบย้อนหลัง
คำตอบที่ไร้เดียงสาคือ dual-stack — ทุกอุปกรณ์มีทั้งที่อยู่ IPv4 และ IPv6 Dual-stack ใช้งานได้ แต่ต้องมีการบำรุงรักษาสอง stack เครือข่ายแบบขนานอย่างไม่มีกำหนด เครือข่ายบางแห่งตัดสินใจใช้ IPv6 แบบสแต็กเดียวและใช้การแปลสำหรับการเข้าถึง IPv4 ที่เหลือ
วิธีการทำงานของ NAT64
NAT64 เป็นตัวแปล stateful ที่ขอบเขตเครือข่าย มี:
- An IPv6 อินเทอร์เฟซหันหน้าไปทางเครือข่าย IPv6 เท่านั้น
- An IPv4 อินเทอร์เฟซหันหน้าไปทางอินเทอร์เน็ต IPv4 (พร้อมกลุ่มที่อยู่ IPv4)
- A การแมปตารางการแปล แหล่งที่มา IPv6 ไปยังพอร์ต IPv4 ที่จัดสรร
เมื่อไคลเอ็นต์ IPv6 ต้องการเข้าถึง เซิร์ฟเวอร์ IPv4:
- ไคลเอนต์ส่งแพ็กเก็ต IPv6 ไปยังที่อยู่ IPv6 พิเศษที่เข้ารหัสปลายทาง IPv4
- นักแปล NAT64 ได้รับแพ็กเก็ตบนอินเทอร์เฟซ IPv6
- แยกปลายทาง IPv4 ออกจากที่อยู่ IPv6 จัดสรรพอร์ตจากพูล IPv4 และเขียนใหม่ แพ็กเก็ตเป็นแพ็กเก็ต IPv4 โดยมีแหล่ง IPv4 ที่จัดสรร + พอร์ต
- แพ็กเก็ตจะไหลไปยังปลายทาง IPv4 ตามปกติ
- แพ็กเก็ตการตอบสนองกลับมาที่อินเทอร์เฟซ IPv4 ของ NAT64
- NAT64 ค้นหาการแมป สร้างแพ็กเก็ต IPv6 ขึ้นใหม่ และส่งต่อกลับไปที่ client.
Conceptually คล้ายกับ NAT44 (ชนิดปกติ) แต่มีการแปลโปรโตคอลในแต่ละขั้นตอน
ที่อยู่ IPv6 ที่มี IPv4
NAT64 ฝังอยู่ ใช้คำนำหน้า IPv6 เฉพาะ (คำนำหน้าที่รู้จักกันดีคือ 64:ff9b::/96) โดยมีที่อยู่ IPv4 ฝังอยู่ใน 32 รายการสุดท้าย บิต:
- ในการเข้าถึง 198.51.100.42 ผ่าน NAT64 ไคลเอนต์ใช้ที่อยู่ 64:ff9b::c633:642a (32 บิตสุดท้ายซึ่งเข้ารหัส 198.51.100.42 ในรูปแบบฐานสิบหก)
ไคลเอนต์ไม่จำเป็นต้องรู้ นี่คือการแปล — แค่เห็นที่อยู่ IPv6 แต่ไคลเอนต์ได้รับที่อยู่พิเศษนี้จากที่ไหน
DNS64 เติมเต็มช่องว่าง
ไคลเอนต์ส่วนใหญ่ไม่ได้เชื่อมต่อกับที่อยู่ IP โดยตรง — พวกเขาเชื่อมต่อกับชื่อโฮสต์ผ่าน DNS DNS64 คือตัวแก้ไข DNS ที่ได้รับการดัดแปลงซึ่งจัดการการสังเคราะห์:
- Client สืบค้น DNS สำหรับ example.com
- DNS64 ตัวแก้ไขจะค้นหาบันทึก AAAA (IPv6) หากมีอยู่ ให้ส่งคืนตามปกติ
- หากมีเพียงบันทึก A (IPv4) DNS64 จะสังเคราะห์บันทึก AAAA ปลอมโดยการฝังที่อยู่ IPv4 ลงในคำนำหน้า NAT64
- Client จะได้รับสิ่งที่ดูเหมือนบันทึก AAAA ปกติกลับมา
- Client เชื่อมต่อกับ IPv6 ที่อยู่
- แพ็กเก็ตไหลผ่าน NAT64 และได้รับการแปลเป็น IPv4.
ไคลเอ็นต์ไม่ทราบถึงสิ่งนี้ เห็น IPv6, ส่ง IPv6, ได้รับการตอบกลับเป็น IPv6 การแปลไม่สามารถมองเห็นได้
464XLAT สำหรับความเข้ากันได้ของไคลเอนต์
NAT64 + DNS64 ทำงานได้เกือบทุกอย่าง แต่บางแอปพลิเคชันใช้งานไม่ได้ โดยเฉพาะอย่างยิ่งแอปพลิเคชันที่ส่งผ่านตัวอักษร IPv4 (ไม่ใช่ชื่อโฮสต์) วิธีแก้ไขคือ 464XLAT (CLAT — เครื่องมือแปลฝั่งลูกค้า):
- อุปกรณ์ไคลเอนต์รัน CLAT ที่อ้างว่ามีสแต็ก IPv4
- Apps ที่ต้องการ IPv4 พูดคุยกับ CLAT ซึ่งแปลเป็น IPv6
- แพ็กเก็ต IPv6 ผ่านไป NAT64 ตามปกติ
Android และ iOS รองรับ 464XLAT T-Mobile US ใช้ชุดค่าผสมนี้ ผลลัพธ์: โทรศัพท์ Android บน T-Mobile เป็นแบบ IPv6 เท่านั้นที่เลเยอร์เครือข่าย แต่แอปจะทำงานเหมือนกับว่า IPv4 ยังคงใช้งานได้
ใช้งานที่ไหน
- T-Mobile US — ใช้งาน IPv6 เท่านั้นด้วย NAT64 มาตั้งแต่ปี 2014
- Reliance Jio (อินเดีย) — การใช้งาน IPv6 เท่านั้น, NAT64 สำหรับปลายทาง IPv4
- องค์กรจำนวนมาก เครือข่าย ที่มีเครือข่ายภายใน IPv6 ส่วนใหญ่ใช้ NAT64 สำหรับบริการเฉพาะ IPv4 แบบเดิม
- ผู้ให้บริการระบบคลาวด์บางราย เสนอบริการ NAT64 สำหรับ IPv6 เท่านั้น VPCs.
Limitations
- State-heavy. นักแปลจะรักษาสถานะสำหรับทุกการเชื่อมต่อที่ใช้งานอยู่ ความต้องการทรัพยากรเพิ่มขึ้นตามปริมาณการรับส่งข้อมูล
- ขีดจำกัดการเชื่อมต่อ เช่นเดียวกับ NAT อื่นๆ พอร์ตพูลจะกำหนดเพดานในการเชื่อมต่อพร้อมกันตามที่อยู่ IPv4
- โปรโตคอลบางตัวประสบปัญหา โปรโตคอลที่ฝังที่อยู่ IP ไว้ในเพย์โหลด (SIP รุ่นเก่า, FTP) จำเป็นต้องมีเกตเวย์เลเยอร์แอปพลิเคชัน โปรโตคอลสมัยใหม่ส่วนใหญ่ไม่มีปัญหานี้ การแปลเฉพาะ
- DNS เท่านั้น แอปที่เลี่ยงผ่าน DNS และเชื่อมต่อกับตัวอักษร IPv4 จำเป็นต้องมี CLAT
- DNSSEC ภาวะแทรกซ้อน บันทึก AAAA สังเคราะห์ไม่ได้ลงนามโดยต้นทาง ไคลเอ็นต์ที่ตรวจสอบความถูกต้องของ DNSSEC อาจปฏิเสธได้ โซลูชั่นมีอยู่แต่เพิ่มความซับซ้อน
endgame
NAT64 เป็นเทคโนโลยีการเปลี่ยนแปลง สถานะสิ้นสุดที่คาดไว้คือ IPv6 ที่เป็นสากลเพียงพอที่ปลายทางที่ใช้ IPv4 เท่านั้นจะมีข้อยกเว้นที่ไม่ค่อยเกิดขึ้นที่จัดการที่ Edge ก่อนหน้านั้น NAT64 + DNS64 + 464XLAT คือวิธีที่เครือข่ายสามารถใช้งาน IPv6 เท่านั้นโดยไม่ทำให้บริการลดลง ชุดค่าผสมนี้ได้รับการผลิตมานานกว่าทศวรรษและมีความพร้อมเพียงพอสำหรับการใช้งานอย่างจริงจัง
คำถามที่พบบ่อย
- ฉันอยู่เบื้องหลัง NAT64 หรือไม่?
- อาจจะไม่เว้นแต่คุณจะใช้ T-Mobile US, Reliance Jio หรือเครือข่ายเฉพาะ IPv6 เท่านั้น เครือข่ายภายในบ้านและองค์กรส่วนใหญ่เป็นแบบ dual-stack (ทั้งสองโปรโตคอล) แทนที่จะเป็น IPv6 + NAT64 ล้วนๆ
- NAT64 ส่งผลต่อประสิทธิภาพหรือไม่
- เจียมเนื้อเจียมตัว. ขั้นตอนการแปลจะเพิ่มไมโครวินาที ตารางสถานะจะเพิ่มโอเวอร์เฮดของหน่วยความจำ สำหรับการท่องเว็บทั่วไป ผลกระทบนั้นไม่สามารถวัดผลได้ สำหรับเวิร์กโหลดที่มีอัตราการเชื่อมต่อสูงมาก โอเวอร์เฮดก็มีความสำคัญ
- VPN ทำงานร่วมกับ NAT64 ได้หรือไม่?
- ส่วนใหญ่. ไคลเอนต์ VPN ส่วนใหญ่ทันเนล IPv4 เป็นค่าเริ่มต้น NAT64 จัดการได้อย่างโปร่งใส โปรโตคอล VPN บางตัวที่เล่นได้ไม่ดีกับ double-NAT อาจมีปัญหาได้ การกำหนดค่า WireGuard และ OpenVPN ที่ทันสมัยจัดการได้อย่างถูกต้อง
- เหตุใดทุกเครือข่ายจึงไม่ใช้ NAT64
- Dual-stack นั้นใช้งานได้ง่ายกว่าและเข้าใจได้ดี NAT64 เพิ่มความซับซ้อนเพื่อผลประโยชน์ส่วนเพิ่มเมื่อ IPv4 ยังคงใช้งานได้กับไคลเอนต์ IPv6 เพียงอย่างเดียวที่มี NAT64 จะมีความน่าสนใจเป็นหลักเมื่อองค์กรมีที่อยู่ IPv4 ไม่เพียงพอหรือต้องการยอมรับ IPv6
- NAT64 และ CGNAT แตกต่างกันอย่างไร?
- CGNAT คือการแปล IPv4 เป็น IPv4 (IPv4 ส่วนตัวภายใน, IPv4 สาธารณะภายนอก) NAT64 คือการแปล IPv6 เป็น IPv4 เลเยอร์โปรโตคอลที่แตกต่างกัน ทั้งสองเป็นเทคโนโลยีการเปลี่ยนแปลงสำหรับการขาดแคลน IPv4 แต่แก้ปัญหาที่แตกต่างกัน