มาดูพอร์ตที่ Asterisk ใช้ ทั้งที่เป็น Signaling และ RTP Port ครับถึงแม้ว่าเราจะติดตั้ง Asterisk ไว้ตามรูปนั้นก็ตาม เราไม่ต้องกังวลไปครับว่ามันจะใช้งานไม่ได้ตราบใดที่อุปกรณ์ VoIP ยังอยู่ในวงแลนเดียวกับเซอร์เวอร์ ก็ต้องใช้งานได้อยู่แล้ว ถ้าเซ็ตไม่ผิดพลาด
แต่ถ้าอุปกรณ์ VoIP อยู่ในอินเตอร์เน็ตต้องการรีจิสเตอร์มาที่ Asterisk และสื่อสารกับอุปกรณ์ VoIP อื่นๆในวงแลน ปัญหาจะเกิดขึ้นตามมาทันทีเลยครับ อย่างน้อยๆก็มีปัญหาแรกก่อนเลยได้แก่
รีจิสเตอร์ไม่ได้และปัญหาต่อมาคือ
โทรแล้วไม่ได้ยินเสียง ที่เป็นเช่นนี้เพราะว่า เมื่อเครื่องในอินเตอร์เน็ตมันรีจิสเตอร์เข้ามา (สมมติว่ารู้ไอพีของเร้าท์เตอร์แล้วนะครับ) เนื่องจากเร้าท์เตอร์มันทำงานเป็น NAT อยู่ จึงไม่รู้ว่าจะส่งไปที่ไอพีอะไรในวงแลน จึงดร๊อปทิ้ง ทำให้ข้อมูลรีจิสเตอร์ไปไม่ถึง Asterisk
เราต้องเซ็ต Port Forwarding ที่ตัวเร้าท์เตอร์ครับโดยตั้งเงื่อนไขการเซ็ตว่าถ้ามีการเชื่อมต่อจากอินเตอร์เน็ตมาที่พอร์ต WAN แล้วมีหมายเลขพอร์ตตรงตามที่กำหนดก็ให้ส่งต่อไปที่ไอพีแอดเดรสของ Asterisk เท่านี้เองครับ เวอร์คแน่นอน
แต่ปัญหาคือต้องฟอร์เวอร์ดพอร์ตอะไรบ้างพอร์ตที่ต้องฟอร์เวอร์ดเพื่อให้ VoIP เวอร์คมีอยู่ 2 ประเภทครับ ได้แก่
1.
พอร์ต Signaling พอร์ตนี้มีค่าเป็นเท่าไหร่ จะเป็นโปรโตคอลแบบ TCP หรือ UDP ก็ขึ้นอยู่กับ Signaling ของ VoIP ครับ เช่น SIP ใช้พอร์ต UDP 5060, H.323 ใช้พอร์ต TCP 1720, IAX ใช้พอร์ต UDP 4569 ครับ มีอยู่แบบละพอร์ตเดียวครับแต่สามารถรองรับได้หลายเซสชั่น
2.
พอร์ต RTP เป็นพอร์ตสำหรับวอยส์ครับ มีอยู่หลายพอร์ตเพื่อให้เซอร์เวอร์บริการได้มาก รองรับได้หลายๆคอลพร้อมๆกัน จะได้ยินเสียงหรือไม่ได้ยินเสียงก็ขึ้นอยู่กับพอร์ต RTP นี้แหล่ะครับ
ใน Asterisk เรามีวิธีดูพอร์ต Signaling และ RTP ดังนี้ครับรีโมทเข้าไปที่ Asterisk ครับ อาจจะใช้ Console หน้าจอ หรือใช้
PuTTY หรือใช้เว็บอินเตอร์เฟสก็ได้ จากนั้นเปิดไฟล์ที่เกี่ยวข้องขึ้นมาดู ดังนี้ครับ ผมจะแนะนำวิธีใช้ PuTTY นะครับ เพราะผมสะดวกกว่าวิธีอื่น
1. วิธีดูพอร์ต Signalingที่พร้อมท์ของ CentOS ตามรูปข้างบน เปลี่ยนโฟลเดอร์ไปที่ "/etc/asterisk" ครับ โดยพิมพ์คำสั่ง
cd /etc/asterisk (เว้นวรรคระหว่าง cd และ /etc/asterisk ด้วยนะครับ) แล้วกดปุ่ม enter

- Change Folder to /etc/asterisk
- putty-asterisk_small.png (13.18 KiB) เปิดดู 20090 ครั้ง
1.1 ดูพอร์ต Signaling ของโปรโตคอล IAX ดังนี้ครับ
พิมพ์คำสั่ง
cat iax.conf | more แล้วกด
enter ครับ (ผมใช้ ออปชั่น | more ต่อท้ายคำสั่งก็เพื่อให้แสดงทีละหน้าครับ จะได้ดูง่ายๆ)

- Showing IAX Signaling Port
- putty_iax.png (27.61 KiB) เปิดดู 20090 ครั้ง
ดูบรรทัด "
bindport=4569" ครับ หมายเลข 4569 คือหมายเลขพอร์ตของ IAX ครับ
กดปุ่ม "
q" เพื่อออกจากคำสั่งครับ กลับมาสู่พร้อมท์คำสั่งอีกครั้งหนึ่ง
1.2 ดูพอร์ต Signaling ของโปรโตคอล SIP ดังนี้ครับ
พิมพ์คำสั่ง
cat sip.conf | more แล้วกด enter ครับ (ผมใช้ ออปชั่น | more ต่อท้ายคำสั่งก็เพื่อให้แสดงทีละหน้าครับ จะได้ดูง่ายๆ)

- Showing SIP Signaling Port
- putty_sip_small.png (21.67 KiB) เปิดดู 20090 ครั้ง
ดูบรรทัด "udpbindaddr=0.0.0.0:5060" ซึ่ง 0.0.0.0 คือไอพีแอดเดรสทุกไอพีที่อยู่ในเครื่อง เช่น ไอพีของการ์ดแลน ส่วน 5060 คือหมายเลขพอร์ตครับ เป็นโปรโตคอล UDP
กดปุ่ม "q" เพื่อออกจากคำสั่ง กลับมาสู่พร้อมคำสั่งอีกครั้งหนึ่ง
1.3 ดูพอร์ต RTPพิมพ์คำสั่ง
cat rtp.conf แล้วกด enter ครับ

- Asterisk RTP Ports
- putty_rtp.png (26.6 KiB) เปิดดู 20090 ครั้ง
บรรทัด "
rtpstart=10000" คือพอร์ตเริ่มต้นที่ 10000 ครับ ส่วนบรรทัด "
rtpend=30000" เป็นพอร์ตสิ้นสุดที่ 30000 ครับ