TP-Link Omada Cloud จัดการระบบ Network และ ระบบ CCTV ผ่าน Cloud
- ไม่มีสินค้าในตะกร้าของคุณแล้ว
- จัดส่ง
- รวมทั้งสิ้น ฿0.00
หลักการทำงานของ NAT
หลักการทำงานของ NAT
เรื่อง NAT นี้ ตอนผมสอบ CCNA เลยต้องพยายามทำความเข้าใจอย่างละเอียดหน่อย สอบเสร็จ พอเลย เพราะอุปกรณ์ Router สมัยนี้มันก็ Config กันง่ายๆ. ทีนี้จะมาเขียนบทความเลยต้องขุดขึ้นมาซักหน่อย ผมจะพยายามยกตัวอย่างให้อ่านเข้าใจง่ายๆ ผิดพลาดตรงไหน รบกวนช่วยแจ้งให้ผมทราบด้วยนะครับ
NAT คืออะไร
มันย่อมาจาก Network Address Traslation ครับ จบ..
ยังๆๆ
ถ้าท่านใดอายุอานามค่อนข้างมาก แบบแก่อ่ะ เหมือนแอดมิน 555 เอาแบบยังไม่ค่อยมีใครใช้อุปกรณ์ที่เรียกว่า Router เพราะเวลานั้นการจะซื้อมาใช้คือต้องรวยพอสมควร
ยุคนั้น เวลาเราจะใช้ Internet ต้องมีตัว Modem ต่อเข้ากับตัว PC ทำการสร้าง Connection Dial-Up ขึ้นมา พอ Connect ได้ เครื่องเราก็เชื่อมต่อ Internet ผ่าน ISP ได้
ลักษณะแบบนี้ เครื่องเราออก Internet แบบ 1:1 จะมีเรา (Client 1 เครื่อง) กับ ISP โดยจะมี IP-Address ที่ Client เราเป็น Public-IP อาจจะเล่น mirc, pirch32 หรือเข้า Website เชื่อมต่อกับ IP ต่างๆ (Web Server ก็ต้องมี IP-Address ครับ แต่จะมี DNS คอยทำการ Map ว่าชื่อ Website นี้คือ IP-Address อะไร เพราะถ้ามาจำ Web เป็น IP-Address ใครจะไปจำได้)
** ขอย้ำเรื่องการสื่อสารแบบ TCP/IP จะต้องมี IP-Address เปรียบเหมือนเลขที่บ้าน ที่มีการจดทะเบียนกับกรมการปกครอง ไม่มีเลขที่บ้าน เหมือนส่งพัสดุไม่มีปลายทาง เลข IP-Address ก็เช่นกัน ไม่ได้เป็นเลขที่จะตั้งเองอะไรก็ได้ ต้องมีการจัดสรรจาก IANA โดยเลขจะไม่ซ้ำกันทั้งโลก **
เมื่อเราขูดคูปอง KSC Internet (Internet Service Provider: ISP) สร้าง Dial-Up Connection ใส่ User/Password แล้วทำการ Dial-Up ทาง ISP จะจัดสรร Public-IP หรือจะเรียก IP-WAN มาให้ชุดนึง สมมุติเป็น 20.20.20.20
เข้า Web-Server sysnetcenter.com (สมมุติ IP: 30.30.30.30)
Packet ที่จะส่งจาก Client เราไปหา Server ก็จะมี Packet ประมาณนี้
Source-IP: 20.20.20.20, Destination-IP: 30.30.30.30 และ Data
Web-Server ได้รับข้อมูล ก็จะรู้ว่าใครมาขอ จะได้ส่งกลับไปได้ถูก ตอนจะส่ง ก็กลับข้างจาก Source --> Destination เป็น Destination --> Source เพื่อให้ฝั่ง Client รู้ว่าใครเป็นคนส่งมา
Source-IP: 30.30.30.30, Destination-IP: 20.20.20.20 และ Data
แค่นี้ละครับ การสื่อสารแบบเครื่อง Client เราต่อตรงเข้ากับ ISP
เวลาผ่านไป... มีระบบ Internet ADSL เราสมัครรายเดือน ก็จะได้อุปกรณ์ที่เรียกว่า Router นี้มา เพราะราคามันไม่แพงแล้ว
ข้อดีของอุปกรณ์ Router เราสามารถนำ Client มาต่อหลัง Router ได้หลายๆเครื่อง เป็นสิบเป็นร้อยเป็นพันเครื่อง แต่ IP-Address ที่เราได้มาจาก ISP จะมีชุดเดียว (ขอยกตัวอย่างชุดเดียวนะครับ)
สมมุติ IP ที่ได้จาก ISP มา เป็น 20.20.20.20 และ Client ก็จะต้องมี IP-Address เป็นของตัวเองเช่นกัน เพื่อที่จะสื่อสารบน Protocol TCP/IP ได้
IP-Address ที่เราจะจัดสรรให้เครื่อง Client ที่ต่อหลัง Router นี้ จะเรียกว่า Private-IP หรือเรียก IP-LAN การกำหนดหมายเลข Private-IP นี้ ทำได้ตามใจชอบเลย
แต่.. มันจะมีกติกาในการตั้งหมายเลข Private-IP ไว้อยู่ แนะนำให้ทำตามกติกาครับ ถ้าไม่อยากมีปัญหากับระบบภายหลัง เขาจะมีแนะนำว่า หมายเลข IP ที่จะกำหนดเป็น Private-IP มีชุดอะไรบ้าง
Private-IP นี้เปรียบเหมือนเลขที่ห้องในหอพัก ห้อง 101, 666, 707 แล้วแต่เราจะตั้ง แต่พอเราตั้งเลข IP เองแล้ว Client มันจะไปติดต่อกับ Web-Server ที่เป็น Public-IP อยู่บนเครือข่าย Internet ตรงๆไม่ได้
เพราะ Private-IP เราสามารถกำหนดได้เองที่ตัว Router, Client และ ตัว Router, Client ในโลกมีเป็นล้าน การตั้ง Private-IP มันก็จะซ้ำๆกันเป็นล้านเช่นกัน
สมมุติ ตั้ง IP-Address ให้กับ Client แต่ละเครื่อง
Router = 192.168.1.1
PC#1 = 192.168.1.2
PC#2 = 192.168.1.3
PC#3 = 192.168.1.4
พอเราตั้ง IP-Address หลัง Router เป็นชุด 192.168.1.xx เรียกว่าพิมพ์นิยม ข้างบ้านก็ตั้ง IP-Address แบบนี้แหล่ะ เหมือนเป๊ะๆเลย
แล้วมันจะสื่อสารกับโลกภายนอกยังไง?
1. PC#2 (192.168.1.3) ส่งขอข้อมูลไปที่ Router, ตัว Router หาเส้นทางส่งต่อไปที่ Web-Server ถ้าจะใช้ Private IP ของ PC#2 คือ 192.168.1.3 เป็นชุดของผู้ส่ง, พอ Web-Server ได้รับ มันเห็นว่าข้อมูลชุดนี้ถูกขอมาจาก IP: 192.168.1.3 เวลามันตอบกลับ มันไม่รู้หรอกว่าเป็นบ้านเราหรือข้างบ้านที่เป็นคนขอ
2. เอาใหม่ ถ้าใช้ Public IP ที่ Router เป็นชุดผู้ส่งไปหา Web-Server, Web-Server มันรู้ละ ว่าบ้านนี้เป็นผู้ส่ง คือ 20.20.20.20 ทำการส่งข้อมูลที่ร้องขอมาที่ Router บ้านเรา
จากนั้นตัว Router มันจะรู้ได้ไงว่า Client ไหนเป็นคนขออีก จะส่งไปทุกๆ Client ที่มี PC#1, #2, #3 ก็ไม่น่าใช่
ครับ.. ตัว Router มันต้องทำอะไรซักอย่างก่อนที่จะส่ง Packet ที่มาจาก PC#2 ออกจาก Router ไปยัง Web-Server เพื่อให้ Web-Server รู้ว่าบ้านหลังนี้แหล่ะที่ขอข้อมูล และพอ Web-Server ตอบกลับ ส่งข้อมูลมาถึง Router ที่บ้าน ตัว Router มันก็ต้องรู้อีกว่า ข้อมูลที่ได้มาจาก Webserver นี้ต้องส่งต่อไปที่ Client เครื่องไหน
ลักษณะที่ Router ทำแบบนี้ละครับ เรียกว่าการทำ NAT
จากรูป เป็นการทำ NAT ภายในของ Router ครับ
การทำ NAT เราจะใช้หมายเลข Port แบบสุ่มมาช่วยกันระบุว่า Client เครื่องไหนเป็นผู้ขอ ร่วมกับ IP Address
เพราะถ้าไม่ใช่หมายเลข Port มาร่วมด้วย ตอน Web-Server ส่งกลับมาหา Router แล้วตัว Router จะส่งต่อไปยัง Client มันจะไม่รู้ว่า Client ไหนเป็นผู้ขอข้อมูลจาก Web-Server นี้
การเก็บข้อมูลว่า Client เครื่องไหน ไปที่ไหน มีการสุ่ม Port อะไรขึ้นมาในการช่วยระบุเครื่อง Client มันต้องมีตารางเก็บ จะเป็นการเก็บลงใน RAM ของ Router เป็นตาราง เรียกว่า NAT Table
ใครเข้า Web อะไร ใช้งาน Service ไหน มี Connection อะไร เก็บหมด จะหายก็ต่อเมื่อ Timeout หรือไม่ก็ Connection ปิดแล้ว หรือ ปิด/เปิด Router
ทีนี้ RAM ของ Router มันมีจำนวนจำกัด ถ้ามี Client เยอะๆ ใช้ Service ที่เพิ่มข้อมูลลงไปใน NAT Table มากๆ ไม่ว่าจะ P2P/Bittorrent เพราะต้องเชื่อมต่อหลายร้อย Peer หรือ ต้องคงค้าง NAT ให้อยู่ใน NAT Table นานๆ เช่นพวก VoIP , Video Call พวก Zoom, MS-Team อะไรพวกนี้ ต้องไม่ให้ NAT หายไม่งั้นการเชื่อมต่อหลุด เป็นการตั้งค่าให้มี Timeout มากๆ (ไม่ได้ตั้งเองครับ ระบบมันตั้งให้)
แล้วพอ RAM มันเต็ม NAT ใหม่ๆก็จะเข้ามาไม่ได้ครับ โดนดีดทิ้ง เกิดอาการ LAG ขึ้น หรือเล่น Internet แล้วค้างนั้นแหล่ะ ต้องเดินไปปิด/เปิด Router เพื่อเคลียร์ NAT Table ใหม่ เริ่มกระบวนการเก็บ NAT ใหม่
เพราะฉะนั้น...ถ้าในระบบ Network เรา มีจำนวน Client มากๆ จึงจำเป็นที่จะต้องเลือกใช้งาน Router ที่เหมาะสม ส่วนหนึ่งที่ทำให้ราคา Router ถูกหรือแพง ก็เพราะจำนวนการเก็บ NAT Table ได้มากหรือน้อยนี้แหล่ะครับ
ต่อๆ จากรูปการทำงานของ NAT ภายใน Router ด้านบน
Client --> Router --> Web-Server
Client IP: 192.168.1.3 จะเข้า website พิมพ์ URL ที่ Browser เคาะ Enter ตัว Client ก็จะส่งข้อมูลไปที่ Router พอตัว Router ได้รับข้อมูล ก็จะรู้ว่า Client นี้ขอข้อมูลของ Web-Server IP: 30.30.30.30 ก็จะช่วยจัดการหาเส้นทางและส่งต่อให้ (การที่ Router ช่วยหาเส้นทาง นี้คือภาระกิจหลักของ Router เลยครับ เพราะบนโลก Internet มีเส้นทางไปยังเครื่อง IP ต่างๆมากมาย)
ตัว Router จะทำการสุ่ม Port แปะเข้าไปใน Packet สมมุติสุ่มได้เป็น 51000 จะได้ ส่วน Destination คือจุดหมายปลายทาง Web-Server นั้นแหล่ะครับ
ส่วน Port 443 เป็น Port HTTPS
Source IP: 192.168.1.3:51000 Destination IP: 30.30.30.30:443
Router จัดการ NAT โดยเปลี่ยนข้อมูลใหม่ เอา Public-IP (IP-WAN) ของตัวเองมาเป็น Sourc-IP และแปะ Port 51000 โดยที่ Destionation ยังคงเดิม ส่งไปที่ Web-Server
จะได้
Source IP: 20.20.20.20:51000 Destination IP: 30.30.30.30:443
Web-Server --> Router --> Client
พอ Web-Server ได้รับ ก็จะรู้แล่ะ ว่าใครส่งมา เพราะ Source-IP เป็น Public-IP มันไม่ซ้ำกันบนโลก ก็ทำการประมวลผลตามที่ร้องขอข้อมูล ทำการส่งกลับไปที่ IP 20.20.20.20 มีหมายเลข Port 51000 แปะไปด้วย
จะได้
Source IP: 30.30.30.30:443 Destination IP: 20.20.20.20:51000
Router ได้รับข้อมูลจาก Web-Server ก็ไปค้นหาใน NAT Table (NAT lookup) ใครขอข้อมูล Web-Server นี้โดยใช้ IP+Port+Protocol เป็น Unique key เพราะฉะนั้นยิ่ง CPU เร็วๆ เวลาเราเข้า Internet ก็จะเร็วไปด้วยครับ
พอรู้ละว่า Client เป็นใคร ก็จะทำการ NAT เปลี่ยน Destination-IP เป็น IP-Address ของเครื่อง Client ที่ขอข้อมูล Web-Server มาก่อนหน้า และแปะหมายเลข Port 51000 ไปด้วย
จะได้
Source IP: 30.30.30.30:443 Destination IP: 192.168.1.3:51000
การสื่อสารสมบูรณ์ รู้ว่าขอมาจากใคร และต้องตอบกลับไปให้ใคร อาจจะส่งต่อผ่าน Network Switch หรืออะไรก็ว่ากันไป
แค่นี้ละครับ NAT จริงๆมันก็มีเยอะกว่านี้ มีประเภทของ NAT อีก พวก Full-cone, Restricted-cone อะไรนี้แหล่ะ หรือ Public-IP เดี๋ยวนี้ทาง ISP ก็ไม่ค่อยจะให้ละ เรียกว่า CGNAT (Carrier-Grade NAT) แต่ Router ที่บ้านเราก็ต้องทำ NAT อยู่ดี เพียงแต่ว่ามันมีการ NAT กันมาเรื่อยๆครับ เลยจะมีปัญหาเรื่อง Forward Port อะไรพวกนี้
บทความหน้าจะเกี่ยวกับเรื่อง NAT Traversal ครับ
มีลูกค้าที่เคารพหลายๆท่านบอกให้เขียนพวกทฤษฎีบ้าง เพราะช่วยในการแก้ปัญหา Troubleshooting อุปกรณ์ Network เดี๋ยวนี้การ Config มันไม่ยากแล้ว แต่การแก้ปัญหานี้ซิ บางทีงมเป็นวันๆ 😅
Facebook comment