หน้า 1 จากทั้งหมด 7
ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
01 มี.ค. 2011 00:37
โดย nottycrazy2
คือผมต้องการที่จะโทรข้าม sever โดยใช้ iax protocol ครับ ขอความกรุณาพี่ๆ ช่วยแนะนำด้วยครับ โดยผมทำการคอนฟิกตามนี้ครับ
iax.conf [severA]
[general]
autokill=yes
register => toronto:welcome@10.2.7.102
[osaka]
type=friend
host=dynamic
trunk=yes
secret=welcome
context=incoming_osaka
[2001]
type=friend
host=dynamic
context=phones
iax.conf [severB]
[general]
autokill=yes
register => osaka:welcome@10.2.7.100
[toronto]
type=friend
host=dynamic
trunk=yes
secret=welcome
context=incoming_toronto
[1001]
type=friend
host=dynamic
context=phones
โดย extension.conf [serverA]
[globals]
[general]
autofallthrough=yes
[default]
[incoming_calls]
[phones]
include => internal
include => remote
[internal]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/${EXTEN},30)
exten => _2XXX,n,Hangup()
[remote]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dial(IAX2/toronto/${EXTEN})
exten => _1XXX,n,Hangup()
[toronto_incoming]
include => internal
และโดย extension.conf [serverB]
[globals]
[general]
autofallthrough=yes
[default]
[incoming_calls]
[phones]
include => internal
include => remote
[internal]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dial(IAX2/${EXTEN},30)
exten => _1XXX,n,Hangup()
[remote]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/osaka/${EXTEN})
exten => _2XXX,n,Hangup()
[osaka_incoming]
include => internal
แล้วพอโทรด้วย Soft Phone Zilper โดยหมุนจาก server A ไป Server B (1001) โทรไม่ได้ครับ ขึ้นที่ Soft phone ว่า no route to destination ครับ
เข้าดูใน asterisk -r ของฝั่ง server A ปรากฎดังนี้ [Mar 1 00:03:27] NOTICE[1278]:chan_iax2.c:10903 socket_process:Rejected connect attempt frome 10.2.7.74, request '2001@osaka_incoming' does not exist อ่ะครับ
และเมื่อโทรจากฝั่ง B มา ฝั้ง A ก็เหมือนกันครับ
รบกวนท่านผู้รู้ช่วยแนะนำหน่อยครับ (ผมเป็นมือใหม่จึงเอาโค้ดจาก หนังสือ Asterisk The future of telephony มาลองน่ะครับ)
ขอบคุณครับ
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
01 มี.ค. 2011 09:53
โดย nuiz
ไม่ค่อยสันทัด iax นะครับ ใช้แต่ sip แต่อยากจะแชร์ไอเดีย
เครื่องแปลง osaka, toronto เป็น ip address ได้ใช่ป่ะครับ ผมว่าน่าจะแปลงไม่ได้
ลองแก้ไขบรรทัดนี้ก่อนครับ
exten => _1XXX,n,Dial(IAX2/toronto/${EXTEN})
เปลี่ยน toronto เป็น ip address
exten => _2XXX,n,Dial(IAX2/osaka/${EXTEN})
เปลี่ยน osaka เป็น ip address
หรือไม่ก็เข้าไปแก้ไฟล์ /etc/hosts ครับ เพิ่มอีก 2 บรรทัดเข้าไปต่อท้าย
192.168.1.1 toronto
192.168.2.1 osaka
แก้ไข 192.168.1.1 และ 192.168.2.1 ให้เป็น ip address ของ toronto และ osaka ตามลำดับครับ
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
02 มี.ค. 2011 13:20
โดย nottycrazy2
ขอบคุณครับผม เดี๋ยวผมขอลองแล้วจะกลับมารายงานผลนะครับ
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
02 มี.ค. 2011 16:35
โดย nottycrazy2
ขอขอบคุณ nuiz มากๆครับ โทรได้แล้วครับ จะเอาไปพัฒนาต่อครับผม อันนี้เป็นโครงงานของผมน่ะครับ นั่งงมมานานมากๆเลย ขอขอบคุณมากๆครับ
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
02 มี.ค. 2011 18:08
โดย nottycrazy2
จากที่ลองคอนฟิกตามที่คุณ nuiz แนะนำมาครับ ทำให้โทรได้ตามต้องการ ผมเลยลองเพิ่ม Secret ในส่วนของ Extension ในไฟล์ iax.conf ของทั้ง 2 sever
iax.conf [severA]
[general]
bandwidth=low
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
register => toronto:1234@10.2.7.48
[osaka]
username=osaka
secret=1234
context=incoming_osaka
type=friend
host=dynamic
callerid=123456
[2001]
username=2001
secret=1234 <---------------
type=friend
host=dynamic
context=phones
iax.conf [severB]
[general]
bandwidth=low
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
register => osaka:1234@10.2.7.100
[toronto]
username=toronto
secret=1234
context=incoming_toronto
type=friend
host=dynamic
callerid=123456
[1001]
username=1001
secret=1234 <-------------------
type=friend
host=dynamic
context=phones
extension.conf [serverA]
[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
[default]
[incoming_calls]
[phones]
include => internal
include => remote
[internal]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/${EXTEN},30)
exten => _2XXX,n,Hangup()
[remote]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dial(IAX2/10.2.7.48/${EXTEN})
exten => _1XXX,n,Hangup()
[toronto_incoming]
include => internal
extension.conf [serverB]
[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
[default]
[incoming_calls]
[phones]
include => internal
include => remote
[internal]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dial(IAX2/${EXTEN},30)
exten => _1XXX,n,Hangup()
[remote]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/10.2.7.100/${EXTEN})
exten => _2XXX,n,Hangup()
[osaka_incoming]
include => internal
เมื่อทำการลองโทรจาก Server A ไปยัง Server B ได้ผลดังนี้
Server A [Mar 2 17:55:03] WARNING[1171] : chan_iax2.c:10874 socket_process: I don't know how to authenticate 1001 to 10.2.7.48
เมื่อทำการลองโทรจาก Server B ไปยัง Server A ได้ผลดังนี้
Server B [Mar 2 17:55:03] WARNING[1200] : chan_iax2.c:10874 socket_process: I don't know how to authenticate 2001 to 10.2.7.100
รบกวนคุณ nuiz และพี่ๆท่านอื่น ช่วยแนะนำด้วยครับผม
ขอบคุณครับ
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
02 มี.ค. 2011 20:44
โดย nuiz
สองเครื่องนี้ register กันได้ป่าวครับ คำสั่ง iax2 show registry จาก asterisk -r และอีกคำสั่งคือ iax2 show peers ว่ามองเห็น peers ไรบ้าง
ปัญหาถ้าไม่ใช่เกิดจากการ register ก็เกิดจากการ authentication ครับ ดังนี้
ตอนโทรจาก 1001 ไปยัง 2001 เบอร์ของ 1001 ไปโผล่ทางด้านฝั่ง serverA ด้วย แต่ serverA เช็คว่าเบอร์ 1001 นี้ไม่ได้อยู่ใน client ของมัน มันก็เลย reject
ทำนองเดียวกัน ตอนโทรจาก 2001 ไปยัง 1001 ปรากฏว่าเบอร์ 2001 ไปโผล่ทางฝั่ง serverB ด้วย แต่ serverB เช็คว่าเบอร์ 2001 นี้ไม่ได้เป็น client ของมัน มันก็เลย reject
แต่ทั่วๆไปเบอร์มันก็ต้องไปโผล่อยู่แล้วครับ แต่ผมไม่แน่ใจว่าทำไม server มัน reject หรือว่านี่จะเป็นธรรมชาติของ iax เวลาเอา server สองตัวคุยกัน ผมไม่สันทัด iax ครับ สารภาพตรงๆ
ถ้าอยากแก้ปัญหาอย่างรวดเร็ว ให้ปลอม callerid โดยเพิ่มบรรทัด fromuser เข้าไปใน [toronto] และ [osaka] ตามนี้
ที่ serverA
[osaka]
fromuser=toronto
ซึ่งจะทำให้เวลาโทรจาก 2001 ไปยัง 1001 ทางฝั่ง serverB จะมองเห็นว่าโทรมาจาก toronto ซึ่งมันก็จะ accept เพราะว่ามี user=toronto รีจิสเตอร์อยู่แล้ว
ส่วนที่ serverB
[toronto]
fromuser=osaka
ซึ่งจะทำให้เวลาโทรจาก 1001 ไปยัง 2001 ทางฝั่ง serverA จะมองเห็นว่าโทรมาจาก osaka ซึ่งมันจะ accept เพราะว่ามี user=osaka รีจิสเตอร์อยู่แล้ว
ประมาณนี้ครับ
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
02 มี.ค. 2011 22:40
โดย nottycrazy2
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
02 มี.ค. 2011 23:19
โดย nuiz
เป็นปัญหาจาก context ครับ
อันนี้ผมสรุปมาจากข้อมูลที่ให้มา
-ServerA-
ไฟล์ iax.conf
[osaka]
context = osaka_incoming
[2001]
context = phones
ไฟล์ extensions.conf
[internal]
exten => _2XXX,1,...
[phones]
include => internal
include => remote
[toronto_incoming]
include => internal
-ServerB-
ไฟล์ iax.conf
[toronto]
context = toronto_incoming
[1001]
context = phones
ไฟล์ extensions.conf
[internal]
exten => _1XXX,1,...
[phones]
include => internal
include => external
[osaka_incoming]
include => internal
จะเห็นว่า เวลาโทรจากเบอร์ 1001 ไปหา 2001 มันเป็นการส่งจาก ServerB ไปยัง ServerA
พอไปถึง ServerA มันจะเข้าไฟล์ iax.conf ก่อน และเข้าไปที่ [osaka] และมันจะมองเห็นบรรทัด context=osaka_incoming
แต่ว่าในไฟล์ extensions.conf ปรากฏว่าไม่มี [osaka_incoming] อยู่เลยครับ ทำให้มัน fail
ที่ไไฟล์ extensions.conf ฝั่ง Server A ต้องแก้ [toronto_incoming] เป็น [osaka_incoming] ครับ
และที่ฝั่ง Server B ก็ต้องแก้แบบนี้
อ่อ บรรทัด fromuser นี่ก็ใส่ ; ไปเลยครับ
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
02 มี.ค. 2011 23:58
โดย nottycrazy2
ขอบคุณพี่ nuiz ครับผม เด๋วขอลองแป๊ปนึงมารายงานผลครับพี่
ปล.หากไม่รบกวนเกินไปผมขอ e-mail พี่ได้ไหมครับ e-mail ผม
notty_crazy2@hotmail.com ครับ หากไม่สะดวกขออภัยครับผม
(จะได้ไม่เปลืองพื้นที่บอร์ดมากเกินไป
)
Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ
โพสต์แล้ว:
03 มี.ค. 2011 00:16
โดย nuiz
เอาในบอร์ดนี่แหล่ะครับ สะดวกสุดๆ