ในโลกของการสื่อสารเครือข่ายยุคใหม่ การที่อุปกรณ์ส่วนใหญ่เชื่อมต่อผ่าน Network Address Translation (NAT) และ Router ที่ทำหน้าที่เป็น Firewall ได้กลายเป็นเรื่องปกติ แต่เมื่อแอปพลิเคชันบางประเภท เช่น VoIP หรือ FTP ต้องมีการส่งข้อมูล IP address ของตัวเองไปพร้อมกับ Payload ข้อมูลทั่วไป ปัญหาจะเกิดขึ้นเพราะมาตรฐานของ TCP/IP ไม่ได้ถูกออกแบบมาให้รับมือกับการแก้ไขค่าเหล่านั้นโดยอัตโนมัติ นี่คือจุดกำเนิดและความสำคัญของฟังก์ชัน Application Layer Gateway (ALG).
Router ALG คืออะไร? หลักการทำงานเบื้องหลัง NAT
Application Layer Gateways หรือเรียกสั้น ๆ ว่า ALGs เป็นคุณสมบัติขั้นสูงภายในเราเตอร์หรือไฟร์วอลล์อัจฉริยะ หน้าที่หลักของมันไม่ใช่แค่การเปิดพอร์ตตาม Port Forwarding ทั่วไปเท่านั้น แต่มันมีความสามารถในการ ‘ตรวจสอบลึก’ (Deep Packet Inspection – DPI) ไปยังชั้นแอปลิเคชั่นโปรโตคอลเฉพาะเจาะจง เมื่อระบบตรวจพบว่ามี Protocol ใดบ้างที่มีแนวโน้มที่จะฝัง Source Private IP ให้อยู่ใน Data Stream ตัวอย่างเช่น โปรแกรม Voice over Internet Protocol (VoIP) อย่าง SIP ซึ่งไม่ได้ใช้เพียงแค่ UDP port เดียว
- ความแตกต่างจาก Port Forwarding ปกติ: การทำ Static Port Mapping เพียงแต่บอก Router ให้ส่ง Traffic ที่เข้ามาทาง Public IP พอร์ต X ออกไปยัง Private Device Y เท่านั้น แต่ไม่รู้ว่าจะเกิดอะไรขึ้นกับข้อมูลข้างใน
- หน้าที่ของ ALG Parameter(s): ถ้ามีการกำหนดค่า Alg สำหรับโปรโตคอลนั้นๆ มันจะเข้าไปวิเคราะห์ Payload, ค้นหา String ของ IP Address และทำการเขียนทับ (Rewrite/Remap) ค่าเหล่านั้นให้เป็น Public IP address ของตัว Gateway เองโดยอัตโนมัติ ทำให้ปลายทางรับทราบตำแหน่งสาธารณะของผู้ใช้งานได้ถูกต้อง แม้ว่าผู้ใช้อุปกรณ์ภายในจะมี Private RFC1918 range ก็ตาม
กลไกการแก้ไขที่ซับซ้อนยิ่งกว่า
ลองพิจารณากรณีของการสื่อสารแบบ Session Initiation Protocol (SIP) ในระบบ VoIP เมื่อ User A ต้องการโทรคุยผ่านอินเทอร์เน็ต ข้อมูล SDP (Session Description Protocol) จะถูกแลกเปลี่ยนระหว่างคู่สนทนา ซึ่งส่วนนี้มีรายละเอียดเรื่อง Media Stream เช่น RTP port number พร้อมทั้งระบุ Source and Destination IPs หากไม่มีALG เข้ามาจัดการ ตัว SIP packet อาจยังคงบรรจุ Internal IP of User A อยู่ ส่งผลให้เมื่อ Call ถูกเชื่อมต่อ ปลายทางจะไม่สามารถติดต่อกลับเข้ามาถึงอุปกรณ์จริงได้อย่างสมบูรณ์
// Without ALG Inspection // Data payload might contain 'c=IN IP4 192.168.1.X'// With Alg Functionality Active // Router intercepts, inspects the protocol type, recognizes internal addressing scheme,
// then rewrites it to use Public Gateway Address instead.