หน้า 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
ขอขอบคุณ คุณ nuiz ที่มาตอบอีกครั้งครับ ผมได้ทำการ asterisk -r และ iax2 show registry , iax2 show peers ได้ผลดังนี้ครับ (ซึ่งก่อนหน้านี้ก็เป็นแบบนี้ แต่ผมไม่ได้เอารูปลง ต้องขออภัยครับ)

Server A
รูปภาพ

รูปภาพ

Server B
รูปภาพ

รูปภาพ

จากนั้นเป็นไฟล์ iax.conf ที่ทำการเพิ่ม fromuser ตามคำแนะนำ
Sever A
รูปภาพ

Sever B
รูปภาพ

พอทำการ reload iax2 แล้วทำการโทร ผลที่ได้เมื่อดูใน asterisk -r ตามนี้ครับ

เมื่อโทรจาก Sever A ไป Sever B
รูปภาพ

เมื่อโทรจาก Sever B ไป Sever A
รูปภาพ

Zoiper โชว์ว่า normal clearing

รูปภาพ

ครับผม ไม่ทราบว่าคุณ nuiz และพี่ๆท่านอื่นพอมีวิธีแก้ไข error ดังกล่าวอีกหรือไม่ครับ ถ้ามียังไงช่วยรบกวนให้คำแนะนำมือใหม่แบบผมด้วยครับ
ขอบคุณครับ

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 นี่ก็ใส่ ; ไปเลยครับ :D

Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ

โพสต์โพสต์แล้ว: 02 มี.ค. 2011 23:58
โดย nottycrazy2
ขอบคุณพี่ nuiz ครับผม เด๋วขอลองแป๊ปนึงมารายงานผลครับพี่ :D
ปล.หากไม่รบกวนเกินไปผมขอ e-mail พี่ได้ไหมครับ e-mail ผม notty_crazy2@hotmail.com ครับ หากไม่สะดวกขออภัยครับผม
(จะได้ไม่เปลืองพื้นที่บอร์ดมากเกินไป :) )

Re: ขอคำแนะนำในการ เชื่่อม 2 Asterisk sever ครับ

โพสต์โพสต์แล้ว: 03 มี.ค. 2011 00:16
โดย nuiz
เอาในบอร์ดนี่แหล่ะครับ สะดวกสุดๆ