Network Address Translation (NAT) คือวิธีการกำหนดพื้นที่แอดเดรสใหม่ไปยังอีกที่หนึ่งโดยการเปลี่ยนข้อมูลที่อยู่เครือข่ายใน IP (Internet Protocol) นั่นคือส่วนหัวของแพ็กเก็ตจะเปลี่ยนไปในขณะที่ขนส่งผ่านอุปกรณ์กำหนดเส้นทางการรับส่งข้อมูล เดิมวิธีนี้ใช้เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลบนเครือข่าย IP ได้อย่างง่ายดายโดยไม่ต้องเปลี่ยนหมายเลขโฮสต์แต่ละโฮสต์ ได้กลายเป็นเครื่องมือยอดนิยมและมีความสำคัญในการอนุรักษ์และกระจายพื้นที่แอดเดรสทั่วโลกเมื่อต้องเผชิญกับความขาดแคลนที่อยู่ IPv4
การใช้เครือข่ายการออกอากาศดั้งเดิมที่อยู่ประกอบด้วยการจับคู่ที่อยู่แต่ละรายการจากพื้นที่ที่อยู่หนึ่งไปยังที่อยู่ที่เกี่ยวข้องในช่องอื่น ตัวอย่างเช่นสิ่งนี้จำเป็นหากผู้ให้บริการอินเทอร์เน็ตมีการเปลี่ยนแปลงและผู้ใช้ไม่สามารถประกาศเส้นทางใหม่ไปยังเครือข่ายต่อสาธารณะได้ ด้วยการลดลงของพื้นที่ที่อยู่ IP ทั่วโลกที่คาดการณ์ได้ทำให้ NAT ถูกนำมาใช้มากขึ้นตั้งแต่ช่วงปลายทศวรรษ 1990 ร่วมกับการเข้ารหัส IP (ซึ่งเป็นวิธีการส่งที่อยู่ IP หลายรายการไปยังช่องว่างเดียว) กลไกนี้ถูกนำไปใช้ในอุปกรณ์กำหนดเส้นทางที่ใช้ตารางการแปลสถานะเพื่อแมปที่อยู่ "ซ่อน" กับที่อยู่ IP เดียวและเปลี่ยนเส้นทางแพ็กเก็ต IP ขาออก ดังนั้นดูเหมือนว่าพวกเขาจะออกจากอุปกรณ์กำหนดเส้นทาง ในลิงก์ย้อนกลับคำตอบจะถูกจับคู่กับที่อยู่ IP เดิมโดยใช้กฎที่เก็บไว้ในตารางการแปล ในทางกลับกันกฎของตารางการแปลจะถูกล้างหลังจากช่วงเวลาสั้น ๆ หากการรับส่งข้อมูลใหม่ไม่อัปเดตสถานะ นี่คือกลไก NAT พื้นฐาน สิ่งนี้หมายความว่า?
วิธีนี้ช่วยให้สามารถสื่อสารผ่านเราเตอร์เฉพาะเมื่อการเชื่อมต่ออยู่บนเครือข่ายที่เข้ารหัสเนื่องจากจะสร้างตารางการแปล ตัวอย่างเช่นเว็บเบราว์เซอร์ภายในเครือข่ายดังกล่าวสามารถดูไซต์ภายนอกได้ แต่เมื่อติดตั้งภายนอกจะไม่สามารถเปิดทรัพยากรที่โฮสต์อยู่บนนั้นได้ อย่างไรก็ตามอุปกรณ์ NAT ส่วนใหญ่ในปัจจุบันอนุญาตให้ผู้ดูแลระบบเครือข่ายกำหนดค่ารายการตารางการแปลสำหรับการใช้งานแบบถาวร คุณลักษณะนี้มักเรียกว่า NAT แบบคงที่หรือการส่งต่อพอร์ตและช่วยให้การรับส่งข้อมูลขาออกไปยังเครือข่าย "ภายนอก" เข้าถึงโฮสต์ที่กำหนดบนเครือข่ายที่เข้ารหัส
เนื่องจากความนิยมของวิธีนี้ซึ่งใช้เพื่อรักษาพื้นที่แอดเดรส IPv4 คำว่า NAT (นี่คือสิ่งที่เป็นจริง - ระบุไว้ข้างต้น) จึงกลายเป็นคำพ้องความหมายเกือบทั้งหมดกับวิธีการเข้ารหัส
เนื่องจากการแปลที่อยู่เครือข่ายมีการเปลี่ยนแปลงข้อมูลเกี่ยวกับที่อยู่ของแพ็กเก็ต IP สิ่งนี้ส่งผลร้ายแรงต่อคุณภาพของการเชื่อมต่ออินเทอร์เน็ตและต้องให้ความสนใจอย่างใกล้ชิดกับรายละเอียดของการใช้งาน
วิธีที่ใช้ NAT แตกต่างกันในลักษณะการทำงานเฉพาะในกรณีที่แตกต่างกันเกี่ยวกับผลกระทบต่อการรับส่งข้อมูลเครือข่าย
การแปลที่อยู่เครือข่ายประเภทที่ง่ายที่สุด (NAT)ให้การแปลที่อยู่ IP แบบตัวต่อตัว RFC 2663 เป็นประเภทหลักของการแปลนี้ ในประเภทนี้จะมีการเปลี่ยนแปลงเฉพาะที่อยู่ IP และการตรวจสอบส่วนหัวของ IP เท่านั้น สามารถใช้ประเภทการออกอากาศพื้นฐานเพื่อเชื่อมต่อเครือข่าย IP สองเครือข่ายที่มีการระบุแอดเดรสที่เข้ากันไม่ได้
NAT ส่วนใหญ่มีความสามารถแมปโฮสต์ส่วนตัวหลายรายการกับที่อยู่ IP ที่เปิดเผยต่อสาธารณะ ในการกำหนดค่าโดยทั่วไป LAN จะใช้ที่อยู่ IP "ส่วนตัว" ที่กำหนดสำหรับซับเน็ต (RFC 1918) เราเตอร์บนเครือข่ายนี้มีที่อยู่ส่วนตัวในช่องว่างนี้
เราเตอร์ยังเชื่อมต่อกับอินเทอร์เน็ตด้วยโดยใช้ที่อยู่ "สาธารณะ" ที่ผู้ให้บริการกำหนด เนื่องจากการรับส่งข้อมูลผ่านจากเครือข่ายท้องถิ่นไปยังอินเทอร์เน็ตที่อยู่ต้นทางในแต่ละแพ็กเก็ตจะถูกแปลทันทีจากที่อยู่ส่วนตัวไปยังที่อยู่สาธารณะ เราเตอร์ติดตามข้อมูลพื้นฐานเกี่ยวกับการเชื่อมต่อที่ใช้งานแต่ละครั้ง (โดยเฉพาะที่อยู่และพอร์ตปลายทาง) เมื่อการตอบกลับถูกส่งกลับไปจะใช้ข้อมูลการเชื่อมต่อที่จัดเก็บระหว่างเฟสขาออกเพื่อกำหนดที่อยู่ส่วนตัวบนเครือข่ายภายในที่ควรกำหนดเส้นทางการตอบกลับ
ประโยชน์อย่างหนึ่งของฟังก์ชันนี้คือมันทำหน้าที่เป็นวิธีแก้ปัญหาที่ใช้งานได้จริงสำหรับพื้นที่ที่อยู่ IPv4 ที่กำลังจะมาถึง แม้แต่เครือข่ายขนาดใหญ่ก็สามารถเชื่อมต่อกับอินเทอร์เน็ตได้โดยใช้ที่อยู่ IP เดียว
ดาต้าแกรมแพ็คเก็ตทั้งหมดบนเครือข่าย IP มี 2ที่อยู่ IP - ต้นทางและปลายทาง โดยปกติแพ็กเก็ตที่เดินทางจากเครือข่ายส่วนตัวไปยังเครือข่ายสาธารณะจะมีการเปลี่ยนแปลงที่อยู่ต้นทางของแพ็กเก็ตในระหว่างการเปลี่ยนจากเครือข่ายสาธารณะกลับไปเป็นที่อยู่ส่วนตัว นอกจากนี้ยังมีการกำหนดค่าที่ซับซ้อนมากขึ้น
การกำหนดค่า NAT อาจมีลักษณะเฉพาะบางอย่างจำเป็นต้องมีการแก้ไขเพิ่มเติมเพื่อหลีกเลี่ยงปัญหาในการแปลแพ็กเกจที่ส่งคืน การรับส่งข้อมูลทางอินเทอร์เน็ตส่วนใหญ่ใช้โปรโตคอล TCP และ UDP และหมายเลขพอร์ตของพวกเขาเปลี่ยนไปในลักษณะที่การรวมกันของที่อยู่ IP และหมายเลขพอร์ตในทิศทางย้อนกลับของข้อมูลเริ่มตรงกัน
โปรโตคอลที่ไม่ใช่ TCP และ UDP ต้องการวิธีการแปลอื่น ๆ โดยทั่วไป Internet Message Control Protocol (ICMP) จะเชื่อมโยงข้อมูลที่ส่งผ่านกับการเชื่อมต่อที่มีอยู่ ซึ่งหมายความว่าจะต้องแสดงโดยใช้ที่อยู่ IP และหมายเลขเดียวกันกับที่ตั้งไว้ในตอนแรก
ไม่อนุญาตให้กำหนดค่า NAT ในเราเตอร์การเชื่อมต่อแบบ end-to-end ดังนั้นเราเตอร์ดังกล่าวจึงไม่สามารถเข้าร่วมในอินเทอร์เน็ตโปรโตคอลบางอย่างได้ บริการที่ต้องการการเริ่มต้นการเชื่อมต่อ TCP จากเครือข่ายภายนอกหรือผู้ใช้ที่ไม่มีโปรโตคอลอาจไม่พร้อมใช้งาน เว้นแต่ว่าเราเตอร์ NAT จะพยายามเป็นพิเศษในการสนับสนุนโปรโตคอลดังกล่าวแพ็กเก็ตขาเข้าจะไม่สามารถไปถึงปลายทางได้ โปรโตคอลบางตัวสามารถอยู่ในการแปลครั้งเดียวระหว่างโฮสต์ที่เข้าร่วม (ตัวอย่างเช่น FTP "โหมดพาสซีฟ") บางครั้งใช้เกตเวย์เลเยอร์แอปพลิเคชัน แต่การเชื่อมต่อจะไม่ถูกสร้างขึ้นเมื่อทั้งสองระบบแยกจากอินเทอร์เน็ตโดยใช้ NAT การใช้การแปลที่อยู่เครือข่ายยังทำให้โปรโตคอลการทันเนลมีความซับซ้อนเช่น IPsec เนื่องจากจะแก้ไขค่าในส่วนหัวที่โต้ตอบกับการตรวจสอบความสมบูรณ์ของคำขอ
การเชื่อมต่อแบบ end-to-end เป็นพื้นฐานหลักการของอินเทอร์เน็ตซึ่งมีมาตั้งแต่เริ่มก่อตั้ง สถานะปัจจุบันของเครือข่ายแสดงให้เห็นว่า NAT ละเมิดหลักการนี้ มีความกังวลอย่างมากในหมู่ผู้เชี่ยวชาญเกี่ยวกับการใช้งานการแปลที่อยู่เครือข่าย IPv6 อย่างกว้างขวางและปัญหาเกิดขึ้นเกี่ยวกับวิธีกำจัดอย่างมีประสิทธิภาพ
เนื่องจากลักษณะอายุสั้นของการเก็บรักษาโต๊ะสถานะการแปลในเราเตอร์ NAT อุปกรณ์ในเครือข่ายภายในสูญเสียการเชื่อมต่อ IP โดยปกติจะใช้เวลาไม่นาน เมื่อพูดถึงสิ่งที่ NAT อยู่ในเราเตอร์เราต้องไม่ลืมเกี่ยวกับสถานการณ์นี้ ซึ่งจะช่วยลดเวลาในการทำงานของแบตเตอรี่ขนาดกะทัดรัดและอุปกรณ์แบบชาร์จไฟได้อย่างมาก
นอกจากนี้เมื่อใช้ NATเฉพาะพอร์ตที่แอปพลิเคชันภายในสามารถระบายออกได้อย่างรวดเร็วโดยใช้การเชื่อมต่อพร้อมกันหลายรายการ (ตัวอย่างเช่นคำขอ HTTP สำหรับหน้าเว็บที่มีอ็อบเจ็กต์ฝังตัวจำนวนมาก) ปัญหานี้สามารถบรรเทาได้โดยการติดตาม IP ปลายทางนอกเหนือจากพอร์ต (ดังนั้นพอร์ตโลคัลหนึ่งพอร์ตจะถูกแชร์โดยโฮสต์ระยะไกลหลายตัว)
เนื่องจากที่อยู่ภายในทั้งหมดถูกปลอมเป็นหนึ่งสาธารณะจะเป็นไปไม่ได้ที่โฮสต์ภายนอกจะเริ่มการเชื่อมต่อกับโฮสต์ภายในเฉพาะโดยไม่มีการกำหนดค่าพิเศษบนไฟร์วอลล์ (ซึ่งควรเปลี่ยนเส้นทางการเชื่อมต่อไปยังพอร์ตเฉพาะ) แอปพลิเคชันเช่นโทรศัพท์ IP การประชุมทางวิดีโอและบริการที่คล้ายกันต้องใช้เทคนิค NAT traversal เพื่อให้ทำงานได้อย่างถูกต้อง
ที่อยู่สำหรับส่งคืนและพอร์ตการแปล (Rapt) อนุญาตโฮสต์ที่มีการเปลี่ยนแปลงที่อยู่ IP จริงเป็นครั้งคราวยังคงพร้อมใช้งานเป็นเซิร์ฟเวอร์โดยใช้ที่อยู่ IP คงที่ของเครือข่ายในบ้าน โดยพื้นฐานแล้วสิ่งนี้จะช่วยให้การตั้งค่าเซิร์ฟเวอร์สามารถรักษาการเชื่อมต่อได้ แม้ว่านี่จะไม่ใช่วิธีแก้ปัญหาที่ดี แต่ก็อาจเป็นอีกหนึ่งเครื่องมือที่มีประโยชน์ในคลังแสงของผู้ดูแลระบบเครือข่ายเมื่อแก้ปัญหาเกี่ยวกับวิธีกำหนดค่า NAT บนเราเตอร์
การใช้งาน Cisco Rapt คือที่อยู่พอร์ตTranslation (PAT) ซึ่งจับคู่ที่อยู่ IP ส่วนตัวหลายรายการเป็นที่อยู่สาธารณะ สามารถแสดงที่อยู่หลายรายการเป็นที่อยู่ได้เนื่องจากแต่ละรายการถูกติดตามโดยใช้หมายเลขพอร์ต PAT ใช้หมายเลขพอร์ตแหล่งที่มา IP สากลภายในที่ไม่ซ้ำกันเพื่อแยกแยะทิศทางของการถ่ายโอนข้อมูล ตัวเลขเหล่านี้เป็นจำนวนเต็ม 16 บิต จำนวนที่อยู่ภายในทั้งหมดที่สามารถแปลเป็นที่อยู่ภายนอกหนึ่งในทางทฤษฎีสามารถถึง 65536 จำนวนพอร์ตที่แท้จริงที่สามารถกำหนดที่อยู่ IP เดียวได้คือประมาณ 4000 ตามกฎแล้ว PAT จะพยายามรักษาพอร์ตเดิมของ "ต้นฉบับ". หากมีการใช้งานอยู่แล้วการแปลที่อยู่พอร์ตจะกำหนดหมายเลขพอร์ตแรกที่พร้อมใช้งานจากจุดเริ่มต้นของกลุ่มที่เกี่ยวข้อง - 0-511, 512-1023 หรือ 1024-65535 เมื่อไม่มีพอร์ตเพิ่มเติมและมีที่อยู่ IP ภายนอกมากกว่าหนึ่งที่อยู่ PAT จะย้ายไปยังพอร์ตถัดไปเพื่อพยายามจัดสรรพอร์ตต้นทาง กระบวนการนี้จะดำเนินต่อไปจนกว่าข้อมูลที่มีอยู่จะหมด
บริการทำแผนที่ที่อยู่และพอร์ตCisco ซึ่งรวมที่อยู่พอร์ตการแปลเข้ากับแพ็กเก็ต IPv4 ของอุโมงค์ข้อมูลผ่านเครือข่าย IPv6 ภายใน โดยทั่วไปแล้วเป็นทางเลือกที่ไม่เป็นทางการสำหรับ CarrierGrade NAT และ DS-Lite ที่รองรับการแปลที่อยู่ IP / พอร์ต (ดังนั้นจึงรองรับการปรับแต่ง NAT) ดังนั้นจึงหลีกเลี่ยงปัญหาการตั้งค่าการเชื่อมต่อและการบำรุงรักษาและมีกลไกการเปลี่ยนแปลงสำหรับการปรับใช้ IPv6
มีหลายวิธีในการนำการแปลไปใช้ที่อยู่เครือข่ายและพอร์ต ในโปรโตคอลแอปพลิเคชันบางตัวที่ใช้แอปพลิเคชันที่อยู่ IP ที่ทำงานบนเครือข่ายที่เข้ารหัสจำเป็นต้องกำหนดที่อยู่ NAT ภายนอก (ซึ่งใช้ที่ปลายอีกด้านหนึ่งของการเชื่อมต่อ) และนอกจากนี้มักจำเป็นต้องศึกษาและจัดประเภท ประเภทของการส่งสัญญาณ โดยปกติจะทำเนื่องจากเป็นที่พึงปรารถนาในการสร้างช่องทางการสื่อสารโดยตรง (เพื่อให้ข้อมูลไหลผ่านเซิร์ฟเวอร์อย่างราบรื่นหรือเพื่อปรับปรุงประสิทธิภาพ) ระหว่างไคลเอ็นต์สองเครื่องซึ่งทั้งสองอยู่เบื้องหลัง NAT แยกกัน
เพื่อจุดประสงค์นี้ (วิธีกำหนดค่า NAT) ในปี 2003 มีโปรโตคอลพิเศษ RFC 3489 ได้รับการพัฒนาเพื่อให้การส่งผ่าน UDP อย่างง่ายผ่าน NATS วันนี้ล้าสมัยเนื่องจากวิธีการดังกล่าวในปัจจุบันไม่เพียงพอสำหรับการประเมินการทำงานของอุปกรณ์จำนวนมากอย่างถูกต้อง วิธีการใหม่ได้รับการกำหนดมาตรฐานใน RFC 5389 ซึ่งได้รับการพัฒนาในเดือนตุลาคม 2551 ปัจจุบันข้อกำหนดนี้เรียกว่า SessionTraversal และเป็นยูทิลิตี้สำหรับ NAT
แต่ละแพ็กเก็ต TCP และ UDP มีที่อยู่ IP ต้นทางและหมายเลขพอร์ตตลอดจนพิกัดของพอร์ตปลายทาง
เพื่อรับบริการที่เปิดเผยต่อสาธารณะเช่นการทำงานของเมลเซิร์ฟเวอร์หมายเลขพอร์ตเป็นสิ่งสำคัญ ตัวอย่างเช่นพอร์ต 80 เชื่อมต่อกับซอฟต์แวร์เว็บเซิร์ฟเวอร์และ 25 เชื่อมต่อกับเซิร์ฟเวอร์เมล SMTP ที่อยู่ IP ของเซิร์ฟเวอร์สาธารณะก็จำเป็นเช่นกันเช่นที่อยู่ไปรษณีย์หรือหมายเลขโทรศัพท์ พารามิเตอร์ทั้งสองนี้ต้องเป็นที่รู้จักอย่างน่าเชื่อถือสำหรับทุกโหนดที่ตั้งใจจะสร้างการเชื่อมต่อ
ที่อยู่ IP ส่วนตัวมีผลเฉพาะในเครือข่ายท้องถิ่นที่ใช้เช่นเดียวกับพอร์ตโฮสต์ พอร์ตเป็นจุดสิ้นสุดการสื่อสารที่ไม่ซ้ำกันบนโฮสต์ดังนั้นการส่งผ่าน NAT จึงได้รับการสนับสนุนโดยใช้พอร์ตรวมและการแมปที่อยู่ IP
PAT (การแปลที่อยู่พอร์ต) อนุญาตความขัดแย้งที่อาจเกิดขึ้นระหว่างสองโฮสต์ที่แตกต่างกันโดยใช้หมายเลขพอร์ตต้นทางเดียวกันเพื่อสร้างการเชื่อมต่อที่ไม่ซ้ำกันในเวลาเดียวกัน