วิธีการเชื่อมต่อระหว่าง Site-to-Site ด้วย IAX2

Asterisk Opensource IP Pbx

วิธีการเชื่อมต่อระหว่าง Site-to-Site ด้วย IAX2

โพสต์โดย nuiz » 10 มี.ค. 2011 14:17

คอนฟิกนี้ก็ประมาณว่าเป็นการจำลองการโทรข้าม Asterisk สองเครื่องนี้วางอยู่บน Lan เดียวกัน (เทสก่อน เวอร์คแล้วค่อยย้ายและเปลี่ยน ip address) จะเป็นการโทรผ่าน IAX2 Protocol ครับ

มีอยู่ 2 ฝั่ง ด้าน Huamak และ Bangkapi แต่ละฝั่งมี Asterisk (IAX2) server อยู่ทั้งคู่ ด้าน Huamak มีเบอร์ Extension 1xxx ส่วนด้าน Bangkapi มีเบอร์ extension 2xxx แต่ละเบอร์สามารถโทรหากันภายในและข้าม Server โดยกดเบอร์ Extension ที่ต้องการได้เลย ไม่ต้องกด Code อะไรก่อน

มาดูวิธีการคอนฟิกและทดสอบกันครับ

1. ไซต์ Huamak

IAX2 Server IP = 192.168.1.18 ติดตั้ง Asterisk 1.4.39.2
IAX2 Cleint = Zoiper 2.37, Extension 1000, Codec = gsm, ulaw, alaw

1.1 ไฟล์ /etc/asterisk/iax.conf

;this is an iax configuration for huamak headoffice

[general]
bindaddress=0.0.0.0:4569
iaxcompact=yes
delayreject=yes
amaflags=default
bandwidth=high
autokill = yes
codecpriority=host
minregexpire=60
maxregexpire=3600
authdebug=no
autokill=yes
trunktimestamps=no
trunkfreq=20

;register=> from_huamak:3333@192.168.1.30

[guest]
type=friend
context=default
callerid="Guest IAX User"

[1000]
type=friend
host=dynamic
context=phones
auth=md5
secret=pass1000
callerid="Client 1000" <1000>
qualify=yes
disallow=all
allow=gsm
allow=ulaw
allow=alaw

[from_bangkapi]
;for receiving inbound calls from bangkapi office - 192.168.1.30
type=friend
auth=md5
context=inbound
secret=8888
disallow=all
allow=gsm
allow=ulaw
allow=alaw

[to_bangkapi]
;for making outbound calls to bangkapi office - 192.168.1.30
type=peer
auth=md5
secret=3333
host=192.168.1.30
username=from_huamak
qualify=yes
disallow=all
allow=gsm
allow=ulaw
allow=alaw

1.2 ไฟล์ /etc/asterisk/extensions.conf

[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp
;TRUNK=DAHDI/g0
TRY=3

[inbound]
include => phones

[phones]
include => outbound
exten => _1XXX,1,Dial(IAX2/${EXTEN},60,tT)
exten => _1XXX,n,Hangup

[outbound]
exten => _2XXX,1,Dial(IAX2/to_bangkapi/${EXTEN},60,tT)
exten => _2XXX,n,Hangup



2. ไซต์ Bangkapi

IAX2 Server IP = 192.168.1.30 ติดตั้ง Asterisk 1.4.39.2
IAX2 Cleint = Zoiper 2.37, Extension 2000, Codec = gsm, ulaw, alaw

2.1 ไฟล์ /etc/asterisk/iax.conf

;this is an iax configuration for bangkapi branch office

[general]

bindaddress=0.0.0.0:4569
iaxcompact=yes
delayreject=yes
amaflags=default
bandwidth=high
autokill = yes
codecpriority=host
minregexpire=60
maxregexpire=3600
authdebug=no
autokill=yes
trunktimestamps=no
trunkfreq=20

;register => from_bangkapi:8888@192.168.1.18

[guest]
type=friend
context=default
callerid="Guest IAX User"

[2000]
type=friend
host=dynamic
context=phones
auth=md5
secret=pass2000
qualify=yes
disallow=all
allow=gsm
allow=ulaw
allow=alaw

[from_huamak]
;for inbound from huamak headoffice - 192.168.1.18
type=friend
auth=md5
context=inbound
secret=3333
disall=all
allow=gsm
allow=ulaw
allow=alaw

[to_huamak]
;for outbound call to huamak headoffice - 192.168.1.18
type=peer
auth=md5
secret=8888
host=192.168.1.18
username=from_bangkapi
qualify=yes
disallow=all
allow=gsm
allow=ulaw
allow=alaw

2.2 ไฟล์ /etc/asterisk/extensions.conf

[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp
;TRUNK=DAHDI/g0
TRY=3

[inbound]
include => phones

[phones]
include => outbound
exten => _2XXX,1,Dial(IAX2/${EXTEN},60,tT)
exten => _2XXX,n,Hangup

[outbound]
exten => _1XXX,1,Dial(IAX2/to_huamak/${EXTEN},60,tT)
exten => _1XXX,n,Hangup

3. คอนฟิก Zoiper IAX Softphone
3.1 ด้าน Huamak คอนฟิกเป็นเบอร์ 1000 รีจิสเตอร์กับ Server IP 192.168.1.18
รูปภาพ

รูปภาพ

รูปภาพ


3.2 ด้าน Bangkpai คอนฟิกเป็นเบอร์ 2000 รีจิสเตอร์กับ Server IP 192.168.1.30

รูปภาพ

รูปภาพ

รูปภาพ

4. โทรทดสอบ

4.1 โทรจากเบอร์ Extension 1000 ฝั่ง Huamak ไปเบอร์ Extension 2000 ฝั่ง Bangkpai

รูปภาพ

ด้านเบอร์ Extension 2000 มีแจ้งว่าโทรเข้ามาจาก Extension 1000

รูปภาพ

4.2 โทรจากเบอร์ Extension 2000 ฝั่ง Bangkapi ไปเบอร์ Extension 1000 ฝั่ง Huamak


5. Messages บน Asterisk Console

5.1 บน Huamak server ขณะโทรจากเบอร์ Extension 1000 ไปยังเบอร์ Extensions 2000 ที่ Bangkapi

โค้ด: เลือกทั้งหมด
[2011-03-10 15:07:42]     -- Accepting AUTHENTICATED call from 192.168.1.48:
       > requested format = gsm,
       > requested prefs = (),
       > actual format = gsm,
       > host prefs = (gsm|ulaw|alaw),
       > priority = mine
[2011-03-10 15:07:42]     -- Executing [2000@phones:1] Dial("IAX2/1000-777", "IAX2/to_bangkapi/2000|60|tT") in new stack
[2011-03-10 15:07:42]     -- Called to_bangkapi/2000
[2011-03-10 15:07:42]     -- Call accepted by 192.168.1.30 (format gsm)
[2011-03-10 15:07:42]     -- Format for call is gsm
[2011-03-10 15:07:43]     -- IAX2/to_bangkapi-1866 is ringing
[2011-03-10 15:07:45]     -- IAX2/to_bangkapi-1866 stopped sounds
[2011-03-10 15:07:45]     -- IAX2/to_bangkapi-1866 answered IAX2/1000-777
[2011-03-10 15:07:54]     -- Hungup 'IAX2/to_bangkapi-1866'
[2011-03-10 15:07:54]   == Spawn extension (phones, 2000, 1) exited non-zero on 'IAX2/1000-777'
[2011-03-10 15:07:54]     -- Hungup 'IAX2/1000-777'


ไอพี 192.168.1.48 เป็น IP Address ของ Zoiper IAX Softphone นะครับ

5.2 (ต่อจาก 5.1) เป็น Message บน Bangkapi เมื่อเบอร์ Extension 1000 ที่ Huamak โทรมาหาเบอร์ Extension 2000 ที่ฝั่งของมัน

โค้ด: เลือกทั้งหมด
[2011-03-10 15:05:26]     -- Accepting AUTHENTICATED call from 192.168.1.18:
       > requested format = gsm,
       > requested prefs = (gsm|ulaw|alaw),
       > actual format = gsm,
       > host prefs = (gsm|ulaw|alaw),
       > priority = mine
[2011-03-10 15:05:26]     -- Executing [2000@inbound:1] Dial("IAX2/from_huamak-1680", "IAX2/2000|60|tT") in new stack
[2011-03-10 15:05:26]     -- Called 2000
[2011-03-10 15:05:26]     -- Call accepted by 192.168.1.48 (format gsm)
[2011-03-10 15:05:26]     -- Format for call is gsm
[2011-03-10 15:05:27]     -- IAX2/2000-4627 is ringing
[2011-03-10 15:05:29]     -- IAX2/2000-4627 answered IAX2/from_huamak-1680
[2011-03-10 15:05:38]     -- Hungup 'IAX2/2000-4627'
[2011-03-10 15:05:38]   == Spawn extension (inbound, 2000, 1) exited non-zero on 'IAX2/from_huamak-1680'
[2011-03-10 15:05:38]     -- Hungup 'IAX2/from_huamak-1680'


6. การแก้ปัญหาการใช้งาน
แรกๆที่ทดสอบผมเจอปัญหาการโทรข้าม Server กันหน่ะครับ เพราะตอนแรกผมไม่เข้าใจการทำงานของ IAX (ปกติใช้แต่ SIP) คือเวลามันจะคุยกับ Server อีกตัวนึง มันต้องมี Authentication ทั้งตอนโทรเข้าและโทรออก ยกตัวอย่างเช่น
จะโทรจาก Huamak ไป Bangkapi ทางด้าน Bangkapi จะต้องเซ็ตไว้ในไฟล์ iax.conf ให้มีรายละเอียดของ inbound จาก Huamak ซึ่งผมใช้ชื่อว่า [from_huamak] และรายละเอียดของ outbound ที่จะโทรไป Huamak ซึ่งผมใช้ชื่อว่า [to_huamak]
เมื่อ Huamak ส่ง Call เข้ามายัง Bangkapi ทางด้าน Bangkapi ก็จะเช็คข้อมูลที่ Huamak ส่งมาว่าตรงตามที่ระบุไว้ในส่วน [from_huamak] หรือไม่ เช่น username ต้องเป็น from_huamak และ secret ต้องเป็น 3333 ถ้าไม่ก็จะ Reject
อ่านเฉยๆอาจจะยังไม่เข้าใจ ยกตัวอย่างเลยหล่ะกันครับ

ตอนโทรจาก Huamak ไปบางกะปิ
ที่ Huamak Server มันจะใช้อันนี้

[to_bangkapi]
;for making outbound calls to bangkapi office - 192.168.1.30
type=peer
auth=md5
secret=3333
host=192.168.1.30
username=from_huamak
qualify=yes
disallow=all
allow=gsm
allow=ulaw
allow=alaw

และเมื่อ Call มาถึง Bangkapi Server มันจะตรวจสอบ Call กับข้อมูลอันนี้

[from_huamak]
;for inbound from huamak headoffice - 192.168.1.18
type=friend
auth=md5
context=inbound
secret=3333
disall=all
allow=gsm
allow=ulaw
allow=alaw

ดูสีนะครับ สีแดง-สีแดง ต้องตรงกัน สีน้ำเงิน-สีน้ำเงิน ต้องตรงกัน ไม่งั้นโทรไม่เข้า

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

Re: วิธีการเชื่อมต่อระหว่าง Site-to-Site ด้วย IAX2

โพสต์โดย nottycrazy2 » 11 มี.ค. 2011 03:46

สวัสดีครับพี่ nuiz เป็นกระทู้ที่ยอดเยี่มมมากๆครับผม ตีโจทย์แตกดังโพล๊ะเลย อิอิ :) ต้องขอขอบคุณพี่มากๆครับผมที่ชี้ทางสว่างให้ผม ขอบคุณมากครับ ทำตามแล้วก็ ok เลยโทรได้ดั่งใจครับพี่ แต่ของผมมี Warning ขึ้นนิดนึงครับ แต่โทรได้นะครับ เป็นทั้งการโทรจาก A ไป B , B ไป A เลยครับ ผมไม่แน่ใจว่าตัว OpenSSL ที่มันให้ install เอาไว้ทำอะไรน่ะครับผม

รูปภาพ

ขั้นต่อไปผมก็ต้องมานั่งศึกษาระบบ Voice mail , Fax ต่อล่ะครับผม ติดตรงนี้ (IAX Trunk) มานานจริงๆ 2 อาทิตย์กว่า ถ้าไม่ได้พี่ nuiz คอยแนะนำป่านนี้ยังหาทางออกไม่เจอแน่ๆครับ
ขอบคุณพี่มากๆครับผม :P สวัสดีครับ
nottycrazy2
Silver Member
 
โพสต์: 43
ลงทะเบียนเมื่อ: 01 มี.ค. 2011 00:18

Re: วิธีการเชื่อมต่อระหว่าง Site-to-Site ด้วย IAX2

โพสต์โดย nuiz » 11 มี.ค. 2011 09:11

openssl เอาไว้เข้ารหัส (encrypt) และถอดรหัส (decrypt) อ่ะครับ
md5 นี่ก็เป็น algorithm ในการเข้าและถอดรหัสอย่างนึงครับ ซึ่งใช้ openssl ทำได้

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


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

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

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