(NAT Problem)

จาก Asterisk DIY - VoIP Opensource WiKi, สารานุกรมฟรี

Jump to: navigation, search

การใช้งานระบบ SIP นั้นจะมีปัญหามากกับระบบ Network ที่ต้องทำ NAT เนื่องด้วยการทำงานของระบบ SIP เอง ฉะนั้นการทำงานผ่าน SIP นั้น จำเป็นต้องทำการ set ค่าบางอย่างเพิ่มให้ SIP ทำงานได้


สารบัญ

อะไรคือ NAT?

NAT หรือ Network Address Translation เป็น เทคนิกการนำงานชนิดหนึ่งใช้เพื่อแก้ปัญหาในการที่ readl IP Address ไม่เพียงพอต่อการใช้งาน หรือต้องการเพิ่มเติมระบบความปลอดภัยในระบบ network.

โดยการทำงานของ NAT นั้น สามารถอธิบายง่ายๆคือ การแปลง IP address ของต้นทางให้กลายเป็น IP-Address อีกชุดหนึ่ง เพื่อที่จะส่งไปยังปลายทาง


ภาพ:IBM nat.gif


ตัวอย่างได้ง่ายๆ เช่นการต่อเชื่อมระบบ Internet ผ่าน ADSL (SNAT)

โดยการที่เราเชื่อมต่อกับ ผู้ให้บริการ Internet แบบ ADSL(normal) นั้น เราจะได้ IP-Address มา 1 ชุดเพื่อที่จะสามารถใช้งานบนระบบ internet ได้

IP-Address นั้นเป็นส่วนสำคัญในการทำงานเนื่องจาก ในการใช้งานอะไรก็ตามบนระบบ internet, IP Address เป็นส่วนสำคัญที่จะระบุตำแหน่งของตัวเราเอง เพื่อที่จะสามารถรับข้อมูลจาก internet ได้ ซึ่ง หากเปรียบเทียบกันแล้ว IP-Address ก็ทำหน้าที่คล้ายกับเบอร์โทรศัพท์ ใครก็ตามที่ต้องการส่งข้อมูลมายังเราจำเป็นต้องทราบตำแหน่งของเราก่อน มิฉะนั้นจะไม่สามารถส่งข้อมูลมายังเราได้เลย อนึ่งเบอร์ IP Address นั้นจำเป็นต้องเป็น real IP-Address หรือ IP-Address ที่มีตัวตนจริงในระบบ Internet มิใช่ IP-Address ที่เราตั้งกันเองในระบบ network

การใช้งานบนระบบ Internet หากมีเพียงเครื่องคอมพิวเตอร์เครื่องเดียวที่ต่อกับ ADSL (modem), real IP-Address จะมาอยู่ที่เครื่อง PC ของเรา ซึ่งในกรณีนี้ใครก็ตามที่ต้องการติดต่อกับเราก็แค่ส่งข้อมูลมายัง real IP หรือ หากเราต้องการข้อมูลอะไรก็สามารถที่จะส่ง request ไปยังเครื่องปลายทางซึ่งเครื่องปลายทางสามารถที่จะตอบกลับมายังเราได้ไดยอ่านค่า address จากข้อมูลที่เราส่งไป ฉะนั้นการทำงานในลักษณะนี้จึงไม่จำเป็นต้องใช้การแปลง IP-Address (NAT) เลย

แต่หากว่าเรามีการ shared internet นั้นกับเครื่องหลายๆเครื่องนั้นภายใน Internet, เครื่องแต่ละเครื่องจะไม่มี real IP เนื่องจาก real IP จะมีได้แค่ 1 IP ต่อ 1 ADSL Connection เท่านั้น ฉะนั้น real IP จะต้องอยู่กับอุปกรณ์ router หรือ อยู่กับเครื่องคอมพิวเตอร์เครื่องใดเครื่องหนี่ง ซึ่งหากไม่มีการทำ NAT เครื่อง router หรือ PC เพียงเครื่องเดียวเท่านั้นที่จะสามารถออกไปยัง internet ได้
ในการ share internet, router หรือ PC ที่ต่อกับ ADSL ต้องมี feature ที่เรียกว่า NAT รวมอยู่ด้วย โดย NAT (Nat router) จะทำหน้าที่ในการจดจำตำแหน่งและทำการแปลง IP address จาก Intranet IP ไปเป็น real IP แล้วทำการส่งออกไปยัง internet แทนคอมพิวเตอร์เครื่องอื่นๆใน internet นั้นๆ เมื่อข้อมูลถูกส่งกลับมายัง NAT router, NAT router จะทำการตรวจสอบว่า packet นี้ส่งออกโดยคอมพิวเตอร์เครื่องใหน แล้วจะทำการแปลง IP ปลายทางให้เป็น IP ของเครื่องคอมพิวเตอร์เครื่องนั้นๆ เพื่อที่จะส่งข้อมูลกลับไปยังเครื่องผู้เรียกออก internet ได้

ด้วยการทำงานของ NAT นี้ทำให้เราสามารถที่จะใช้ IP Address เพียงชุดเดียวในการติดต่อกับ internet สำหรับเครื่องคอมพิวเตอร์ทั้งองค์กรได้ทันที

NAT มีกี่แบบ

NAT แต่ละชนิดมีความแตกต่างกันในการทำงานของการจัดการกับการ binding ของ UDP packet, ซึ่งแบ่งออกเป็น 4 ชนิด คือ

1. Full Cone NAT, เป็น NAT ที่มีการ Restrict การใช้งานน้อยที่สุด

ภาพ:Full Cone NAT.jpg

ทำงานโดยการ map, internal IP และเบอร์ port กับ external IP / port, 
ซึ่่ง host ภายนอกทุกเครื่อง จะสามารถที่จะส่งข้อมูลมายังเครื่องหลัง NAT หลังจากมีการสร้าง Connection แล้วได้ 
โดยส่งมาที่ mapped external address จาก IP หรือ Port ใดๆก็ได้

2. Restricted Cone NAT, ทำงานคล้าย Full Cone แต่ restrict ให้เฉพาะผู้สร้าง Connection เท่านั้นที่ทำการเข้ามายัง local address ได้

ภาพ:Restricted Cone NAT.jpg

การงานโดยการ map, internal IP และเบอร์ port กับ external IP / port,
ซึ่่ง host ภายนอกเฉพาะอุปกรณ์ที่ทำการสร้าง Connection จะสามารถที่จะส่งข้อมูลมายังเครื่องหลัง NAT หลังจากมีการสร้าง Connection แล้ว 
โดยส่งมาที่ mapped external address จาก Port ใดๆของ host นั้นก็ได้

3. Port Restricted Cone NAT, ทำงานคล้าย Full Cone แต่ restrict ให้เฉพาะ Source Port ที่ตรงกับผู้สร้าง Connection เท่านั้น

ภาพ:Port Restrict Cone NAT.jpg

การงานโดยการ map, internal IP และเบอร์ port กับ external IP / port,
ซึ่่ง host ภายนอกเฉพาะที่ใช้ port number ตรงกับ host ที่สร้าง Connection 
จะสามารถที่จะส่งข้อมูลมายังเครื่องหลัง NAT หลังจากมีการสร้าง Connection แล้ว 
โดยส่งมาที่ mapped external address จาก IP ใดๆนั้นก็ได้

4. Symmetric NAT, เป็นรูปแบบที่ strict ที่สุดของ NAT ซึ่งจะอนุญาติให้เฉพาะ IP/Port ที่ตรงกับผู้สร้าง connection เท่านั้นที่จะเข้ามาได้

ภาพ:Symmetric NAT.jpg

การงานโดยการ map, internal IP และเบอร์ port กับ external IP / port,
ซึ่่ง host ภายนอกเฉพาะที่ใช้ port number และ IP ที่ตรงกับ host ที่สร้าง Connection 
หรือ เครื่องที่สร้าง connection เองโดยใช้ source port เดิมเท่านั้น
จะสามารถที่จะส่งข้อมูลมายังเครื่องหลัง NAT หลังจากมีการสร้าง Connection แล้ว 
โดยส่งมาที่ mapped external address


Further Information on NAT and Asterisk:

Asterisk GURU on NAT
Diagram รายละเอียดการส่งข้อมูลของ STUN ใน NAT แต่ละแบบ
VoIP-Info, Asterisk, SIP and NAT
NAT explination on Cisco website

ปัญหาของ NAT ต่อระบบ SIP

การแก้ไขต่างๆเพื่อให้ VoIP ทำงานร่วมกับ NAT ได้

1. หากทำได้พยายามหลีกเลื่ยงการทำงานผ่าน NAT เป็นการดีที่สุดครับ

2. การตั้งค่าบน NAT router เพื่อให้ sip ทำงานได้ ซึ่งมีความแตกต่างกันในแต่ละ brand/รุ่น ของอุปกรณ์

2.1 ทำ Port Forward มายัง หัวเครื่องโทรศัพท์ ที่อยู่ หลัง NAT 
   โดยทำการ forward พอร์ท 5060 ถึง 5070 สำหรับ SIP Signal 
   และ 8766 ถึง 35000 สำหรับ RTP audio มายัง IP Address ของหัวโทรศัพท์

3. ใช้ Protocol อื่นๆที่ทำงานบน HTTP แทน SIP

3.1 open IAX protocol, เป็น VoIP โปรโตคอลหนึ่งที่รองรับการทำงานผ่านระบบ NAT ได้โดยการทำงานจะคล้ายกับการทำงานของ HTTP
   ซึ่งในปัจจุบันมี หัวเครื่อง โทรศัพท์ หรือ ATA หลายรุ่นที่รองรับการทำงาน ของ IAX ได้ทันที

4. การทำ IP Tunneling

ภาพ:Vpn.gif Original Image

4.1 การทำ VPN, VPN เป็นการสร้าง network จำลองบนเครือข่ายจริง ซึ่งสามารถนำมาใช้งานกับ VoIP ได้ทันที
    โดย VPN จะทำหน้าทีเสมือนการเชื่อม network หลายๆระบบเข้าด้วยกันเหมือนทำการ Bridge/Route
  ฉะนั้นอุปกรณ์ IP ต่างๆที่ถูกเชื่อมต่อกันด้วย VPN ก็จะสามารถทำการติดต่อสื่อสารเหมือนอยู่บน network เดียวกันได้ทันที

5. การใช้ NAT Transversal Protocol

5.1 STUN (Simple Traversal of UDP through NATs), 
   เป็น โปรโตคอล ที่ใช้ในการตรวจสอบรูปแบบ ของ NAT ที่ใช้งานอยู่เพื่อที่จะ ทำให้สามารถที่จะทำการปรับเปลี่ยนและส่งข้อมูล UDP ผ่านไปได้

ภาพ:STUN Process.jpg

การทำงานของ STUN
Requirement: 1. STUN Client, 2. Valid STUN Server on the INTERNET (example: stun.counterpath.net)
โดย STUN server จะต้องมี 2 IP-Address เพื่อจะสามารถทำการ Test ได้ 
Procedure:

1. Client ส่ง Initial Packet ไปยัง STUN server, 
   หากข้อมูล Public IP/Port Address ที่ถูกส่งกลับมายัง STUN Client ตรงกับ Local Address
   สรุปว่าเป็น network แบบ "NO NAT" หรือ "Open Internet"
2. หากข้อมูล Public IP/Port Address ที่ถูกส่งกลับมา ไม่ตรงกับ Local Address
   สรุปว่าเป็น network แบบ "NAT" และต้องทำการ Test ต่อไปใน STEP ที่ 4
3. Stun server ส่งข้อมูลของ Alternate IP Address กลับมายัง Client
4. Client ส่ง Second Packet ไปยัง STUN Server โดยส่งไปที่ IP และ Port เดิม 
     โดยทั้งนี้มีการเพิ่ม ข้อมูลที่บอกให้ STUN Server ตอบรับโดยใช้ IP Address และ Port อีกชุดแทน
     
     หาก STUN Client สามารถที่จะรับข้อมูลจากครั้งนี้ได้
     สรุปว่าเป็น network แบบ "full-cone NAT"
  เนื่องจาก host อื่นๆสามารถที่จะส่งข้อมูลมายัง port ที่เปิดไว้ บน NAT ได้
     
    หากไม่มีข้อมูลกลับมาต้องทำการ Check ต่อใน STEP ที่ 5
5. Client ส่ง Third Packet (original) ไปยัง STUN Server โดยส่งไปที่ Alternate IP และ Port ที่ได้มาจาก Step ที่ 3 แทน
     
     หาก Client  สามารถที่จะรับข้อมูลจากครั้งนี้ได้โดยข้อมูล เกี่ยวเนื่องกับการ binding กับ Alternete IP
  สรุปว่าเป็น network แบบ "Symmetric NAT"
6.

การทำให้ asterisk ทำงานร่วมกับ NAT

1. ทำการ ตรวจสอบ ระบบ NAT ด้วย WINSTUN

ภาพ:Winstun-stun.counterpath.net.jpg

Personal tools