Network address translation
จากวิกิพีเดีย สารานุกรมเสรี
- บทความนี้มีชื่อเป็นภาษาอังกฤษ เนื่องจากยังไม่มีชื่อภาษาไทยที่กระชับ เหมาะสม หรือไม่รู้วิธีอ่านในภาษาไทย
Network Address Translation (NAT)
เนื้อหา
|
[แก้] บทนำ
ในอดีตเราจำเป็นต้องมี Public IP address เพื่อใช้ในการเชื่อมต่อเข้ากับ Internet เนื่องด้วยในปัจจุบันการเติบโตของอินเทอร์เน็ต ขยายเพิ่มขึ้นอย่างต่อเนื่อง และในการเติบโตของอินเทอร์เน็ต ทำให้ Public IP Address ที่มีอยู่เดิมแล้วนั้นไม่เพียงพอต่อการใช้งาน ดังนั้น NAT จึงเป็นตัวช่วยหนึ่งในการจัดสรร IP Address ให้เพียงพอในแต่ละองค์กร ให้สามารถใช้ private IP เชื่อมต่อและใช้งานอินเทอร์เน็ตได้ และเพิ่มความปลอดภัยในเครื่อข่ายอีกด้วย การแบ่ง IP Address นั้นไม่มีเพียงแต่การทำด้วยวิธีการ NAT เท่านั้นแต่ยังมีการทำด้วย VLSM ,SubNetmark
NAT เป็นตัวแรกที่มีชื่อเสียงในการแก้ไขการขาดแคลน IPv4 และช่วยแทนที่ Private Address ที่ใช้งานภายในให้กลายเป็น Public Address ที่ใช้ติดต่อสู่โลกอินเทอร์เน็ตได้ ซึ่งเร้าเตอร์ในเครือข่ายอินเทอร์เน็ตต้องใช้ Public Address จึงจะส่งเร้าต์แพ็ตเก็ตกลับมาได้
NAT เหมาะสำหรับภายในบ้าน และหน่วยงานองค์กร สำหรับเชื่อมต่ออินเทอร์เน็ต โดยที่เครื่องลูกข่ายไม่จำเป็นต้องการออกไปภายนอกเครือข่ายพร้อม ๆ กันในเวลาเดียวกัน NAT เพิ่มความปลอดภัยเครือข่ายภายในด้วยการแปลงเลข IP ทราฟฟิกภายนอกทั้งหมด ก่อให้เกิดจากการทำงานของ gateway
[แก้] คำศัพท์เกี่ยวกับ NAT
- Non-Routable Address = IP address ที่อยู่ในช่วงที่ถูกสำรองไว้ ตาม RFC 1597 เพื่อใช้สำหรับ private network ได้แก่ 10.x, 172.16.x - 172.31.x, 192.168.x หรือมักจะถูกเรียกอีกอย่างว่าเป็น private IP address (ไอพีที่ไว้ใช้ในเครือข่ายภายในองค์กรเท่านั้น)
- NAT Device = อุปกรณ์ที่สามารถทำ network address translation ได้ เช่น Checkpoint Firewall, Linux box, Cisco 675 DSL router
- Outbound Mode = การที่ NAT device ทำงานในลักษณะที่แปลง inside IP address ไปเป็น outside IP adrress และไม่ยอมให้ external side เป็นฝ่ายเริ่มการส่ง packet เข้ามาให้ภายในแครือข่ายก่อน
- Bi-directional Mode = เมื่อ NAT device อนุญาตให้ external side สามารถเป็นฝ่ายเริ่มต้นส่งข้อมูลเข้ามายัง internal side ได้ โดย NAT จะทำการแปลง พอร์ตและ/หรือ IP address การแปลงหมายเลขพอร์ต เรียกกันอีกอย่างว่า Port Address Translation (PAT)
- DHCP Server มาจาก Dynamic Host Configuration Protocol ซึ่งทำหน้าที่จ่าย IP ให้แก่เครื่องลูก (clients) โดยอัตโนมัติ สำหรับเน็ตเวอร์ที่มีเครื่องลูกหลายเครื่อง การกำหนด IP ให้แต่ละเครื่องบางครั้งก็ ยากในการจดจำ ว่ากำหนด IP ให้ไปเป็นเบอร์อะไรบ้างแล้ว พอมีเครื่องเพิ่มเข้ามาในเน็ตเวอร์กใหม่ ต้องกลับไปค้น เพื่อจะ assign เบอร์ IP ใหม่ไม่ให้ซ้ำกับเบอร์เดิม DHCP Server จะทำหน้าที่นี้แทน โดยเครื่องลูกเครื่องไหนเปิดเครื่อง ก็จะขอ IP มายัง DHCP Server และ DHCP Server ก็จะกำหนด IP ไปให้เครื่องลูกเอง โดยไม่ซ้ำกัน
[แก้] ขั้นตอนในการทำงานของ NAT
เริ่มต้นการทำงานของ NAT จะเริ่มสร้างตารางภายในขึ้นมาหนึ่งตารางเพื่อไว้ใช้ในการเก็บหมายเลขไอพีแอดเดรส ของเครื่องภายในเครือข่ายที่ส่งแพ็กเก็ต ผ่าน NAT device และต่อมาจะสร้างตารางไว้สำหรับเก็บหมายเลขพอร์ต (port number) ที่ถูกใช้ไปโดย outside IP address และเมื่อมีการส่งแพ็กเก็ต จากเครือข่ายภายในไปยังเครอข่ายภายนอก NAT device จะมีกระบวนการทำงานเมื่อต้องส่งแพ็กเก็ตดังนี้
- NAT จะบันทึกข้อมูล source IP adress และ source port number ไว้ในตารางที่เกี่ยวข้อง (NAT Table)
- NAT จะแทนที่ IP ของ packet ด้วย IP ขาออกของ NAT device เอง
- NAT จะ assign หมายเลขพอร์ตใหม่ให้กับ packet และบันทึกค่าพอร์ตนี้ไว้ในตาราง และกำหนดค่านี้ลงไปใน source port number ของ packet นั้น
- จากนั้นจะคำนวณหา IP, TCP checksum อีกครั้งเพื่อตรวจสอบความถูกต้อง
และเมื่อ NAT device ได้รับ packet ย้อนกลับมาจาก external network นั่นก็คือ Internet มันจะตรวจสอบ destination port number ของ packet นั้นๆ แล้วนำมาเปรียบเทียบกับข้อมูล source port number ในตารางที่บรรจุข้อมูลไว้ ถ้าเจอข้อมูลที่ตรงกันมันก็จะเขียนทับ destination port number, destination IP address ของ pakcet นั้นๆ แล้วจึงส่ง packet นั้นไปยังเครื่องอยู่ภายในเครือข่ายภายในที่เป็นผู้สร้าง packet นี้ขึ้นมาในครั้งแรก
[แก้] คุณสมบัติของอุปกรณ์ NAT
อุปกรณ์เครื่อข่าย หรือโปรแกรมที่ใช้ในการทำ NAT จะต้องมีความสามารถในการทำงานต่างๆ เหล่านี้คือ
- สามารถกำหนดหมายเลขไอพีแอดเดรสได้ (Transparent address assignment)
- สามารถส่งผ่านแพ็กเก็ตของข้อมูลที่มีการเปลี่ยนแปลงแอดเดรสได้ (Transparent address routing address transition)
- สามารถเปลี่ยนแปลงข้อมูลของ ICMP payload ได้ (ICMP error message payload translation)
อุปกรณ์ที่สามารถทำ NATได้ ได้แก่ เร้าเตอร์ ไฟร์วอลล์ เป็นต้น โดยมีลักษณะแบ่งการทำงานกว้าง ๆ เหมือนกันก็คือ
[แก้] สามารถกำหนดหมายเลขไอพีแอดเดรสได้ (Transparent address assignment)
อุปกรณ์ที่จะทำ NAT นั้นต้องสามารถทำการเปลี่ยน IP Address ภายในเครือข่ายเพื่อให้สามารถติดต่อสื่อสารกับโลกอินเทอร์เน็ตได้
[แก้] ในการเปลี่ยนแปลงค่าไอพีแอดเดรสสามารถทำได้ดังนี้
[แก้] Static NAT
เป็นการทำ NAT แบบหนึ่งต่อหนึ่ง (One to One) คือ การกำหนดให้มีการแมปหมายเลข Private Address ที่อยู่ในเครือข่ายภายใน หนึ่งเบอร์จะถูกแทนที่ออกไปเป็นหมายเลข Public Address หนึ่งเบอร์ เมื่อทำการเชื่อมต่ออินเทอร์เน็ตและหมายเลขไอพีแอดเดรสจะเป็นหมายเลขที่มีค่าคงที่ไม่เปลี่ยนแปลง
รูปที่ 1 เป็นการทำงานแบบ Static NAT
[แก้] Dynamic NAT
เป็นการทำ NAT แบบหลายๆ แอดเดรสต่อหนึ่งแอดเดรส (Many to One) ก็คือ การสร้าง NAT Pool ขึ้นมาหนึ่ง Pool เพื่อมาแชร์แอดเดรส ใน Pool นั้นจะมี IP Address หลายเบอร์ เมื่อแพ็กเก็ต IP ที่มี Private Address ต่าง ๆ จากภายในเครื่อข่ายวิ่งผ่านอุปกรณ์ที่ทำ NAT เข้ามา แพ็กเก็ต IP แรกที่ผ่านเข้าจะถูกแทนที่ด้วยเครื่อข่ายด้วยแอดเดรสใน Pool แอดเดรสหนึ่ง แพ็กเก็ต IP ต่อมาก็จะถูกแทนที่ด้วยอีดแอดแดรสต่อมาที่อยู่ใน Pool นั้น การแทนที่นี้จะทำไปเรื่อยๆ ซึ่งจะทำให้ Private Address ที่จะติดต่อกับเครื่อข่ายอินเทอร์เน็ตก็จะมีหมายเลข Public Address ไม่เหมือนกันในแต่ละครั้ง
รูปที่ 2 เป็นการทำงานแบบ Dynamic NAT
Dynamic NAT แบ่งออกเป็น 3 ชนิด
1. many to One คือ มีคอมพิวเตอร์ในเครือข่ายหลายเครื่อง แต่จะใช้ไอพีแอดเดรสเพียงหมายเลขเดียว
2. many to many คือ มีคอมพิวเตอร์หลายเครื่อง และก็มีหมายเลขไอพีแอดเดรสหลายเบอร์เช่นกัน
3. many to many (Overload) โดยเครื่องคอมพิวเตอร์ในเครือข่ายที่เป็น Private IP เมื่อติดต่อไปยังเครือข่ายอื่นๆ จะถูกเปลี่ยนเป็นหมายเลขไอพีแอดเดรสเพียงหมายเลขเดียวแต่มีการเปลี่ยนแปลงหมายเลขพอร์ตต้นทางในการเชื่อมต่อแทน เป็นการทำงานของการทำ PAT
[แก้] Port Address Transtation (PAT) หรือ NAT Overloading
เป็นการทำ NAT โดยการใช้ IP Address เดียวในการแชร์สำหรับทุกๆ Private Address โดยอุปกรณ์ที่ทำ NAT จะใช้หมายเลข TCP Port เป็นตัวในการแบ่งแยก Private Address
[แก้] สามารถส่งผ่านแพ็กเก็ตของข้อมูลที่มีการเปลี่ยนแปลงแอดเดรสได้ (Transparent address routing address transition)
เนื่องด้วยอุปกรณ์ที่จะใช้ในการทำ Nat นั้นจะทำการเปลี่ยนแปลงหมายเลขแอดเดรส 2 ระบบ คือ Private Address และ Public Address เพื่อให้การทำงาน NAT ทำงานได้อย่างมีประสิทธิภาพ ควรคำนึงถึงสิ่งที่ไม่ขัดต่อการทำงานของระบบหมายเลขไอพีแอดเดรส และต้องไม่ทำให้การรับส่งข้อมูลและหาเส้นทางนั้นเป็นปัญหา โดยสิ่งที่ควรระวังในการใช้อุปกรณ์ NAT คือการป้องกันการส่งข้อมูลข้ามเครือข่าย (ไม่ว่าจะส่งข้อมูลจากภายในเครือข่ายออกไปยังนอกเครือข่าย หรือจากเครือข่ายภายนอกส่งข้อมูลเข้ามายังเครือข่ายภายใน)
การทำงานในการเปลี่ยนหมายเลขไอพีแอดเดรสมีการทำงานอยู่ 3 ขั้นตอนหลักคือ
1. กระบวนการจับคู่หมายเลขไอพีแอดเดรส (address binding)
ขั้นตอนนี้เป็นขั้นตอนที่อุปกรณ์ NAT ทำการเก็บหมายเลข Private IP มาเก็บไว้ใน Nat table หรือ Nat Pool แล้วทำการแปลงหมายเลข Private IP ให้เป็น Public Address หรือทำการแปลง Public Address ให้เป็น Private IP ซึ่งในการแปลงหมายเลขนี้สามารถทำได้ทั้งแบบ Static และ Dynamic และการเปลี่ยนหมายเลขไอพีแอดเดรสนั้นไปเรื่อย ๆ จนกว่าจะปิดการเชื่อมต่อ
การทำงานจะเริ่มต้นตั้งแต่การเชื่อมต่อ (ซึ่งบ้างกรณีที่ยังไม่มีการเชื่อมต่อกันมาก่อน) โดยที่เครื่องจะส่งข้อมูลหมายเลขไอพีของเครื่องตัวเองผ่านไปให้ยังอุปกรณ์ NAT อุปกรณ์ก็จะทำการจับคู่กำหนดหมายเลขไอพีแอดเดรสให้ใหม่คร้งหนึ่งและทำการเก็บข้อมูลหมายเลขไอพีแอดเดรสนั้นไว้
2. การทำงานขณะมีการเชื่อมต่อกันแล้ว (address lookup and translation) หลังจากที่ session มีการเชื่อมต่อกันแล้ว เมื่อการส่งข้อมูลถัดๆ มาจะมีการเปลี่ยนแปลงหมายเลขไอพีแอดเดรสโดยใช้วิธีการค้นหาในหน่วยความจำว่าเคยจับคู่กับหมายเลขไอพีแอดเดรสอะไร
3. การทำงานเมื่อสิ้นสุดการเชื่อมต่อ (address unbinding) เป็นกระบวนการที่เกิดขึ้นเมื่อเกิดการสิ้นสุดการเชื่อมต๋อกับอินเตอร์เน็ดแล้ว โดยอุปกรณ์ NAT จะมีกระบวนการในการตรวจจับว่ามีการสิ้นสุด session ของคู่ไอพีแอดเดรสนั้นๆ หรือไม่ ซึ่งถ้ามีการสิ้นสุดแล้วกระบวนการตรวจจับจะลบข้อมูลการจับคู่ของคู่นั้นออกจากหน่วยความจำ
[แก้] สามารถเปลี่ยนแปลงข้อมูล ICMP payload ได้ (ICMP error message payload translation)
การทำงานในเครือข่าย TCP/IP นั้นเมื่อเกิดการทำงานที่เกิดการผิดปรกติหรือผิดพลาดเกิดขึ้นในระบบ จะทำให้มีการส่งรายละเอียดต่าง ๆ ไปกับ แพ็กเก็ต ICMP ซึ่งการใช้งานของ NAT และถ้าเกิดข้อผิดพลาดหรือผิดปรกติในเครือข่ายเกิดขึ้น ตัวอุปกรณ์ NAT ต้องสามารถเปลี่ยนแปลงข้อมูลในแพ็กเก็ต ICMP ให้เป็นข้อมูลที่ถูกต้องด้วย เช่น Destination Unreachable , Source-Quench , Time-Exceed และ Parameter-Problem แต่ NAT ไม่ควรเปลี่ยนแปลงข้อมูลใน Redirect Message
การเปลี่ยนแปลงค่าในแพ็กเก็ต ICMP นั้นจะหมายรวมถึงค่าของหมายเลขไอพีแอดเดรสต้นทางใน ICMP payload ด้วย ซึ่งก็หมายความว่าต้องเปลี่ยนค่า checksum ทั้งใน ICMP header และ IP header ด้วย
[แก้] ความง่ายในการดูแลเครือข่ายที่ใช้ NAT
- เนื่องจากเราสามารถใช้ non-routable address ในเครือข่ายภายใน ซึ่งสามารถใช้ได้อย่างมากมาย จึงทำให้ลดค่าใช้จ่ายสำหรับ routable address ลงไปได้
- สามารถแบ่งเครือข่ายที่มีขนาดใหญ่ให้เล็กลงได้อย่างง่ายเพียงแค่ใช้การกำหนดหมายเลขไอพีแอดเดรส และการเพิ่มเข้า- ลดออกของเครื่องคอมพิวเตอร์ในเครือข่ายก็ไม่มีผลกระทบต่อระบบ
- NAT device รุ่นใหม่ๆ สามารถทำหน้าที่เป็น DHCP server ได้ด้วย
- NAT device บางยี่ห้อ สามารถจำกัดการเข้าถึงอินเทอร์เน็ตได้ เช่นให้ใช้เฉพาะ HTTP เท่านั้น
- มี traffic logging คือมีการบันทึกข้อมูลลงล็อกไฟล์ ทำให้สามารถตรวจสอบรายงานการใช้งานได้ และใช้ตรวจสอบเมื่อเครือข่ายเกิดการผิดปรกติ
- NAT device บางตัวสามารถทำ routing ได้ด้วย ซึ่งทำให้เราสามารถสร้างเครือข่ายที่เป็น sub-network ได้
[แก้] ข้อเสียในการแปลงไอพีแอดเดรสด้วย NAT
1. ทำให้ยากต่อการติดตามที่มาของ ไอพีแอดเดรส หรือผู้ใช้บนบริการ อินเทอร์เน็ต เนื่องจากผู้ที่ติดต่อเข้ามานั่นแม้ว่าจะใช้ ไอพีแอดเดรส ที่ถูกต้อง แต่เนื่องด้วยหมายเลขทำการแปลง แอดเดรส โดย NAT จึงไม่สามารถตรวจสอบได้ว่าเครื่องใดเป็นผู้เข้ามาใช้งานภายในอินเทอร์เน็ต อย่างแท้จริง ดังนี้เป็นเพราะคอมพิวเตอร์ทุกเครื่องภายในองค์กร เมื่อสื่อสารผ่าน NAT จะมีการใช้ ไอพีแอดเดรส ที่ถูกต้องตัวเดียวกัน นั่นเองหรือเปลี่ยนหมายเลขไอพีแอดเดรสทำให้เครื่องภายในเครือข่ายสามารถใช้หมายเลขไอพีแอดเดรสเดียวกันก็ได้
2. เส้นทางการสื่อสารกับโลกภายนอก อย่าง เช่น อินเทอร์เน็ต จะต้องเกิด ช่วงหน่วงเวลา หรือที่เรียกว่า Delay เนื่องจากทุกๆ แอดเดรส ภายในเครือข่ายขององค์กร จะต้องได้รับการแปลงให้เป็น ไอพีแอดเดรส อย่างถูกต้องเสียก่อน หากมีการติดต่อกับอินเทอร์เน็ต ทีเดียวพร้อมๆกัน หลายๆเครื่อง ก็อาจเกิดปัญหาติดขัดได้ แม้จะไม่มากนักก็ตาม จึงทำให้การทำงานเกิดการติดขัดบ้างเป็นบ้างช่วงเวลาเมื่อเครื่องภายในเครือข่ายต้องการติดต่อกับอินเทอร์เน็ตพร้อม ๆ กัน


