บทความชุดนี้เป็นบทความเชิงเทคนิคอย่างง่าย เพื่อปูพื้นฐานทุกท่านให้เข้าใจถึงปัญหาที่โลกอินเทอร์เน็ตกำลังประสบ, ผลกระทบที่เราจะพบ, และการเปลี่ยนผ่านไปยังเทคโนโลยีใหม่ ถ้าใครยังไม่ได้อ่านตอนแรกแนะนำให้กลับไปอ่านก่อนครับ
รู้จักกับ NAT
ทุกวันนี้ถ้าใครสังเกตอาจจะพบว่าคอมพิวเตอร์ที่เราใช้งานอยู่มักได้หมายเลขไอพีคล้ายๆ กันไม่ว่าทำงานอยู่ที่ไหน โดยมักเป็นหมายเลข 192.168.xxx.xxx หรือ 10.xxx.xxx.xxx หมายเลขเหล่านี้เป็นหมายเลขที่ถูกกำหนดไว้ล่วงหน้าว่าหน่วยงานใดๆ สามารถใช้เป็นการภายในได้โดยไม่ต้องกำหนดหมายเลขล่วงหน้า แต่เนื่องจากหน่วยงานต่างๆ สามารถใช้หมายเลขเหล่านี้ซ้ำไปมาได้อย่างอิสระ การเชื่อมต่อระหว่างหน่วยงานงานจำเป็นต้องมีหมายเลขไอพีที่ได้รับการจัดสรร เพื่อให้เป็นหมายเลขอ้างอิงข้ามเครือข่ายอินเทอร์เน็ตได้
ในโลกอินเทอร์เน็ตนั้นนอกจากจะมีหมายเลขไอพีที่เปรียบเสมือนที่อยู่ของเราบนอินเทอร์เน็ตแล้ว เครื่องทุกเครื่องยังมีพอร์ตเพื่อแยกข้อมูลที่แอพพลิเคชั่นต่างๆ รับส่งออกจากกัน เปรียบเสมือนเราใส่ชื่อในการจ่าหน้าซองหมาย ที่แม้จะมีผู้รับหลายคนในที่อยู่เดียวกันก็ยังคงสามารถส่งข้อมูลไปถึงปลายทางได้ โดยแต่ละหมายเลขไอพีจะมีพอร์ตได้ถึง 65535 พอร์ต
ระบบ Network Address Translation หรือ NAT อาศัยจำนวนพอร์ตสำหรับแต่ละไอพีที่มีอยู่จำนวนมาก มาแจกจ่ายให้แต่ละไอพี ทำได้โลกภายนอกสามารถติดต่อกับเครื่องจำนวนมากในเครือข่ายได้โดยอาศัยหมายเลขไอพีเดียวกัน เปรียบเสมือนระบบไปรษณีย์ภายในคอนโด ที่หากเจ้าหน้าที่คอนโดสามารถจำได้ว่าใครอาศัยอยู่ในห้องไหนบ้าง คนภายนอกก็จะสามารถติดต่อกับคนที่อาศัยอยู่ในคอนโดนั้นได้โดยไม่ต้องระบุหมายเลขห้อง เพียงแค่ระบุชื่อให้ถูกต้องเจ้าหน้าที่ก็จะนำจดหมายไปส่งให้เอง
ระบบ NAT มีข้อจำกัดสำคัญคือมันถูกออกแบบมาเพื่อให้เครื่องที่อยู่ภายในองค์กร เปิดการเชื่อมต่อไปยังเครื่องที่อยู่ภายนอก โดยเมื่อมีการขอเปิดการเชื่อมต่อครั้งแรก เราท์เตอร์ที่รองรับ NAT จะให้หมายเลขพอร์ตจากไอพีที่ได้รับการจัดสรรมา แล้วใช้หมายเลขไอพีและพอร์ตนั้นๆ แม้จะมีความพยายามในการแก้ปัญหาเพื่อให้หมายเลขไอพีภายในสามารถเปิดรับข้อมูลจากภายนอกโดยไม่ต้องเปิดการเชื่อมต่อไปก่อนได้บ้าง แต่ก็ไม่สมบูรณ์นัก โดยเฉพาะเมื่อเครื่องทั้งสองด้านเป็นเครื่องที่อยู่หลัง NAT ทั้งคู่
ผลกระทบหลังจาก IPv4 หมดโลก
ทุกวันนี้เมื่อเราเชื่อมต่อเข้ากับผู้ให้บริการอินเทอร์เน็ต เรามักได้รับหมายเลขไอพีเป็นหมายเลขไอพีที่ได้รับการจัดสรรมา (บางคนเรียกว่า "ไอพีจริง") แต่เนื่องจากหมายเลขไอพีเหล่านี้หมดลง ผู้ให้บริการไม่สามารถขอจัดสรรหมายเลขไอพีเหลา่นี้เพิ่มเติมได้ ขณะที่หน่วยงานหลายแห่งต้องการเปิดให้บริการที่ต้องรับการเชื่อมต่อจากทุกคนได้ (เช่นเว็บเซิร์ฟเวอร์ของ Blognone) ทำให้บริการเหล่านี้ต้องการหมายเลขไอพีที่ได้รับการจัดสรร ค่าขอหมายเลขจะเพิ่มขึ้นตามลำดับเวลา ขณะที่การเติบโตของผู้ใช้อินเทอร์เน็ตตามบ้านเพิ่มขึ้นอย่างต่อเนื่อง ผู้ให้บริการอินเทอร์เน็ตจะไม่มีทางเลือกอื่นนอกจากหยุดให้หมายเลขไอพีที่ได้รับการจัดสรรมานี้กับผู้ใช้ตามบ้าน แล้วให้หมายเลขไอพีภายในที่เชื่อมต่อ
ทุกวันนี้เองหน่วยงานที่เคยได้รับหมายเลขไอพีจำนวนมากและเคยคิดว่ามากเกินพอ เช่น ม. เกษตรศาสตร์ที่ได้รับมาถึง 65535 หมายเลขนั้นก็เริ่มประสบปัญหาหมายเลขไอพีไม่พอ และต้องจ่ายหมายเลขไอพีภายในให้กับผู้ใช้งานบางส่วน
การใช้งานอินเทอร์เน็ต "ทั่วๆ ไป" ที่เราใช้งานกันเช่นเข้าเว็บ หรือเช็คอีเมลนั้นจะสามารถใช้งานต่อไปได้อีกยาวนานอย่างไร้ปัญหา แต่การใช้ไอพีภายในเป็นวงกว้างนั้นทำให้หลายครั้งที่เราเชื่อมต่อผ่านเราท์เตอร์ จะกลายเป็นเรากำลังอยู่ภายใต้หมายเลขไอพีภายในซ้อนกันหลายชั้น
แม้การทำ NAT ซ้อนกันหลายชั้นไม่สร้างปัญหาการเชื่อมต่อเข้ากับบริการที่มีหมายเลขไอพีที่ได้รับจัดสรรมาแต่อย่างใด โดยอาจจะมีปัญหาเรื่องความเร็วไปบ้าง แต่อุปกรณ์เครือข่ายรุ่นใหม่ๆ ก็ประมวลผล NAT ได้เร็วขึ้นมาก แต่ปัญหาที่สำคัญคือการเชื่อมต่อตรงระหว่างเครื่องต่างๆ ในอินเทอร์เน็ต โดยเครื่องที่อยู่ภายใต้ระบบ NAT ที่ซับซ้อนมีโอกาสจะมีปัญหาไม่สามารถเชื่อมต่อถึงกันโดยตรงได้สูงมาก โดยงานวิจัยในหมวดการส่งข้อมูลถึงกันโดยตรงหรือ NAT Transversal ยังเป็นหัวข้อที่มีการวิจัยอย่างต่อเนื่องจนถึงปัจจุบัน โดยมีมาตรฐานบางอันได้รับความนิยมขึ้นมาบ้างเช่น UPnP ที่เราท์เตอร์ตามบ้านมักรองรับเป็นอย่างดี แต่ก็ไม่มีการรับรองใดๆ ว่ามันจะทำงานได้ในเครือข่ายที่มีการทำ NAT ซ้อนกันไปมาหลายชั้น
ปัญหาสำคัญของการไม่สามารถส่งข้อมูลถึงกันโดยตรงได้เช่นนี้ จะสร้างปัญหาให้กับแอพพลิเคชั่นบางประเภทเช่น VoIP ที่ปรกติแล้วเซิร์ฟเวอร์ทำหน้าที่เพียง "นัดหมาย" คู่สายสองข้างให้เชื่อมต่อกัน แต่หลังจากนั้นทั้งสองข้างจะส่งข้อมูลถึงกันโดยตรง บริการเช่น Skype นั้นอาศัยผู้ใช้ระบบของ Skype เองที่มีหมายเลขไอพีที่ได้รับการจัดสรรมา ให้ทำตัวเป็น Super Node เพื่อส่งข้อมูลให้กับผู้ใช้คนอื่นๆ ของ Skype ที่อยู่ในเครือข่ายหลัง NAT แต่เมื่อเครือข่ายจำนวนมากเริ่มเป็น NAT มาขึ้นเรื่อยๆ เครื่องที่จะทำหน้าที่ Super Node นั้นก็จะหาได้ยากขึ้นเรื่อยๆ เพิ่มค่าใช้จ่ายให้กับบริษัทเช่น Skype ที่จะต้องหาเครื่องมาวางเพื่อทำหน้าที่ส่งต่อข้อมูลโดยตรง
บริการอีกอย่างหนึ่งที่มีปัญหาคือ BitTorrent ที่ต้องการการเชื่อมต่อโดยตรงระหว่างเครื่องในเครือข่าย โดย BitTorrent นั้นอาศัยการ "ประกาศ" ที่อยู่และหมายเลขพอร์ตสำหรับรับการเชื่อมต่อจากเครื่องอื่นๆ ในเครือข่าย หากคอมพิวเตอร์ในเครือข่ายไม่สามารถกำหนดพอร์ตเพื่อรอการเชื่อมต่อขาเข้าได้แล้ว การสร้างเครือข่ายเพื่อแชร์ไฟล์ระหว่างกันก็จะทำไม่ได้
ตอนต่อไป ผมจะพูดถึง IPv6 ปัญหาระหว่างการเปลี่ยนผ่าน และฟีเจอร์ที่เราจะได้รับ
อย่างหลังสุดนี่คงพอทำให้หลายๆ
KimhunCPE Sat, 02/05/2011 - 04:27
อย่างหลังสุดนี่คงพอทำให้หลายๆคนเดือดร้อนได้บ้าง
"เดือดร้อนกันถ้วนหน้า"
kswisit Sat, 02/05/2011 - 08:41
In reply to อย่างหลังสุดนี่คงพอทำให้หลายๆ by KimhunCPE
"เดือดร้อนกันถ้วนหน้า" นะครับผมว่า ฮ่าๆ
ถ้ามัน NAT กันหลายชั้น มันจะมีปัญหากับพวก VPN อย่าง PPTP หรือเปล่าหว่า
เหมือนว่า VPN ค่อนข้างมีปัญหากับ NAT
L2TP IPSec ช่วยได้ครับ แต่บน
icez Sat, 02/05/2011 - 12:25
In reply to "เดือดร้อนกันถ้วนหน้า" by kswisit
L2TP IPSec ช่วยได้ครับ
แต่บน windows ต้องแก้ registry ให้รองรับ nat traversal ด้วย
ทั้ง PPTP, L2TP ต้องการ
sf_alpha Sun, 02/06/2011 - 19:30
In reply to L2TP IPSec ช่วยได้ครับ แต่บน by icez
ทั้ง PPTP, L2TP ต้องการ อุปกรณ์ NAT ที่ support protocol ดังกล่าวโดยเฉพาะถึงจะใช้ได้หลาย session พร้อมกัน ครับ ไม่งั้นสามารถใช้ได้แค่ 1 session ถ้าเกิน มันจะเอ๋อ
รอไม่ไหวแล้ว
hisoft Sat, 02/05/2011 - 04:47
รอไม่ไหวแล้ว
application
jane Sat, 02/05/2011 - 05:47
application ที่ต้องการสื่อสารแบบ peer to peer ใหม่ๆ บนมือถือจะเกิดขึ้นอีกมากมาย
ขอแสดงความคิดเห็น
Iterator Sat, 02/05/2011 - 10:44
ขอแสดงความคิดเห็น เกี่ยวกับการเปรียบเทียบ กับ เลขที่ห้องของคอนโด
ผมไม่รู้ว่าที่อื่นเป็นแบบไหนแต่น่าจะเป็นแบบเดียวกัน แต่คอนโดมีบ้านเลขที่ ที่เหมือนบ้านทั่วไป
ที่ตู้ไปรษณีย์คอนโดผมก็เป็น บ้านเลขที่ ซึ่งถ้าเทียบกับสารบบ บ้านเลขที่ของประเทศไทย กับระบบ
ip คอนโดผมก็น่าจะเรียกได้ว่า มี ip จริง
แต่ที่สังเกตคือ คอนโดผม จะใช้ เลขทับ แยกย่อยลงไปจากเลขที่ เช่น ห้อง 88/51 กับ 88/52
เป็นห้องอยู่ถัดๆกัน (ซึ่งจะมองว่า หลังทับเทียบเป็นเลข port ก็พอได้ แต่ระบบนี้น่าจะใช้กับ
บ้านทั่วไปอื่นๆ ได้ด้วยในระบบบ้านเลขที่ของไทย )
กรณีนี้ถ้าเป็นหอพักอาจจะชัดเจนกว่า
ความเห็นอื่น ๆ ครับ
ในมุมมองผู้พัฒนาโปรแกรม การมี NAT ทำให้ผู้พัฒนาโปรแกรมมีความยุ่งยากมากขึ้นและถือเป็น
"ของจริง" สำหรับการทำ network application ที่ต้องจำเป็นในการ กระจายไปสู้ผู้ใช้ รายย่อย
อย่างแท้จริง
สมัยผมเรียนที่มหาวิทยาลัย (นานมาแล้วไม่รุ้ตอนนี้สอนหรือยัง) หรือแม้แต่หนังสือที่สอนกันทั่วไปต่าง ๆ network programming ที่เรียนมักจะเป็นแบบที่ใช้ ip เอาเข้าจริงถ้าจำเป็นต้องเขียน application ติดต่อกันระหว่างเครื่อง
หลัง NAT เรื่องมันก็ไม่ง่ายเหมือนที่ได้เรียนมา
ชักจะอยากรู้มุมมองของผู้เชี่ยวชาญ ด้าน network ว่าอนาคต โอกาสที่เครื่องจะได้ใช้ ip จริง จะมีมากกว่าเดิมไหม
( ip จริงกันเป็นปกติ )
ผมอ่านไม่รู้เรื่องเลย
tg-thaigamer Sat, 02/05/2011 - 11:01
ผมอ่านไม่รู้เรื่องเลย 55+
แต่พอเข้าใจหลังๆ
(คนเขียนๆดีแต่ผมยังไม่เคยเรียนเกี่ยวับพวกนี้)
" มาแจกจ่ายให้แต่ละไอพี
adente Sat, 02/05/2011 - 22:13
" มาแจกจ่ายให้แต่ละไอพี ทำ(ได้)โลกภายนอกสามารถ" รบกวนด้วยครับ
เน็ตหอผมใช้ NAT
orpheous Sat, 02/05/2011 - 23:10
เน็ตหอผมใช้ NAT ก็โหลดบิตได้นะ
โหลดอะได้ครับ กรณีเป็น
osamagotji Sun, 02/06/2011 - 00:23
In reply to เน็ตหอผมใช้ NAT by orpheous
โหลดอะได้ครับ กรณีเป็น Leacher อะนะ
แต่ถ้าเราเป็น Seeder จะปล่อยไฟล์ให้คนอื่นลำบากครับ เพราะคนอื่นเริ่มการเชื่อมต่อเข้ามาหาเราไม่ได้
ไม่เหมือนกรณีที่เราเป็นคนโหลดไฟล์ที่เราต้องเริ่มเชื่อมต่อไปหาคนอื่นก่อน
กรณีนี้ยังไม่พูดถึงพวก uPnP นะครับ
ยังได้อยู่ แต่ต้อง FW port
Ton-Or Sun, 02/06/2011 - 01:21
In reply to โหลดอะได้ครับ กรณีเป็น by osamagotji
ยังได้อยู่ แต่ต้อง FW port ไงครับ
uPnP มันเหมือนระบบ auto fw port ให้เฉยๆ
อย่างเกมส์บางๆ เกมส์ เวลาไปวางระบบร้าน net ผมยังต้องตั้ง scripts fw port
ไล่ ไป 7001 - 7099 สำหรับแต่หละเครื่องไว้เลยน่ะ
..
การใช้ uPnP
Ford AntiTrust Sun, 02/06/2011 - 11:07
In reply to ยังได้อยู่ แต่ต้อง FW port by Ton-Or
การใช้ uPnP นี่ต้องระวังนะครับ เพราะกิน cpu router สูงพอสมควร อาจทำให้ไม่เสถียรการเปิดอาจทำให้รองรับจำนวนเครื่องได้น้อยลงด้วย และยังไม่รวมเรื่อง security ต่างๆ อีก
การอธิบาย NAT
saknarak Sun, 02/06/2011 - 23:28
การอธิบาย NAT ผมชอบเปรียบเทียบกับเบอร์โทรภายใน กับเบอร์โทรจริง
ทุกองค์กรมีโทรตู้สาขา ที่สามารถกำหนดหมายเลขภายในอย่างไรก็ได้ ไปซ้ำกับองค์กรอื่นก็ได้
เวลาคนใน โทรออกไปเบอร์ข้างนอก คนข้างนอกจะเห็นเป็นเบอร์จริง ไม่ใช่เบอร์ภายใน
จึงไม่สามารถโทรกลับได้ คือโทรกลับก็ไม่รู้เบอร์ต่อภายใน
เครื่องที่อยู่หลัง NAT จึงติดต่อโลกภายนอกได้ แต่โลกภายนอกติดต่อเครื่องที่อยู่หลัง NAT ไม่ได้ ถ้าไม่รู้เบอร์ต่อภายใน
การรู้เบอร์ต่อภายใน ก็เหมือนกับการทำ Port Forwarding ให้โลกภายนอกสามารถติดต่อเครื่องภายในได้โดยตรง
แต่ข้อจำกัดอยู่ที่เบอร์ต่อซ้ำกันไม่ได้ เช่น port 80 จองไว้ให้เครื่อง 1 แล้ว จะใช้ 80 สำหรับเครื่อง2 ไม่ได้อีก
พออ่านรู้เรื่องไหมครับ
อยากให้เพิ่มเรื่อง port
ipas Mon, 02/07/2011 - 01:06
อยากให้เพิ่มเรื่อง port forwarding กับ port triggering ด้วยครับ
ไม่ทราบว่า ใช่อยู่ในเรื่อง NAT หรือเปล่าครับ ?
รู้สึกว่ามันเป็นเรื่องที่
khajochi Mon, 02/07/2011 - 10:14
รู้สึกว่ามันเป็นเรื่องที่ "ต้องรู้" แฮะ สำหรับคนทำงานไอทีในยุคนี้ เหมือนปัญหา Y2K สมัยก่อน
แล้วการใช้ NAT
nununu Tue, 02/08/2011 - 11:37
แล้วการใช้ NAT ซ้อนกันหลายๆครั้ง
มีผลทำให้ ping ในเกมออนไลน์สูงขึ้นด้วยไหมครับ?
มีครับ
hisoft Tue, 02/08/2011 - 21:07
In reply to แล้วการใช้ NAT by nununu
มีครับ
เขียนมาเยอะๆเลยนะครับ
iammeng Mon, 02/21/2011 - 09:33
เขียนมาเยอะๆเลยนะครับ ชอบอ่าน
เหมือนกับว่าที่เคยเรียนมาจะไม่มี(อาจจะมีแต่ไม่รู้ตัว)
หรือไม่ละเอียดและทันสมัยเท่านี้
ได้ทบทวนตัวเองไปด้วย อิอิ