เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

Asterisk Opensource IP Pbx

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย noterious » 19 มี.ค. 2010 23:31

เป็น Asterisk 1.4.26.1 ครับ ใช้ X-lite 3.0 (gsm codec) ทุกเครื่อง set QOS ทุกตัวแล้ว เช็คเน็ตเวิร์กภายในไม่มีปัญหา packet drop เลย

กำลังคิดว่าจะลอง Zoiper หรือ siplite อยู่เหมือนกันครับ แต่ว่าทั้งสองตัวนี้ไม่มี QOS ให้เซ็ทเลย ไม่ทราบจะมีปัญหาอะไรหรือเปล่า

สมมติว่าถ้าโทรโดยตรงโดยไม่ผ่านเซิร์ฟเวอร์ แล้วใช้งานได้ทุกเครื่องพร้อมกันโดยสายไม่ตัดเลย จะหมายความว่าเครื่อง Asterisk มีปัญหากับการต่อกับ sip trunk หรือเปล่าครับ? หรือว่าจะมีปัญหากับการ transcode ครับ เพราะแปลงจาก gsm จาก x-lite เป็น g.729 ไป provider อีกที? แต่ก็ไม่น่าเกี่ยว...
noterious
Silver Member
 
โพสต์: 24
ลงทะเบียนเมื่อ: 04 มี.ค. 2010 01:27

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย voip4share » 20 มี.ค. 2010 01:11

SIP Client และ SIP Server อยู่ในวงแลนเดียวกัน QoS ในวงแลนผมว่าไม่จำเป็นครับ แบนวิดธ์มันเหลือเฟืออยู่แล้ว เพราะคอนเซ็ปต์ที่เขาคิด QoS มาก็คือทรัพยากรแบนวิดธ์มีจำกัดแต่มีความต้องการใช้งานมาก ฉะนั้น Softphone จะมีหรือไม่ QoS ก็ไม่มีผลต่อการใช้งานครับ

แล้วก็เน็ตเวอร์คในบ้านเรา ไม่ว่าจะเป็นผู้ให้บริการรายไหนก็ตาม เน็ตเวอร์คแบบไหนก็ตาม ADSL, MPLS, Leased Line, Frame Relay, Ethernet, ATM, ... เขาไม่ยอมรับการเซ็ต QoS จากฝั่ง Client ครับ เช่นจาก PC, VoIP Gateway, Softphone, IP Phone เซ็ตไปไม่มีผลหรอกครับ ถ้าจะทำ QoS ต้องทำที่อุปกรณ์ที่เชื่อมต่อกับเน็ตเวอร์คโดยตรง เช่น ADSL Router, Router, Switch เป็นต้น

วันก่อนผมลง Asterisk ให้เพื่อน ตอนแรกก็ใช้ X-Lite ที่ดาวน์โหลดมาจากเว็บไซต์ของ X-Lite เลย โทรผ่าน Asterisk 1.6.2.6 ตัวใหม่ล่าสุดเลย ลง Codec G.729, G.723 เวอร์ชั่นฟรี ก็ตัวเดียวกับที่ผมแนะนำในบทความหน่ะครับ ใช้ True NetTalk แบบ G.729 ส่วน X-Lite ใช้ G.711a ครับ เพราะอยู่ใน LAN แบนวิดธ์เหลือเฟืออยู่แล้ว ปรากฏว่าเจอตัดอยู่เกือบทุกครั้งเลยครับ ครั้งละประมาณ 20-40 วินาที เป็นเกือบทุกครั้ง

ทีแรกเพื่อนผมก็คิดว่าเป็นปัญหาที่ True แต่พอใช้ WireShark มอนิเตอร์ ปรากฏว่าทุกครั้งที่เจอปัญหา X-Lite จะส่ง BYE มาก่อน ฉะนั้นเลยฟันธงว่าเป็นปัญหาที่ X-Lite ครับ แต่พอผมเปลี่ยนมาเป็น EyeBeam (เหมือน X-Lite แต่มี G.729) ไม่มีปัญหาเลยครับ โทรเป็นชั่วโมงๆก็ได้

ตอนนี้เพื่อนผมเขาใช้ ZoIPer อยู่ครับ เขาบอกไม่เจอปัญหา

ลองเปลี่ยน Softphone ดูครับ เผื่อจะแก้ปัญหาได้
voip4share
Administrator
 
โพสต์: 656
ลงทะเบียนเมื่อ: 18 พ.ย. 2009 11:26
ที่อยู่: รามคำแหง กรุงเทพฯ

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย noterious » 20 มี.ค. 2010 10:41

พอดีวางแผนไว้ว่าจะมี softphone ต่อในอนาคตซักประมาณ 40 ตัวน่ะครับ ตอนนี้มีแค่ 20 ตัว ใช้พร้อมกับเวปสองเวปด้วย เลยกังวลเรื่อง QoS
ไม่ทราบตามประสบการณ์ของคุณ voip4share จำนวน user ขนาดไหนถึงควรจะมี QoS ครับ อ้อ ผมเซ็ท QoS ในเราเตอร์ไว้ด้วยครับ

ว่าจะลอง zoiper ดูครับ ชักเริ่มคล้อยตามแล้วว่าเป็นที่ x-lite จริงๆ มีหลายคนบอกมาแล้วครับ
ขอบคุณมากครับ

เอา log จาก ngrep มาให้ดูครับ ตอนนี้ยังใช้ x-lite อยู่

โค้ด: เลือกทั้งหมด
U 192.168.10.90:5060 -> 202.170.124.18:5060
  REGISTER sip:202.170.124.18 SIP/2.0..Via: SIP/2.0/UDP 58.181.138.170:5060;branch=z9hG4bK6c178541;rport..From: <sip:80039@202.170.124.18>;tag=as509dfe7a..To: <sip:80039@202.170.12
  4.18>..Call-ID: 5d5722a313266c734ccba5c150bddad6@127.0.0.1..CSeq: 1342 REGISTER..User-Agent: Asterisk PBX..Max-Forwards: 70..Authorization: Digest username="80039", realm="Gw-Biz
  .com", algorithm=MD5, uri="sip:202.170.124.18", nonce="323eb68c", response="8b2c4a145383863727f90d001332b329"..Expires: 120..Contact: <sip:80039@58.181.138.170>..Event: registrat
  ion..Content-Length: 0....                                                                                                                                                       
#
U 202.170.124.18:5060 -> 192.168.10.90:5060
  SIP/2.0 100 Trying..Via: SIP/2.0/UDP 192.168.10.90:5060;branch=z9hG4bK6c178541;received=192.168.10.90;rport=5060..From: <sip:80039@202.170.124.18>;tag=as509dfe7a..To: <sip:80039@
  202.170.124.18>..Call-ID: 5d5722a313266c734ccba5c150bddad6@127.0.0.1..CSeq: 1342 REGISTER..User-Agent: Gw-Biz..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
   INFO..Supported: replaces..Content-Length: 0....                                                                                                                                 
#
U 202.170.124.18:5060 -> 192.168.10.90:5060
  SIP/2.0 401 Unauthorized..Via: SIP/2.0/UDP 192.168.10.90:5060;branch=z9hG4bK6c178541;received=192.168.10.90;rport=5060..From: <sip:80039@202.170.124.18>;tag=as509dfe7a..To: <sip:
  80039@202.170.124.18>;tag=as035a04c3..Call-ID: 5d5722a313266c734ccba5c150bddad6@127.0.0.1..CSeq: 1342 REGISTER..User-Agent: Gw-Biz..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFE
  R, SUBSCRIBE, NOTIFY, INFO..Supported: replaces..WWW-Authenticate: Digest algorithm=MD5, realm="Gw-Biz.com", nonce="5db8042c"..Content-Length: 0....                             
#
U 192.168.10.90:5060 -> 202.170.124.18:5060
  REGISTER sip:202.170.124.18 SIP/2.0..Via: SIP/2.0/UDP 58.181.138.170:5060;branch=z9hG4bK619724c8;rport..From: <sip:80039@202.170.124.18>;tag=as3625001a..To: <sip:80039@202.170.12
  4.18>..Call-ID: 5d5722a313266c734ccba5c150bddad6@127.0.0.1..CSeq: 1343 REGISTER..User-Agent: Asterisk PBX..Max-Forwards: 70..Authorization: Digest username="80039", realm="Gw-Biz
  .com", algorithm=MD5, uri="sip:202.170.124.18", nonce="5db8042c", response="1a0f63a26f005cadef0db6e4e1ff6b1a"..Expires: 120..Contact: <sip:80039@58.181.138.170>..Event: registrat
  ion..Content-Length: 0....                                                                                                                                                       
#
U 202.170.124.18:5060 -> 192.168.10.90:5060
  SIP/2.0 100 Trying..Via: SIP/2.0/UDP 192.168.10.90:5060;branch=z9hG4bK619724c8;received=192.168.10.90;rport=5060..From: <sip:80039@202.170.124.18>;tag=as3625001a..To: <sip:80039@
  202.170.124.18>..Call-ID: 5d5722a313266c734ccba5c150bddad6@127.0.0.1..CSeq: 1343 REGISTER..User-Agent: Gw-Biz..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
   INFO..Supported: replaces..Content-Length: 0....                                                                                                                                 
#
U 202.170.124.18:5060 -> 192.168.10.90:5060
  OPTIONS sip:80039@192.168.10.90 SIP/2.0..Via: SIP/2.0/UDP 202.170.124.18:5060;branch=z9hG4bK13293da0;rport..From: "Gw-Biz" <sip:Gw-Biz@202.170.124.18>;tag=as240e2c01..To: <sip:80
  039@192.168.10.90>..Contact: <sip:Gw-Biz@202.170.124.18>..Call-ID: 1a7ca4f62778d56d1e00702d05ae8499@202.170.124.18..CSeq: 102 OPTIONS..User-Agent: Gw-Biz..Max-Forwards: 70..Date:
   Sat, 20 Mar 2010 04:36:34 GMT..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces..Content-Length: 0....                             
#
U 192.168.10.90:5060 -> 202.170.124.18:5060
  SIP/2.0 200 OK..Via: SIP/2.0/UDP 202.170.124.18:5060;branch=z9hG4bK13293da0;received=202.170.124.18;rport=5060..From: "Gw-Biz" <sip:Gw-Biz@202.170.124.18>;tag=as240e2c01..To: <si
  p:80039@192.168.10.90>;tag=as0d137bdb..Call-ID: 1a7ca4f62778d56d1e00702d05ae8499@202.170.124.18..CSeq: 102 OPTIONS..User-Agent: Asterisk PBX..Allow: INVITE, ACK, CANCEL, OPTIONS,
   BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces..Contact: <sip:58.181.138.170>..Accept: application/sdp..Content-Length: 0....

U 192.168.10.121:37168 -> 192.168.10.90:5060
  BYE sip:0844967585@192.168.10.90 SIP/2.0..Via: SIP/2.0/UDP 192.168.10.121:37168;branch=z9hG4bK-d8754z-6607be237b53572b-1---d8754z-;rport..Max-Forwards: 70..Contact: <sip:301@192.
  168.10.121:37168>..To: "0844967585"<sip:0844967585@192.168.10.90>;tag=as485cd9be..From: "301"<sip:301@192.168.10.90>;tag=5e637375..Call-ID: ZWNlM2NkNGI2YzQzODg3MjA4NjhlZjg5ZTEwMm
  I0MWI...CSeq: 3 BYE..Proxy-Authorization: Digest username="301",realm="asterisk",nonce="15ba472f",uri="sip:0844967585@192.168.10.90",response="d1cd93b3e793a1f37c8612a228e470bd",a
  lgorithm=MD5..User-Agent: X-Lite release 1104o stamp 56125..Reason: SIP;description="User Hung Up"..Content-Length: 0....                                                         
#
U 192.168.10.90:5060 -> 192.168.10.121:37168
  SIP/2.0 200 OK..Via: SIP/2.0/UDP 192.168.10.121:37168;branch=z9hG4bK-d8754z-6607be237b53572b-1---d8754z-;received=192.168.10.121;rport=37168..From: "301"<sip:301@192.168.10.90>;t
  ag=5e637375..To: "0844967585"<sip:0844967585@192.168.10.90>;tag=as485cd9be..Call-ID: ZWNlM2NkNGI2YzQzODg3MjA4NjhlZjg5ZTEwMmI0MWI...CSeq: 3 BYE..User-Agent: Asterisk PBX..Allow: I
  NVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces..Content-Length: 0....                                                                     
#
U 192.168.10.90:5060 -> 202.170.124.18:5060
  BYE sip:0844967585@202.170.124.18 SIP/2.0..Via: SIP/2.0/UDP 58.181.138.170:5060;branch=z9hG4bK4335789e;rport..From: "DUN" <sip:02x@58.181.138.170>;tag=as2c7904cb..To: <sip:
  0844967585@202.170.124.18>;tag=as09ca48db..Call-ID: 25f7b90025c716fc694fe19b1802304b@58.181.138.170..CSeq: 104 BYE..User-Agent: Asterisk PBX..Max-Forwards: 70..Proxy-Authorizatio
  n: Digest username="80039", realm="Gw-Biz.com", algorithm=MD5, uri="sip:0844967585@202.170.124.18", nonce="7b19391a", response="4a464ea12bd9df585037e3e589a8377c"..X-Asterisk-Hang
  upCause: Normal Clearing..X-Asterisk-HangupCauseCode: 16..Content-Length: 0....                                                                                                   
#
U 202.170.124.18:5060 -> 192.168.10.90:5060
  SIP/2.0 200 OK..Via: SIP/2.0/UDP 192.168.10.90:5060;branch=z9hG4bK4335789e;received=192.168.10.90;rport=5060..From: "DUN" <sip:02x@192.168.10.90>;tag=as2c7904cb..To: <sip:0
  844967585@202.170.124.18>;tag=as09ca48db..Call-ID: 25f7b90025c716fc694fe19b1802304b@58.181.138.170..CSeq: 104 BYE..User-Agent: Gw-Biz..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, R
  EFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces..Content-Length: 0....                   
noterious
Silver Member
 
โพสต์: 24
ลงทะเบียนเมื่อ: 04 มี.ค. 2010 01:27

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย voip4share » 20 มี.ค. 2010 12:51

ดูจาก Ngrep นะครับ เห็นมี BYE ที่ Softphone ส่งให้ Asterisk และมีข้อความแบบนี้ Reason: SIP;description="User Hung Up".. ไม่รู้ว่ายูสเซอร์วางเอง หรือว่าโปรกรม X-Lite วางให้
ไม่ทราบว่าคุณ noterious วางเน็ตเวอร์คยังไงเหรอครับ ใช่แบบนี้หรือเปล่า

sip clients -> switch -> asterisk (eth1) - asterisk (eth0) -> router -> isp

เพราะคอนฟิกนี่ผมทำให้เพื่อนผมอยู่ครับ คอนฟิกแบบนี้ จาก sip client มาถึงขา eth1 ของ Asterisk ไม่ต้องการ QoS ครับ มันเป็น LAN แบนวิดธ์เหลือเฟืออยู่แล้ว แม้ว่าจะเซ็ต QoS ที่ SIP Client แต่ถ้า Switch และ Server (Asterisk) ไม่รู้จัก QoS ด้วย ก็เปล่าประโยชน์ ควรเซ็ตที่ Router แหล่ะครับ ให้ Traffic วิ่งเข้า/ออกจาก Asterisk มี Priority สูงสุด และของแบนวิดธ์ดไว้ด้วย อย่างน้อยก็ 24 Kbps x 40 channels = 960 Kbps หรือประมาณ 1 Mbps ทั้ง Upload/Download ครับ ที่เหลือก็ให้ Web ใช้ไป ถ้าทำแบบนี้ได้ รับรองว่า VoIP ฉลุยครับ

แต่ถ้าคอนฟิกเป็นแบบนี้
sip client -> switch -> router
asterisk -> switch -> router
คือทั้ง asterisk และ sip client ต่อเข้า switch เดียวกัน และ switch ก็ต่อกับ router อีกที
อย่างนี้ sip client ก็ยังไม่ต้องการ qos อยู่ดีครับ เพราะมันคุยกับ asterisk ใน lan

และเห็นว่าจะมีอีก 2 เว็บ จะติดตั้งไว้ใน Lan ด้วยใช่ป่ะครับ หรือว่าเป็น Public IP เลย ก็เซ็ต QoS บน Router ให้มี Priority ต่ำกว่า VoIP ครับ

การเช็คว่าอะไรเป็น VoIP นี่ก็ง่ายๆสุดๆคือ เช็คจากคู่ IP Address ครับ คือระหว่างคู่ IP ของ Asterisk กับ SIP server ที่เชื่อมต่ออยู่ครับ ซึ่ง Traffic ระหว่างคู่ไอพีนี้ยังไงซะก็คือ VoIP ครับ
voip4share
Administrator
 
โพสต์: 656
ลงทะเบียนเมื่อ: 18 พ.ย. 2009 11:26
ที่อยู่: รามคำแหง กรุงเทพฯ

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย noterious » 20 มี.ค. 2010 18:56

ผมเซ็ทแบบทั้ง sip clients และ asterisk ต่อกับ switch เลยครับ แต่วิธีแยกเน็ตเวิร์กการ์ดแบบที่คุณ voip4share บอกไว้น่าสนใจครับ แต่ทำไม่เป็น...​ฮ่าฮ่า

ตอนนี้จริงๆแล้วผมใช้ Elastix 1.6 ครับ ไม่ใช่ Asterisk เพียวๆ
วันนี้หลังจากทดสอบด้วย Zoiper พบว่าไม่มีปัญหาสายตัดเลย เสียงดังฟังชัดอีกด้วย :D ปรากฏว่า x-lite มีปัญหาจริงๆ

ตอนนี้กำลังหาวิธี secure ตัว Elastix อยู่ครับ มีพาสเวิร์ดให้เปลี่ยนเยอะเหลือเกิน ไม่ทราบพอจะชี้แนะลิงค์ที่ไหนให้ไปตามอ่านดูได้บ้างครับ
ตอนนี้เพียงแต่เปลี่ยนพาสเวิร์ดไปบางตัวเท่านั้นเอง น่าจะมีรูโหว่อยู่พอสมควร หรือถ้าคุณ voip4share เขียนขึ้นมาเองเป็นวิทยาทานให้คนอื่นๆด้วย ก็จะเป็นพระคุณครับ :D
เพิ่งใส่ denyhosts ไปอีกตัวนึงเท่านั้นเอง

* ถ้ากระทู้นี้ไม่เกี่ยวกับหัวเรื่องขอโทษด้วยครับ อาจจะลบทิ้งไปก็ได้ครับ

*ไปเจอลิงค์นี้ครับ น่าจะพอได้ http://automation.binarysage.net/?p=175
noterious
Silver Member
 
โพสต์: 24
ลงทะเบียนเมื่อ: 04 มี.ค. 2010 01:27

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย voip4share » 20 มี.ค. 2010 23:52

ดีใจด้วยครับที่หาโซลูชั่นแก้ปัญหาได้แล้ว สำหรับเว็บขอบคุณมากครับ ผมเพิ่งเคยเห็นเว็บนี้ ไว้ผมจะศึกษาแล้วเอามาถ่ายทอดเป็นภาษาไทยครับ เจ้าของเว็บน่าจะชอบ
voip4share
Administrator
 
โพสต์: 656
ลงทะเบียนเมื่อ: 18 พ.ย. 2009 11:26
ที่อยู่: รามคำแหง กรุงเทพฯ

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย diamond » 21 พ.ค. 2010 19:00

สวัสดีครับ ขออนุญาติรบกวนสอบถามปัญหาหน่อยนะครับเกี่ยวกับ stun นะครับมีอยู่ว่า
ใช้ Net ของ True
ใช้ Elastix 2.0
ใช้ xxx.dyndns.org
forward port เรียบร้อย
ping google ได้ แต่ ลองปิงจากเครื่อง server ไปที่ xxx.dyndns.org(ตัวมันเอง) ไม่ได้

ไปติดปัญหาเรื่อง Nat คับคือไม่โทรแล้วไม่ได้ยินเสียง ก็แก้ตามวิธีในเว็บแนะนำนะครับลองหลายแบบอยู่เหมือนกัน แต่แบบที่ได้ผลจะเป็นการใช้ Stun นะครับ ช่วงแรกก็ใช้งานได้ดีนะครับ ใช้เป็น stun.xten.com ก็ไป set ที่ sip.conf ให้ externrefresh=15
โทรระหว่างเครือข่ายเดียวกัน ได้ยินเสียง
โทรไป 1100 (ออก Trunk)ได้ิยินเสียง
โทรไป 1234 (เป็น Default ของ Asterisk) ได้ิยินเสียงระบบ

พอใช้ไปได้ 3 วันกว่าๆ ไม่แน่ใจมีปัญหาเกิดขึ้นคือ

โทรระหว่างเครือข่ายเดียวกัน ได้ยินเสียง
โทรไป 1100 (ออก Trunk) ได้ิยินเสียง บอกว่า All circuit busy now ตลอดเลย
โทรไป 1234 (เป็น Default ของ Asterisk) ได้ิยินเสียงระบบ

ทดลอง Reload Sip ปรากฏว่า
โทรไป 1100 (ออก Trunk) ได้ิยินเสียงปกติ
แต่พอสัก 5 วินาทีผ่านไป
โทรไป 1100 (ออก Trunk) ได้ิยินเสียง บอกว่า All circuit busy now ตลอดเลย
ทดลอง Reload Sip ปรากฏว่า โทรได้ิยินเสียงปกติ แต่ผ่านไป 5 วิกว่าๆ เป็นเหมือนเดิมอีกแล้ว

เลยเปลี่ยนไปใช้ Stun อันใหม่ ปัญหานี้หายไป set externrefresh=3600 หรือ 1 ชม.
ปรากฏว่าใช้ได้หลายวันอยู่เหมือนกันประมาณ 5 วัน แต่หลังจากนั้นก็เป็นเหมือนเดิมอีก คือ

ทดลอง Reload Sip ปรากฏว่า
โทรไป 1100 (ออก Trunk) ได้ิยินเสียงปกติ
แต่พอสัก 5 วินาทีผ่านไป
โทรไป 1100 (ออก Trunk) ได้ิยินเสียง บอกว่า All circuit busy now ตลอดเลย
ทดลอง Reload Sip ปรากฏว่า โทรได้ิยินเสียงปกติ แต่ผ่านไป 5 วิกว่าๆ เป็นเหมือนเดิมอีกแล้ว

เลยไม่แน่ใจว่า โดน แบน หรือปล่าว ไม่ทราบว่ามีท่านใดเป็นเหมือนกับผมบ้างคับโปรดชี้แนะด้วยคับ
diamond
Bronz Member
 
โพสต์: 5
ลงทะเบียนเมื่อ: 09 พ.ค. 2010 16:09

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย nuiz » 22 พ.ค. 2010 00:56

คาดเดาปัญหาได้ยากครับ คงต้องลอง Troubleshooting ไปทีละ Step แล้วหล่ะ

1. คอนฟิก Elatix ยังไงบ้างครับตอนที่ส่ง Call ออกไป ต้องรีจิสเตอร์มั๊ย หรือว่าส่งเป็น SIP Trunk หรือ IAX Trunk ไปเลย และมี Elastix กี่ตัว (เดาว่ามี 2 ตัว)
2. ตอนที่่โทรออกแล้วได้ยินเสียงว่า "All circuita are busy now" บน Asterisk Console (CLI) มันมีข้อความอะไรขึ้นมาบ้างครับ
3. หลังจากกดเบอร์ปลายทาง 1100 แล้ว นานมั๊ยกว่าจะได้ยินเสียง All circuits are busy now"
4. ใช้โปรแกรม Ngrep มอนิเตอร์ดู SIP Message ที่ส่งออกไปหาอีกฝั่ง และที่รับเข้ามา ว่ามันมี Error อะไรบ้าง

เท่านี้ก่อนครับ ทำตอนที่เกิดปัญหาเลยนะครับ

ปล. ถ้ายังไม่เคยใช้โปรแกรม Ngrep ก็ต้องลองใช้แล้วครับ ใช้แก้ปัญหาการเชื่อมต่อ VoIP ได้
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 6993
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย diamond » 22 พ.ค. 2010 02:04

ก่อนอื่นต้องขอบคุณมากนะครับที่มาช่วยตอบคับ ผมทำตามที่คุณ nuiz แนะนำมานะคับ

1. คอนฟิก Elatix ยังไงบ้างครับตอนที่ส่ง Call ออกไป ต้องรีจิสเตอร์มั๊ย หรือว่าส่งเป็น SIP Trunk หรือ IAX Trunk ไปเลย และมี Elastix กี่ตัว (เดาว่ามี 2 ตัว)
ตอบ ใช้ sip Trunk ของ ToT ครับมี 2 เบอร์ ใช้ Elastix 1 ตัวคับ Config ไว้แบบนี้คับ

Peer Detail

username=06000734xx
type=peer
secret=xxxx
realm=10.10.2.50
port=5060
outboundproxy=203.113.125.82
host=203.113.125.82
fromuser=06000734xx
fromdomain=203.113.125.82
dtmfmode=rfc2833
disallow=all
canreinvite=no
call-limit=1
allow=ulaw&alaw&gsm&g723&g729

Register

06000734xx:xxxx@203.113.125.82:5060/06000734xx

แก้เรื่อง Nat ไว้ที่ไฟล์ sip_general_custom.conf

ดังนี้ครับ

;udpbindaddr=0.0.0.0:5060
srvlookup=yes
nat=yes
port=5060
localnet=192.168.1.0/255.255.255.0
;stunaddr=stun.exten.com:3000
stunaddr=stun.ekiga.net:3000
externrefresh=3600


2. ตอนที่่โทรออกแล้วได้ยินเสียงว่า "All circuita are busy now" บน Asterisk Console (CLI) มันมีข้อความอะไรขึ้นมาบ้างครับ
ตอบ อาจจะยาวหน่อยนะครับต้องขออภัย

Connected to Asterisk 1.6.2.6 currently running on xxxx (pid = 7983)
Verbosity is at least 3
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Executing [1100@from-internal:1] Macro("SIP/1002-00000010", "user-callerid,SKIPTTL,") in new stack
-- Executing [s@macro-user-callerid:1] Set("SIP/1002-00000010", "AMPUSER=1002") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("SIP/1002-00000010", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("SIP/1002-00000010", "1?Set(REALCALLERIDNUM=1002)") in new stack
-- Executing [s@macro-user-callerid:4] Set("SIP/1002-00000010", "AMPUSER=1002") in new stack
-- Executing [s@macro-user-callerid:5] Set("SIP/1002-00000010", "AMPUSERCIDNAME=1002") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("SIP/1002-00000010", "0?report") in new stack
-- Executing [s@macro-user-callerid:7] Set("SIP/1002-00000010", "AMPUSERCID=1002") in new stack
-- Executing [s@macro-user-callerid:8] Set("SIP/1002-00000010", "CALLERID(all)="1002" <1002>") in new stack
-- Executing [s@macro-user-callerid:9] ExecIf("SIP/1002-00000010", "0?Set(CHANNEL(language)=)") in new stack
-- Executing [s@macro-user-callerid:10] GotoIf("SIP/1002-00000010", "1?continue") in new stack
-- Goto (macro-user-callerid,s,19)
-- Executing [s@macro-user-callerid:19] NoOp("SIP/1002-00000010", "Using CallerID "1002" <1002>") in new stack
-- Executing [1100@from-internal:2] Set("SIP/1002-00000010", "_NODEST=") in new stack
-- Executing [1100@from-internal:3] Macro("SIP/1002-00000010", "record-enable,1002,OUT,") in new stack
-- Executing [s@macro-record-enable:1] GotoIf("SIP/1002-00000010", "1?check") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing [s@macro-record-enable:4] ExecIf("SIP/1002-00000010", "0?MacroExit()") in new stack
-- Executing [s@macro-record-enable:5] GotoIf("SIP/1002-00000010", "0?Group:OUT") in new stack
-- Goto (macro-record-enable,s,15)
-- Executing [s@macro-record-enable:15] GotoIf("SIP/1002-00000010", "0?IN") in new stack
-- Executing [s@macro-record-enable:16] ExecIf("SIP/1002-00000010", "1?MacroExit()") in new stack
-- Executing [1100@from-internal:4] Macro("SIP/1002-00000010", "dialout-trunk,3,1100,,") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("SIP/1002-00000010", "DIAL_TRUNK=3") in new stack
-- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/1002-00000010", "0?sub-pincheck,s,1") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/1002-00000010", "1?disabletrunk,1") in new stack
-- Goto (macro-dialout-trunk,disabletrunk,1)
-- Executing [disabletrunk@macro-dialout-trunk:1] NoOp("SIP/1002-00000010", "TRUNK: SIP/tot-0681110289 DISABLED - falling through to next trunk") in new stack
-- Executing [1100@from-internal:5] Macro("SIP/1002-00000010", "dialout-trunk,2,1100,,") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("SIP/1002-00000010", "DIAL_TRUNK=2") in new stack
-- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/1002-00000010", "0?sub-pincheck,s,1") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/1002-00000010", "0?disabletrunk,1") in new stack
-- Executing [s@macro-dialout-trunk:4] Set("SIP/1002-00000010", "DIAL_NUMBER=1100") in new stack
-- Executing [s@macro-dialout-trunk:5] Set("SIP/1002-00000010", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing [s@macro-dialout-trunk:6] Set("SIP/1002-00000010", "OUTBOUND_GROUP=OUT_2") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/1002-00000010", "0?nomax") in new stack
-- Executing [s@macro-dialout-trunk:8] GotoIf("SIP/1002-00000010", "0?chanfull") in new stack
-- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/1002-00000010", "0?skipoutcid") in new stack
-- Executing [s@macro-dialout-trunk:10] Set("SIP/1002-00000010", "DIAL_TRUNK_OPTIONS=") in new stack
-- Executing [s@macro-dialout-trunk:11] Macro("SIP/1002-00000010", "outbound-callerid,2") in new stack
-- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/1002-00000010", "0?Set(CALLERPRES()=)") in new stack
-- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/1002-00000010", "0?Set(REALCALLERIDNUM=1002)") in new stack
-- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/1002-00000010", "1?normcid") in new stack
-- Goto (macro-outbound-callerid,s,6)
-- Executing [s@macro-outbound-callerid:6] Set("SIP/1002-00000010", "USEROUTCID=") in new stack
-- Executing [s@macro-outbound-callerid:7] Set("SIP/1002-00000010", "EMERGENCYCID=") in new stack
-- Executing [s@macro-outbound-callerid:8] Set("SIP/1002-00000010", "TRUNKOUTCID=") in new stack
-- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/1002-00000010", "1?trunkcid") in new stack
-- Goto (macro-outbound-callerid,s,12)
-- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/1002-00000010", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/1002-00000010", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/1002-00000010", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/1002-00000010", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
-- Executing [s@macro-dialout-trunk:12] ExecIf("SIP/1002-00000010", "1?AGI(fixlocalprefix)") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/fixlocalprefix
-- <SIP/1002-00000010>AGI Script fixlocalprefix completed, returning 0
-- Executing [s@macro-dialout-trunk:13] Set("SIP/1002-00000010", "OUTNUM=1100") in new stack
-- Executing [s@macro-dialout-trunk:14] Set("SIP/1002-00000010", "custom=SIP/tot-06000734xx") in new stack
-- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/1002-00000010", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^))") in new stack
-- Executing [s@macro-dialout-trunk:16] Macro("SIP/1002-00000010", "dialout-trunk-predial-hook,") in new stack
-- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/1002-00000010", "") in new stack
-- Executing [s@macro-dialout-trunk:17] GotoIf("SIP/1002-00000010", "0?bypass,1") in new stack
-- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/1002-00000010", "0?customtrunk") in new stack
-- Executing [s@macro-dialout-trunk:19] Dial("SIP/1002-00000010", "SIP/tot-06000734xx/1100,300,") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called tot-06000734xx/1100
-- SIP/tot-06000734xx-00000011 is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)
-- Executing [s@macro-dialout-trunk:20] NoOp("SIP/1002-00000010", "Dial failed for some reason with DIALSTATUS = CONGESTION and HANGUPCAUSE = 21") in new stack
-- Executing [s@macro-dialout-trunk:21] Goto("SIP/1002-00000010", "s-CONGESTION,1") in new stack
-- Goto (macro-dialout-trunk,s-CONGESTION,1)
-- Executing [s-CONGESTION@macro-dialout-trunk:1] Set("SIP/1002-00000010", "RC=21") in new stack
-- Executing [s-CONGESTION@macro-dialout-trunk:2] Goto("SIP/1002-00000010", "21,1") in new stack
-- Goto (macro-dialout-trunk,21,1)
-- Executing [21@macro-dialout-trunk:1] Goto("SIP/1002-00000010", "continue,1") in new stack
-- Goto (macro-dialout-trunk,continue,1)
-- Executing [continue@macro-dialout-trunk:1] GotoIf("SIP/1002-00000010", "1?noreport") in new stack
-- Goto (macro-dialout-trunk,continue,3)
-- Executing [continue@macro-dialout-trunk:3] NoOp("SIP/1002-00000010", "TRUNK Dial failed due to CONGESTION HANGUPCAUSE: 21 - failing through to other trunks") in new stack
-- Executing [continue@macro-dialout-trunk:4] Set("SIP/1002-00000010", "CALLERID(number)=1002") in new stack
-- Executing [1100@from-internal:6] Macro("SIP/1002-00000010", "outisbusy,") in new stack
-- Executing [s@macro-outisbusy:1] Progress("SIP/1002-00000010", "") in new stack
-- Executing [s@macro-outisbusy:2] GotoIf("SIP/1002-00000010", "0?emergency,1") in new stack
-- Executing [s@macro-outisbusy:3] GotoIf("SIP/1002-00000010", "0?intracompany,1") in new stack
-- Executing [s@macro-outisbusy:4] Playback("SIP/1002-00000010", "all-circuits-busy-now&pls-try-call-later, noanswer") in new stack
-- <SIP/1002-00000010> Playing 'all-circuits-busy-now.gsm' (language 'en')
-- <SIP/1002-00000010> Playing 'pls-try-call-later.gsm' (language 'en')
== Spawn extension (macro-outisbusy, s, 4) exited non-zero on 'SIP/1002-00000010' in macro 'outisbusy'
== Spawn extension (from-internal, 1100, 6) exited non-zero on 'SIP/1002-00000010'
-- Executing [h@from-internal:1] Macro("SIP/1002-00000010", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/1002-00000010", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,4)
-- Executing [s@macro-hangupcall:4] GotoIf("SIP/1002-00000010", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,7)
-- Executing [s@macro-hangupcall:7] GotoIf("SIP/1002-00000010", "1?theend") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] Hangup("SIP/1002-00000010", "") in new stack
== Spawn extension (macro-hangupcall, s, 9) exited non-zero on 'SIP/1002-00000010' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/1002-00000010'
-- Remote UNIX connection
-- Remote UNIX connection disconnected



3. หลังจากกดเบอร์ปลายทาง 1100 แล้ว นานมั๊ยกว่าจะได้ยินเสียง All circuits are busy now"
ตอบ ไม่นานครับ แปปเดียว เหมือนโทรปกติ ทดสอบบน softphone ,ata ได้ผลลัพท์เหมือนกัน


4. ใช้โปรแกรม Ngrep มอนิเตอร์ดู SIP Message ที่ส่งออกไปหาอีกฝั่ง และที่รับเข้ามา ว่ามันมี Error อะไรบ้าง
ตอบ Ngrep ได้ผลดังนี้ครับ

ที่ Local 192.168.1.100
[root@xxxx ~]# ngrep -d eth0 host 192.168.1.100 and port 5060
interface: eth0 (192.168.1.0/255.255.255.0)
filter: (ip) and ( host 192.168.1.100 and port 5060 )
#
U 180.180.109.166:5060 -> 192.168.1.100:5060
PUBLISH sip:1002@xxxx.dyndns.org SIP/2.0..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-c4142629dc41133c-
1---d8754z-;rport..Max-Forwards: 70..Contact: <sip:1002@180.180.109.166:5060>..To: "1002"<sip:1002@xxxx.dyndns.org>
..From: "1002"<sip:1002@xxxx.dyndns.org>;tag=b91e0a31..Call-ID: MDU3MGI5MDliZWFiMTZhMWMzMzczNjM2NmMzMTkxZTM...CSeq:
1 PUBLISH..Expires: 3600..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO..Content-Ty
pe: application/pidf+xml..User-Agent: X-Lite release 1103k stamp 56013..Event: presence..Content-Length: 464....<?xml ve
rsion='1.0' encoding='UTF-8'?><presence xmlns='urn:ietf:params:xml:ns:pidf' xmlns:dm='urn:ietf:params:xml:ns:pidf:data-m
odel' xmlns:rpid='urn:ietf:params:xml:ns:pidf:rpid' xmlns:c='urn:ietf:params:xml:ns:pidf:cipid' entity='sip:1002@savecal
l1.dyndns.org'><tuple id='t6979997d'><status><basic>open</basic></status></tuple><dm:person id='p86781060'><rpid:activit
ies><rpid:on-the-phone/></rpid:activities><dm:note>On the Phone</dm:note></dm:person></presence>
#
U 192.168.1.100:5060 -> 180.180.109.166:5060
SIP/2.0 501 Method Not Implemented..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-c4142629dc41133c-1---d8754z-
;received=180.180.109.166;rport=5060..From: "1002"<sip:1002@xxxx.dyndns.org>;tag=b91e0a31..To: "1002"<sip:1002@save
call1.dyndns.org>;tag=as4d89f59a..Call-ID: MDU3MGI5MDliZWFiMTZhMWMzMzczNjM2NmMzMTkxZTM...CSeq: 1 PUBLISH..Server: Asteri
sk PBX 1.6.2.6..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces, timer..Co
ntent-Length: 0....
#
U 180.180.109.166:5060 -> 192.168.1.100:5060
INVITE sip:1100@xxxx.dyndns.org SIP/2.0..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-c901bc3b11409304-1
---d8754z-;rport..Max-Forwards: 70..Contact: <sip:1002@180.180.109.166:5060>..To: "1100"<sip:1100@xxxx.dyndns.org>.
.From: "1002"<sip:1002@xxxx.dyndns.org>;tag=3305f658..Call-ID: YjQ5MTk1NzA3YzQ3YWEwMDkwNGVlZTM1YjhlM2NiN2I...CSeq:
1 INVITE..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO..Content-Type: application/s
dp..User-Agent: X-Lite release 1103k stamp 56013..Content-Length: 192....v=0..o=- 1 2 IN IP4 180.180.109.166..s=CounterP
ath X-Lite 3.0..c=IN IP4 180.180.109.166..t=0 0..m=audio 5062 RTP/AVP 0 8 3 101..a=fmtp:101 0-15..a=rtpmap:101 telephone
-event/8000..a=sendrecv..
#
U 192.168.1.100:5060 -> 180.180.109.166:5060
SIP/2.0 401 Unauthorized..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-c901bc3b11409304-1---d8754z-;received=
180.180.109.166;rport=5060..From: "1002"<sip:1002@xxxx.dyndns.org>;tag=3305f658..To: "1100"<sip:1100@xxxx.dynd
ns.org>;tag=as2eb803d3..Call-ID: YjQ5MTk1NzA3YzQ3YWEwMDkwNGVlZTM1YjhlM2NiN2I...CSeq: 1 INVITE..Server: Asterisk PBX 1.6.
2.6..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces, timer..WWW-Authentic
ate: Digest algorithm=MD5, realm="asterisk", nonce="243671ed"..Content-Length: 0....
#
U 180.180.109.166:5060 -> 192.168.1.100:5060
ACK sip:1100@xxxx.dyndns.org SIP/2.0..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-c901bc3b11409304-1---
d8754z-;rport..To: "1100"<sip:1100@xxxx.dyndns.org>;tag=as2eb803d3..From: "1002"<sip:1002@xxxx.dyndns.org>;tag
=3305f658..Call-ID: YjQ5MTk1NzA3YzQ3YWEwMDkwNGVlZTM1YjhlM2NiN2I...CSeq: 1 ACK..Content-Length: 0....
#
U 180.180.109.166:5060 -> 192.168.1.100:5060
INVITE sip:1100@xxxx.dyndns.org SIP/2.0..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-480f3a33e90a4b6d-1
---d8754z-;rport..Max-Forwards: 70..Contact: <sip:1002@180.180.109.166:5060>..To: "1100"<sip:1100@xxxx.dyndns.org>.
.From: "1002"<sip:1002@xxxx.dyndns.org>;tag=3305f658..Call-ID: YjQ5MTk1NzA3YzQ3YWEwMDkwNGVlZTM1YjhlM2NiN2I...CSeq:
2 INVITE..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO..Content-Type: application/s
dp..User-Agent: X-Lite release 1103k stamp 56013..Authorization: Digest username="1002",realm="asterisk",nonce="243671ed
",uri="sip:1100@xxxx.dyndns.org",response="29e26b77caa2eef7c9060746fc513123",algorithm=MD5..Content-Length: 192....
v=0..o=- 1 2 IN IP4 180.180.109.166..s=CounterPath X-Lite 3.0..c=IN IP4 180.180.109.166..t=0 0..m=audio 5062 RTP/AVP 0 8
3 101..a=fmtp:101 0-15..a=rtpmap:101 telephone-event/8000..a=sendrecv..
#
U 192.168.1.100:5060 -> 180.180.109.166:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-480f3a33e90a4b6d-1---d8754z-;received=180.18
0.109.166;rport=5060..From: "1002"<sip:1002@xxxx.dyndns.org>;tag=3305f658..To: "1100"<sip:1100@xxxx.dyndns.org
>..Call-ID: YjQ5MTk1NzA3YzQ3YWEwMDkwNGVlZTM1YjhlM2NiN2I...CSeq: 2 INVITE..Server: Asterisk PBX 1.6.2.6..Allow: INVITE, A
CK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces, timer..Contact: <sip:1100@192.168.1.100>.
.Content-Length: 0....
#
U 192.168.1.100:5060 -> 203.113.125.82:5060
INVITE sip:1100@203.113.125.82:5060 SIP/2.0..Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK1b30f0ce;rport..Max-Forwa
rds: 70..From: "1002" <sip:06000734xx@203.113.125.82>;tag=as76446bb5..To: <sip:1100@203.113.125.82:5060>..Contact: <sip:
06000734xx@192.168.1.100>..Call-ID: 02da184411beb7be4a2b0e55309a42bb@203.113.125.82..CSeq: 102 INVITE..User-Agent: Aster
isk PBX 1.6.2.6..Date: Fri, 21 May 2010 18:41:08 GMT..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
, INFO..Supported: replaces, timer..Content-Type: application/sdp..Content-Length: 403....v=0..o=root 1119271542 1119271
542 IN IP4 192.168.1.100..s=Asterisk PBX 1.6.2.6..c=IN IP4 192.168.1.100..t=0 0..m=audio 19492 RTP/AVP 0 8 3 4 18 101..a
=rtpmap:0 PCMU/8000..a=rtpmap:8 PCMA/8000..a=rtpmap:3 GSM/8000..a=rtpmap:4 G723/8000..a=fmtp:4 annexa=no..a=rtpmap:18 G7
29/8000..a=fmtp:18 annexb=no..a=rtpmap:101 telephone-event/8000..a=fmtp:101 0-16..a=silenceSupp:off - - - -..a=ptime:20.
.a=sendrecv..
#
U 203.113.125.82:5060 -> 192.168.1.100:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP 58.8.107.154:49957;received=192.168.1.100;branch=z9hG4bK1b30f0ce;rport=50767..From:
"1002" <sip:06000734xx@203.113.125.82>;tag=as76446bb5..To: <sip:1100@203.113.125.82:5060>..Call-ID: 02da184411beb7be4a2
b0e55309a42bb@203.113.125.82..CSeq: 102 INVITE....
#
U 203.113.125.82:5060 -> 192.168.1.100:5060
SIP/2.0 403 Forbidden..Via: SIP/2.0/UDP 58.8.107.154:49957;received=192.168.1.100;branch=z9hG4bK1b30f0ce;rport=50767..Fr
om: "1002" <sip:06000734xx@203.113.125.82>;tag=as76446bb5..To: <sip:1100@203.113.125.82:5060>;tag=aprqngfrt-n1fei930000c
6..Call-ID: 02da184411beb7be4a2b0e55309a42bb@203.113.125.82..CSeq: 102 INVITE....
#
U 192.168.1.100:5060 -> 203.113.125.82:5060
ACK sip:1100@203.113.125.82:5060 SIP/2.0..Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK1b30f0ce;rport..Max-Forwards
: 70..From: "1002" <sip:06000734xx@203.113.125.82>;tag=as76446bb5..To: <sip:1100@203.113.125.82:5060>;tag=aprqngfrt-n1fe
i930000c6..Contact: <sip:06000734xx@192.168.1.100>..Call-ID: 02da184411beb7be4a2b0e55309a42bb@203.113.125.82..CSeq: 102
ACK..User-Agent: Asterisk PBX 1.6.2.6..Content-Length: 0....
#
U 192.168.1.100:5060 -> 180.180.109.166:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-480f3a33e90a4b6d-1---d8754z-;recei
ved=180.180.109.166;rport=5060..From: "1002"<sip:1002@xxxx.dyndns.org>;tag=3305f658..To: "1100"<sip:1100@xxxx.
dyndns.org>;tag=as7c9b2dea..Call-ID: YjQ5MTk1NzA3YzQ3YWEwMDkwNGVlZTM1YjhlM2NiN2I...CSeq: 2 INVITE..Server: Asterisk PBX
1.6.2.6..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces, timer..Contact:
<sip:1100@192.168.1.100>..Content-Type: application/sdp..Content-Length: 312....v=0..o=root 1888462462 1888462462 IN IP4
192.168.1.100..s=Asterisk PBX 1.6.2.6..c=IN IP4 192.168.1.100..t=0 0..m=audio 16320 RTP/AVP 0 8 3 101..a=rtpmap:0 PCMU/
8000..a=rtpmap:8 PCMA/8000..a=rtpmap:3 GSM/8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 0-16..a=silenceSupp:off -
- - -..a=ptime:20..a=sendrecv..
#
U 192.168.1.100:5060 -> 180.180.109.166:5060
SIP/2.0 503 Service Unavailable..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-480f3a33e90a4b6d-1---d8754z-;re
ceived=180.180.109.166;rport=5060..From: "1002"<sip:1002@xxxx.dyndns.org>;tag=3305f658..To: "1100"<sip:1100@savecal
l1.dyndns.org>;tag=as7c9b2dea..Call-ID: YjQ5MTk1NzA3YzQ3YWEwMDkwNGVlZTM1YjhlM2NiN2I...CSeq: 2 INVITE..Server: Asterisk P
BX 1.6.2.6..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces, timer..Conten
t-Length: 0..X-Asterisk-HangupCause: Call Rejected..X-Asterisk-HangupCauseCode: 21....
#
U 180.180.109.166:5060 -> 192.168.1.100:5060
ACK sip:1100@xxxx.dyndns.org SIP/2.0..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-480f3a33e90a4b6d-1---
d8754z-;rport..To: "1100"<sip:1100@xxxx.dyndns.org>;tag=as7c9b2dea..From: "1002"<sip:1002@xxxx.dyndns.org>;tag
=3305f658..Call-ID: YjQ5MTk1NzA3YzQ3YWEwMDkwNGVlZTM1YjhlM2NiN2I...CSeq: 2 ACK..Content-Length: 0....
#
U 180.180.109.166:5060 -> 192.168.1.100:5060
PUBLISH sip:1002@xxxx.dyndns.org SIP/2.0..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-9f3dd20eb86e3236-
1---d8754z-;rport..Max-Forwards: 70..Contact: <sip:1002@180.180.109.166:5060>..To: "1002"<sip:1002@xxxx.dyndns.org>
..From: "1002"<sip:1002@xxxx.dyndns.org>;tag=e445e732..Call-ID: NzgzMjFkNDgzYTM3ZjZhODViOTZiZDUxMjQ5N2I4MWE...CSeq:
1 PUBLISH..Expires: 3600..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO..Content-Ty
pe: application/pidf+xml..User-Agent: X-Lite release 1103k stamp 56013..Event: presence..Content-Length: 428....<?xml ve
rsion='1.0' encoding='UTF-8'?><presence xmlns='urn:ietf:params:xml:ns:pidf' xmlns:dm='urn:ietf:params:xml:ns:pidf:data-m
odel' xmlns:rpid='urn:ietf:params:xml:ns:pidf:rpid' xmlns:c='urn:ietf:params:xml:ns:pidf:cipid' entity='sip:1002@savecal
l1.dyndns.org'><tuple id='t6979997d'><status><basic>open</basic></status></tuple><dm:person id='p86781060'><rpid:activit
ies><rpid:unknown/></rpid:activities></dm:person></presence>
#
U 192.168.1.100:5060 -> 180.180.109.166:5060
SIP/2.0 501 Method Not Implemented..Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-d8754z-9f3dd20eb86e3236-1---d8754z-
;received=180.180.109.166;rport=5060..From: "1002"<sip:1002@xxxx.dyndns.org>;tag=e445e732..To: "1002"<sip:1002@save
call1.dyndns.org>;tag=as4d2a3610..Call-ID: NzgzMjFkNDgzYTM3ZjZhODViOTZiZDUxMjQ5N2I4MWE...CSeq: 1 PUBLISH..Server: Asteri
sk PBX 1.6.2.6..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO..Supported: replaces, timer..Co
ntent-Length: 0....
#
U 180.180.109.166:5060 -> 192.168.1.100:5060
..................
exit
19 received, 0 dropped

ที่ ToT

[root@xxxx ~]# ngrep -d eth0 host 203.113.125.82 and port 5060
interface: eth0 (192.168.1.0/255.255.255.0)
filter: (ip) and ( host 203.113.125.82 and port 5060 )
#
U 192.168.1.100:5060 -> 203.113.125.82:5060
INVITE sip:1100@203.113.125.82:5060 SIP/2.0..Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK5f44142e;rport..Max-Forwa
rds: 70..From: "1002" <sip:06000734xx@203.113.125.82>;tag=as7233efdc..To: <sip:1100@203.113.125.82:5060>..Contact: <sip:
06000734xx@192.168.1.100>..Call-ID: 07fd08f7188b519d7e80485311cee958@203.113.125.82..CSeq: 102 INVITE..User-Agent: Aster
isk PBX 1.6.2.6..Date: Fri, 21 May 2010 18:55:09 GMT..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
, INFO..Supported: replaces, timer..Content-Type: application/sdp..Content-Length: 401....v=0..o=root 278472057 27847205
7 IN IP4 192.168.1.100..s=Asterisk PBX 1.6.2.6..c=IN IP4 192.168.1.100..t=0 0..m=audio 17538 RTP/AVP 0 8 3 4 18 101..a=r
tpmap:0 PCMU/8000..a=rtpmap:8 PCMA/8000..a=rtpmap:3 GSM/8000..a=rtpmap:4 G723/8000..a=fmtp:4 annexa=no..a=rtpmap:18 G729
/8000..a=fmtp:18 annexb=no..a=rtpmap:101 telephone-event/8000..a=fmtp:101 0-16..a=silenceSupp:off - - - -..a=ptime:20..a
=sendrecv..
#
U 203.113.125.82:5060 -> 192.168.1.100:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP 58.8.107.154:49957;received=192.168.1.100;branch=z9hG4bK5f44142e;rport=50796..From:
"1002" <sip:06000734xx@203.113.125.82>;tag=as7233efdc..To: <sip:1100@203.113.125.82:5060>..Call-ID: 07fd08f7188b519d7e8
0485311cee958@203.113.125.82..CSeq: 102 INVITE....
#
U 203.113.125.82:5060 -> 192.168.1.100:5060
SIP/2.0 403 Forbidden..Via: SIP/2.0/UDP 58.8.107.154:49957;received=192.168.1.100;branch=z9hG4bK5f44142e;rport=50796..Fr
om: "1002" <sip:06000734xx@203.113.125.82>;tag=as7233efdc..To: <sip:1100@203.113.125.82:5060>;tag=aprqngfrt-0ijkjt10000c
6..Call-ID: 07fd08f7188b519d7e80485311cee958@203.113.125.82..CSeq: 102 INVITE....
#
U 192.168.1.100:5060 -> 203.113.125.82:5060
ACK sip:1100@203.113.125.82:5060 SIP/2.0..Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK5f44142e;rport..Max-Forwards
: 70..From: "1002" <sip:06000734xx@203.113.125.82>;tag=as7233efdc..To: <sip:1100@203.113.125.82:5060>;tag=aprqngfrt-0ijk
jt10000c6..Contact: <sip:06000734xx@192.168.1.100>..Call-ID: 07fd08f7188b519d7e80485311cee958@203.113.125.82..CSeq: 102
ACK..User-Agent: Asterisk PBX 1.6.2.6..Content-Length: 0....
exit
6 received, 0 dropped
[root@xxxx ~]#
diamond
Bronz Member
 
โพสต์: 5
ลงทะเบียนเมื่อ: 09 พ.ค. 2010 16:09

Re: เทคนิคการติดตั้ง Asterisk ไว้หลัง NAT มีตัวอย่างให้ดู

โพสต์โดย nuiz » 22 พ.ค. 2010 08:38

สาเหตุที่ได้ยินเสียง "All circuits are busy now" คือเวลาโทรไปที่เบอร์ 1100 (เบอร์ Call Center ของ TOT) แล้ว ทาง TOT ตอบกลับมาเป็น " 403 Forbidden" อ่ะครับ ผมดูจาก Invite Message ที่ Asterisk ส่งไปให้ TOT แล้ว สังเกตุเห็น Codec มันมี Priority แบบนี้ PCMU, PCMA/8000, GSM, G723, G729 และ RTP IP มันเป็น Private IP (192.168.1.100)

แนะนำดังนี้ครับ
1. แก้ไขบรรทัด Allow ใน Peer Detail ตอนที่คอนฟิก TOT ให้ใช้ Codec G.729 อย่างเดียวก็พอครับ เพราะมันใช้คุยกับ TOT อย่างเดียว ถ้า Client ต้องการจะคุยผ่าน TOT แล้วใช้ Codec ที่ไม่ใช่ G.729 ตัว Asterisk ก็จะทำ Codec Translation ให้

allow=g729

ถ้า Asterisk ยังไม่มี G.729 ก็ให้ติดตั้งเพิ่มเติม ตามบทความนี้ครับ Asterisk G.729

2. เหมือนว่า Stun ยังไม่เวอร์ค เพราะใน Invite Message ผมยังเห็น IP Private ของ Asterisk อยู่เลย (หรือว่าคุณ diamond เปลี่ยนเพื่อปิดบัง IP จริงๆไว้) พอ TOT เห็น Private IP ก็อาจจะปฏิเสธการโทรไปเลย โดยส่ง "403 Forbidden" กลับมาครับ

ถ้า Stun เวอร์คจริงๆ ต้องเห็นเป็น Public IP ครับ ซึ่ง Asterisk มันจะเอามาแทนที่ Private IP ของมันครับ ลองใช้คู่เลยได้ป่ะครับ ทั้ง External Host และ Stun

เอา 2 อย่างนี่ก่อนครับ ถ้านึกอะไรออกเดี๋ยวโพสต์เพิ่มเติม :D
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 6993
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

ย้อนกลับต่อไป

ย้อนกลับไปยัง Asterisk SIP Server

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 2 ท่าน

cron