Difference between revisions of "VoIP: Trunk Peering di Asterisk"

From OnnoWiki
Jump to navigation Jump to search
(New page: Trunk Peering di Asterisk Salah satu penarik penggunaan VoIP adalah SLJJ dan SLI gratisan melalui Internet. Bayangkan, jika anda mempunyai kantor cabang, atau mitra usaha yang sering ber...)
 
Line 1: Line 1:
Trunk Peering di Asterisk
+
Salah satu penarik penggunaan [[VoIP]] adalah [[SLJJ]] dan [[SLI]] gratisan melalui [[Internet]].
  
Salah satu penarik penggunaan VoIP adalah SLJJ dan SLI gratisan melalui Internet.
+
Bayangkan, jika anda mempunyai kantor cabang, atau mitra usaha yang sering berhubungan telepon dengan anda. Anda perlu membangun jaringan private antara kantor cabang atau mitra usaha tersebut agar dapat mem-bypass telkom secara keseluruhan. Ada beberapa cara yang dapat dilakukan untuk hal tersebut melalui [[Asterisk]], yaitu,
  
Bayangkan, jika anda mempunyai kantor cabang, atau mitra usaha yang sering berhubungan telepon dengan anda. Anda perlu membangun jaringan private antara kantor cabang atau mitra usaha tersebut agar dapat mem-bypass telkom secara keseluruhan. Ada beberapa cara yang dapat dilakukan untuk hal tersebut melalui Asterisk, yaitu,
+
* DUNDi, Distributed Universal Number Discovery protocol.
 +
* Directory terpusat, seperti VoIP Rakyat atau Free World Dialup.
  
DUNDi, Distributed Universal Number Discovery protocol.
+
Pada kesempatan ini akan di perlihatkan proses trunk peering menggunakan [[VoIP Rakyat]]. Mekanisme yang sama dapat dilakukan untuk [[SIP Proxy]] lain di seluruh dunia.
Directory terpusat, seperti VoIP Rakyat atau Free World Dialup.
 
  
Pada kesempatan ini akan di perlihatkan proses trunk peering menggunakan VoIP Rakyat. Mekanisme yang sama dapat dilakukan untuk SIP Proxy lain di seluruh dunia, termasuk Free World Dialup.
+
Di samping itu, juga akan di bahas sedikit tentang masalah yang akan kita hadapi secara nyata di konfigurasi jaringan yang banyak digunakan karena menggunakan [[NAT]] / [[Proxy Server]]. Parahnya sebagian orang menggunakan [[Firewall]] yang akhirnya memblokir sinyal [[VoIP]].
  
Di samping itu, juga akan di bahas sedikit tentang masalah yang akan kita hadapi secara nyata di konfigurasi jaringan yang banyak digunakan karena menggunakan NAT / Proxy Server. Parahnya sebagian orang menggunakan Firewall yang akhirnya memblokir sinyal VoIP.
+
Asumsi yang digunakan adalah kita sudah memiliki account di [[VoIP Rakyat]]. Dalam hal ini di asumasikan account tersebut adalah
  
Asumsi yang digunakan adalah kita sudah memiliki account di VoIP Rakyat. Dalam hal ini di asumasikan account tersebut adalah
+
nomor 2012345 password abcdef
 +
nomor 2055555 password 123456
  
nomor 2012345 password abcdef
+
Selanjutnya kita akan mengkonfigurasi secara lengkap file /etc/asterisk/sip.conf dan /etc/asterisk/extensions.conf, termasuk menyediakan fasilitas untuk melakukan testing.
nomor 2055555 password 123456
 
 
 
Selanjutnya kita akan mengkonfigurasi secara lengkap file sip.conf dan extensions.conf, termasuk menyediakan fasilitas untuk melakukan testing.
 
  
 
Secara umum hal, ada beberapa hal yang penting untuk di perhatikan dalam mengkonfigurasi trunk pada Asterisk
 
Secara umum hal, ada beberapa hal yang penting untuk di perhatikan dalam mengkonfigurasi trunk pada Asterisk
  
Registrasi ke Account SIP di voiprakyat (sip.conf)
+
* Registrasi ke Account SIP di voiprakyat (sip.conf)
Buat username & password untuk berbagai extension (sip.conf)
+
* Buat username & password untuk berbagai extension (sip.conf)
Konfigurasi Dialout, untuk berbagai konfigurasi (extensions.conf)
+
* Konfigurasi Dialout, untuk berbagai konfigurasi (extensions.conf)
Konfigurasi untuk Inbound call (extensions.conf pada [inbound-sip])
+
* Konfigurasi untuk Inbound call (extensions.conf pada [inbound-sip])
  
 
Dengan konfigurasi tersebut maka kita dapat menelepon ke luar dengan berbagai saluran yang ada. Juga kita dapat menerima telepon dari voiprakyat.or.id & dari Internet melalui Modul inbound-sip. Detail dari berbagai konfigurasi tersebut terlampir dalam konfigurasi terlampir.
 
Dengan konfigurasi tersebut maka kita dapat menelepon ke luar dengan berbagai saluran yang ada. Juga kita dapat menerima telepon dari voiprakyat.or.id & dari Internet melalui Modul inbound-sip. Detail dari berbagai konfigurasi tersebut terlampir dalam konfigurasi terlampir.
sip.conf
 
;
 
; Konfigurasi SIP untuk Asterisk
 
;
 
[general]
 
disallow=all
 
allow=ulaw
 
port=5060 ; Port SIP yang harus di bind (di tempelkan).
 
bindaddr=0.0.0.0 ; Address yang di bind ke SIP
 
externip=xxx.xxx.xxx.xxx ; jika kita tahu IP address publik yang kita gunakan.
 
localnet=192.168.0.0
 
localmask=255.255.255.0
 
context=inbound-sip ; Default context untuk panggilan yang masuk
 
maxexpirey=180
 
defaultexpirey=160
 
tos=reliability
 
srvlookup=yes
 
; PENTING! registrasi ke SIP Server
 
register => 2012345:abcdef@voiprakyat.or.id/2012345 ; username 2012345 password abcdef
 
register => 2055555:123456@voiprakyat.or.id/2055555 ; username 2055555 password 123456
 
  
; kita perlu memberi account SIP di tempat kita agar panggilan dari
+
'''sip.conf'''
; voiprakyat.or.id dapat masuk ke PABX kita
+
;
;
+
; Konfigurasi SIP untuk Asterisk
[fwd1]
+
;
type=friend
+
[general]
secret=secret
+
disallow=all
username=2055555
+
allow=ulaw
fromuser=2055555
+
port=5060 ; Port SIP yang harus di bind (di tempelkan).
fromdomain=voiprakyat.or.id
+
bindaddr=0.0.0.0 ; Address yang di bind ke [[SIP]]
host=voiprakyat.or.id
+
externip=xxx.xxx.xxx.xxx ; jika kita tahu [[IP address]] publik yang kita gunakan.
dtmfmode=inband
+
localnet=192.168.0.0
nat=yes
+
localmask=255.255.255.0
canreinvite=no
+
context=inbound-sip ; Default context untuk panggilan yang masuk
 +
maxexpirey=180
 +
defaultexpirey=160
 +
tos=reliability
 +
srvlookup=yes
 +
; '''PENTING! registrasi ke [[SIP Server]]''
 +
register => 2012345:abcdef@voiprakyat.or.id/2012345 ; username 2012345 password abcdef
 +
register => 2055555:123456@voiprakyat.or.id/2055555 ; username 2055555 password 123456
 +
 +
; kita perlu memberi account SIP di tempat kita agar panggilan dari
 +
; voiprakyat.or.id dapat masuk ke PABX kita
 +
;
 +
[fwd1]
 +
type=friend
 +
secret=secret
 +
username=2055555
 +
fromuser=2055555
 +
fromdomain=voiprakyat.or.id
 +
host=voiprakyat.or.id
 +
dtmfmode=inband
 +
nat=yes
 +
canreinvite=no
 +
 +
[fwd2]
 +
type=friend
 +
secret=secret
 +
username=2012345
 +
fromuser=2012345
 +
fromdomain=voiprakyat.or.id
 +
host=voiprakyat.or.id
 +
dtmfmode=inband
 +
nat=yes
 +
canreinvite=no
 +
 +
; berikut adalah account SIP lokal untuk IP phone yang ada di rumah / di kantor
 +
;
 +
[phone17]
 +
disallow=all
 +
allow=ulaw
 +
type=friend
 +
host=dynamic
 +
defaultip=192.168.0.17
 +
dtmfmode=inband
 +
secret=voip17
 +
mailbox=2206
 +
context=home
 +
callerid="Bill Mandra" <2206>
 +
nat=no
 +
 +
[phone18]
 +
disallow=all
 +
allow=ulaw
 +
type=friend
 +
host=dynamic
 +
defaultip=192.168.0.18
 +
dtmfmode=inband
 +
secret=voip18
 +
mailbox=2204
 +
context=home
 +
callerid="Kitchen" <2204>
 +
nat=no  
  
[fwd2]
+
'''extensions.conf'''
type=friend
+
;
secret=secret
+
; Konfigurasi file extension statik yang digunakan oleh modul pbx_config
username=2012345
+
; Pada modul ini kita mengkonfigurasi semua panggilan masuk dan keluar di Asterisk.
fromuser=2012345
+
;
fromdomain=voiprakyat.or.id
+
[general]
host=voiprakyat.or.id
+
static=yes
dtmfmode=inband
+
writeprotect=no
nat=yes
+
canreinvite=no
+
[globals]
 +
DIALOUTANALOG=Zap/1
 +
MAINPHONE=Zap/2
 +
JESSICA=Zap/3
 +
CHRISTOPHER=Zap/4
 +
PORCH=Zap/5
 +
KITCHEN=SIP/phone18
 +
BILL=SIP/phone17
 +
;
 +
; pada confoh ini digunakan card ZAPTEL
 +
; tentunya kita dapat mengganti Zap/1, Zap/2, Zap/3 s/d Zap/5
 +
; dengan account SIP di Asterisk untuk IP Phone atau WiFi Phone
 +
; misalnya SIP/2000 ke IP Phone nomor extension 2000 dsb.
 +
 +
FWDUSERID1=2012345
 +
FWD1USERNAME=William Mandra
 +
FWDUSERID2=2055555
 +
FWD2USERNAME=Bujubuneng Mandra
 +
FWDPREFIX=*
 +
 +
HOMENUMBER=4208888
 +
BILLCELLPHONE=0811888888
 +
MOMCELLPHONE=0811999999
 +
JESSCELLPHONE=0813222222
 +
 +
;
 +
; Macro untuk Extension Asterisk
 +
;
 +
[macro-fastbusy]
 +
exten => s,1,Answer
 +
exten => s,2,Wait,1
 +
exten => s,3,Playback(ss-noservice)
 +
exten => s,4,Wait(30)
 +
exten => s,5,Hangup
 +
 +
[macro-dialoutsip]
 +
exten => s,1,SetCallerID(${FWDUSERID2})
 +
exten => s,2,SetCIDName(${FWD2USERNAME})
 +
exten => s,3,Dial(SIP/${FWDPREFIX}${ARG1}@fwd1,70)
 +
exten => s,4,Macro(fastbusy)
 +
exten => s,5,Hangup
 +
exten => s,104,Macro(fastbusy)
 +
exten => s,105,Wait,3
 +
exten => s,106,Playtones(congestion)
 +
exten => s,107,Wait,30
 +
exten => s,108,Hangup
 +
 +
[macro-billcellfwdoutsip2]
 +
exten => s,1,SetCallerID(${ARG2})
 +
exten => s,2,Dial(SIP/${FWDPREFIX}${ARG1}@fwd2,20)
 +
exten => s,3,Goto(local,2206,4)
 +
exten => s,102,Goto(local,2206,4)
 +
 +
;
 +
; Outbound
 +
; Panggilan keluar
 +
;
 +
[operator]
 +
exten => 0,1,Dial(${DIALOUTANALOG}/${EXTEN},70)
 +
exten => 0,2,Macro(fastbusy)
 +
exten => 0,102,Playback(ss-noservice)
 +
exten => 0,103,Macro(fastbusy)
 +
 +
[e911]
 +
exten => 911,1,Dial(${DIALOUTANALOG}/${EXTEN})
 +
exten => 911,2,Macro(fastbusy)
 +
exten => 911,102,Playback(ss-noservice)
 +
exten => 911,103,Macro(fastbusy)
 +
 +
[forced-analog]
 +
exten => _9.,1,Dial(${DIALOUTANALOG}/${EXTEN:1},70)
 +
exten => _9.,2,Macro(fastbusy)
 +
exten => _9.,102,Macro(fastbusy)
 +
 +
[fwd1-out]
 +
exten => _8.,1,SetCallerID(${FWDUSERID2})
 +
exten => _8.,2,SetCIDName(${FWD2USERNAME})
 +
exten => _8.,3,Dial(SIP/${EXTEN:1}@fwd1,70)
 +
exten => _8.,4,Macro(fastbusy)
 +
exten => _8.,5,Hangup
 +
 +
[fwd2-out-pvt]
 +
exten => _7.,1,SetCallerID(${FWDUSERID1})
 +
exten => _7.,2,SetCIDName(${FWD1USERNAME})
 +
exten => _7.,3,Dial(SIP/${EXTEN:1}@fwd2,70)
 +
exten => _7.,4,Macro(fastbusy)
 +
exten => _7.,5,Hangup
 +
 +
[information]
 +
exten => 108,1,Dial(${DIALOUTANALOG}/${EXTEN},70)
 +
exten => 108,2,Macro(fastbusy)
 +
exten => 108,102,Playback(ss-noservice)
 +
exten => 108,103,Macro(fastbusy)
 +
 +
; PSTN lokal di Jakarta
 +
;
 +
[pstn-local]
 +
exten => _021.,1,Dial(${DIALOUTANALOG}/${EXTEN:3})
 +
exten => _021.,2,Macro(fastbusy)
 +
exten => _021.,102,Macro(dialoutsip,${EXTEN})
 +
 +
[toll-free]
 +
exten => _0800.,1,Dial(${DIALOUTANALOG}/${EXTEN})
 +
exten => _0800.,2,Macro(fastbusy)
 +
exten => _0800.,102,Macro(dialoutsip,${EXTEN})
 +
 +
[long-distance]
 +
exten => _0XXXXXXXXXX,1,Macro(dialoutsip,${EXTEN})
 +
exten => _0XXXXXXXXXX,2,Macro(fastbusy)
 +
exten => _0XXXXXXXXXX,102,Dial(${DIALOUTANALOG}/${EXTEN})
 +
exten => _0XXXXXXXXXX,103,Macro(fastbusy)
 +
 +
[home]
 +
include => operator
 +
include => e911
 +
include => forced-analog
 +
include => fwd1-out
 +
include => fwd2-out-pvt
 +
include => information
 +
include => local
 +
include => pstn-local
 +
include => toll-free
 +
include => long-distance
 +
 +
;
 +
; Inbound
 +
; analog line
 +
 +
[nighttime-analog]
 +
exten => s,1,Wait(2)
 +
exten => s,2,Background(nighttime)
 +
exten => 1,1,Goto(daytime-analog,s,1)
 +
exten => 2,1,Voicemail(u2201)
 +
exten => 3,1,Voicemail(u2206)
 +
exten => 4,1,Voicemail(u2202)
 +
exten => 9,1,Playback(transfer)
 +
exten => 9,2,Ringing(1)
 +
exten => 9,3,Goto(local,2206,1)
 +
 +
[daytime-analog]
 +
exten => s,1,Zapateller(answer|nocallerid)
 +
exten => s,2,PrivacyManager
 +
exten => s,3,Ringing(1)
 +
exten => s,4,Dial(${MAINPHONE}&${KITCHEN},15)
 +
exten => s,5,Dial(${JESSICA},6)
 +
exten => s,6,Dial(${BILL},6)
 +
exten => s,7,Voicemail(u2201)
 +
exten => s,8,Hangup
 +
 +
[inbound-analog]
 +
include => daytime-analog|9:00-21:00|*|*
 +
include => nighttime-analog|21:00-09:00|*|*
 +
 +
; sip lines
 +
;
 +
[nighttime-fwd1]
 +
exten => s,1,Wait(2)
 +
exten => s,2,Background(nighttime)
 +
exten => 1,1,Goto(daytime-sip1,s,1)
 +
exten => 2,1,Voicemail(u2201)
 +
exten => 3,1,Voicemail(u2206)
 +
exten => 4,1,Voicemail(u2202)
 +
exten => 9,1,Playback(transfer)
 +
exten => 9,2,Goto(local,2206,1)
 +
 +
[daytime-fwd1]
 +
exten => s,1,Dial(${MAINPHONE}&${KITCHEN},15)
 +
exten => s,2,Dial(${JESSICA},6)
 +
exten => s,3,Dial(${BILL},6)
 +
exten => s,4,Voicemail(u2201)
 +
exten => s,5,Hangup
 +
 +
[inbound-fwd1]
 +
include => daytime-fwd1|9:00-21:00|*|*
 +
include => nighttime-fwd1|21:00-9:00|*|*
 +
 +
[inbound-sip]
 +
exten => 2055555,1,Goto(inbound-fwd1,s,1)
 +
exten => 2012345,1,Goto(local,2206,1)
  
; berikut adalah account SIP lokal untuk IP phone yang ada di rumah / di kantor
+
;
;
+
; Internal Extension
[phone17]
+
;
disallow=all
+
[local]
allow=ulaw
+
exten => 2201,1,Dial(${MAINPHONE},20,Tt)
type=friend
+
exten => 2201,2,Voicemail(u2201)
host=dynamic
+
exten => 2201,3,Hangup
defaultip=192.168.0.17
+
exten => 2201,102,Voicemail(b2201)
dtmfmode=inband
+
exten => 2201,103,Hangup
secret=voip17
+
mailbox=2206
+
exten => 2202,1,Dial(${JESSICA},20,Tt)
context=home
+
exten => 2202,2,Voicemail(u2202)
callerid="Bill Mandra" <2206>
+
exten => 2202,3,Hangup
nat=no
+
exten => 2202,102,Voicemail(b2202)
 
+
exten => 2202,103,Hangup
[phone18]
+
disallow=all
+
exten => 2203,1,Dial(${CHRISTOPHER},20,Tt)
allow=ulaw
+
exten => 2203,2,Playback(vm-nobodyavail)
type=friend
+
exten => 2203,3,Hangup
host=dynamic
+
defaultip=192.168.0.18
+
exten => 2204,1,Dial(${KITCHEN},20,Tt)
dtmfmode=inband
+
exten => 2204,2,Playback(vm-nobodyavail)
secret=voip18
+
exten => 2204,3,Hangup
mailbox=2204
+
context=home
+
exten => 2205,1,Dial(${PORCH},20,Tt)
callerid="Kitchen" <2204>
+
exten => 2205,2,Playback(vm-nobodyavail)
nat=no
+
exten => 2205,3,Hangup
 
+
extensions.conf
+
exten => 2206,1,Dial(${BILL},20,Tt)
;
+
exten => 2206,2,Playback(transfer)
; Konfigurasi file extension statik yang digunakan oleh modul pbx_config
+
exten => 2206,3,Macro(billcellfwdoutsip2,${BILLCELLPHONE},${CALLERIDNUM})
; Pada modul ini kita mengkonfigurasi semua panggilan masuk dan keluar di Asterisk.
+
exten => 2206,4,Voicemail(u2206)
;
+
exten => 2206,5,Hangup
[general]
+
exten => 2206,102,Voicemail(b2206)
static=yes
+
exten => 2206,103,Hangup
writeprotect=no
+
 
+
exten => 2500,1,Wait,2
[globals]
+
exten => 2500,2,VoicemailMain
DIALOUTANALOG=Zap/1
+
exten => 2500,3,Hangup
MAINPHONE=Zap/2
+
JESSICA=Zap/3
+
;
CHRISTOPHER=Zap/4
+
; Berbagai fasilitas test yang dapat digunakan
PORCH=Zap/5
+
;
KITCHEN=SIP/phone18
+
exten => 2001,1,Answer
BILL=SIP/phone17
+
exten => 2001,2,Playback(demo-echotest)
;
+
exten => 2001,3,Echo
; pada confoh ini digunakan card ZAPTEL
+
exten => 2001,4,Playback(demo-echodone)
; tentunya kita dapat mengganti Zap/1, Zap/2, Zap/3 s/d Zap/5
+
exten => 2001,5,Hangup
; dengan account SIP di Asterisk untuk IP Phone atau WiFi Phone
+
; misalnya SIP/2000 ke IP Phone nomor extension 2000 dsb.
+
exten => 2002,1,Answer
 
+
exten => 2002,2,WaitMusicOnHold(30)
FWDUSERID1=2012345
+
exten => 2002,3,Hangup  
FWD1USERNAME=William Mandra
+
FWDUSERID2=2055555
+
exten => 2003,1,Answer
FWD2USERNAME=Bujubuneng Mandra
+
exten => 2003,2,Wait(1)
FWDPREFIX=*
+
exten => 2003,3,SayUnixTime( | | k)
 
+
exten => 2003,4,SayUnixTime( | | M)
HOMENUMBER=4208888
+
exten => 2003,5,Playback(vm-and)
 
+
exten => 2003,6,SayUnixTime( | | S)
BILLCELLPHONE=0811888888
+
exten => 2003,7,Wait(2)
MOMCELLPHONE=0811999999
+
exten => 2003,8,Hangup
JESSCELLPHONE=0813222222
+
 
+
exten => 2004,1,Answer
 
+
exten => 2004,2,Wait(1)
;
+
exten => 2004,3,Playback(vm-extension)
; Macro untuk Extension Asterisk
+
exten => 2004,4,SayDigits(${CALLERIDNUM})
;
+
exten => 2004,5,Wait(2)
[macro-fastbusy]
+
exten => 2004,6,Hangup  
exten => s,1,Answer
+
exten => s,2,Wait,1
+
exten => 2005,1,Goto(nighttime-analog,s,1)
exten => s,3,Playback(ss-noservice)
+
;exten => 2005,2,Playback(ss-noservice)
exten => s,4,Wait(30)
+
;exten => 2005,3,Playback(vm-nobodyavail)
exten => s,5,Hangup
+
;exten => 2005,4,Playback(agent-incorrect)
 
+
;exten => 2005,5,Playback(agent-user)
[macro-dialoutsip]
+
;exten => 2005,6,Playback(pbx-invalid)
exten => s,1,SetCallerID(${FWDUSERID2})
+
;exten => 2005,7,Playback(tt-somethingwrong)
exten => s,2,SetCIDName(${FWD2USERNAME})
+
;exten => 2005,8,Playback(vm-extension)
exten => s,3,Dial(SIP/${FWDPREFIX}${ARG1}@fwd1,70)
+
;exten => 2005,9,Playback(vm-isunavail)
exten => s,4,Macro(fastbusy)
+
;exten => 2005,10,Playback(vm-isonphone)
exten => s,5,Hangup
+
;exten => 2005,11,Playback(vm-sorry)
exten => s,104,Macro(fastbusy)
+
exten => 2005,2,Hangup
exten => s,105,Wait,3
 
exten => s,106,Playtones(congestion)
 
exten => s,107,Wait,30
 
exten => s,108,Hangup
 
 
 
[macro-billcellfwdoutsip2]
 
exten => s,1,SetCallerID(${ARG2})
 
exten => s,2,Dial(SIP/${FWDPREFIX}${ARG1}@fwd2,20)
 
exten => s,3,Goto(local,2206,4)
 
exten => s,102,Goto(local,2206,4)
 
 
 
 
 
;
 
; Outbound
 
; Panggilan keluar
 
;
 
[operator]
 
exten => 0,1,Dial(${DIALOUTANALOG}/${EXTEN},70)
 
exten => 0,2,Macro(fastbusy)
 
exten => 0,102,Playback(ss-noservice)
 
exten => 0,103,Macro(fastbusy)
 
 
 
[e911]
 
exten => 911,1,Dial(${DIALOUTANALOG}/${EXTEN})
 
exten => 911,2,Macro(fastbusy)
 
exten => 911,102,Playback(ss-noservice)
 
exten => 911,103,Macro(fastbusy)
 
 
 
[forced-analog]
 
exten => _9.,1,Dial(${DIALOUTANALOG}/${EXTEN:1},70)
 
exten => _9.,2,Macro(fastbusy)
 
exten => _9.,102,Macro(fastbusy)
 
 
 
[fwd1-out]
 
exten => _8.,1,SetCallerID(${FWDUSERID2})
 
exten => _8.,2,SetCIDName(${FWD2USERNAME})
 
exten => _8.,3,Dial(SIP/${EXTEN:1}@fwd1,70)
 
exten => _8.,4,Macro(fastbusy)
 
exten => _8.,5,Hangup
 
 
 
[fwd2-out-pvt]
 
exten => _7.,1,SetCallerID(${FWDUSERID1})
 
exten => _7.,2,SetCIDName(${FWD1USERNAME})
 
exten => _7.,3,Dial(SIP/${EXTEN:1}@fwd2,70)
 
exten => _7.,4,Macro(fastbusy)
 
exten => _7.,5,Hangup
 
 
 
[information]
 
exten => 108,1,Dial(${DIALOUTANALOG}/${EXTEN},70)
 
exten => 108,2,Macro(fastbusy)
 
exten => 108,102,Playback(ss-noservice)
 
exten => 108,103,Macro(fastbusy)
 
 
 
; PSTN lokal di Jakarta
 
;
 
[pstn-local]
 
exten => _021.,1,Dial(${DIALOUTANALOG}/${EXTEN:3})
 
exten => _021.,2,Macro(fastbusy)
 
exten => _021.,102,Macro(dialoutsip,${EXTEN})
 
 
 
[toll-free]
 
exten => _0800.,1,Dial(${DIALOUTANALOG}/${EXTEN})
 
exten => _0800.,2,Macro(fastbusy)
 
exten => _0800.,102,Macro(dialoutsip,${EXTEN})
 
 
 
[long-distance]
 
exten => _0XXXXXXXXXX,1,Macro(dialoutsip,${EXTEN})
 
exten => _0XXXXXXXXXX,2,Macro(fastbusy)
 
exten => _0XXXXXXXXXX,102,Dial(${DIALOUTANALOG}/${EXTEN})
 
exten => _0XXXXXXXXXX,103,Macro(fastbusy)
 
 
 
[home]
 
include => operator
 
include => e911
 
include => forced-analog
 
include => fwd1-out
 
include => fwd2-out-pvt
 
include => information
 
include => local
 
include => pstn-local
 
include => toll-free
 
include => long-distance
 
 
 
 
 
;
 
; Inbound
 
; analog line
 
 
 
[nighttime-analog]
 
exten => s,1,Wait(2)
 
exten => s,2,Background(nighttime)
 
exten => 1,1,Goto(daytime-analog,s,1)
 
exten => 2,1,Voicemail(u2201)
 
exten => 3,1,Voicemail(u2206)
 
exten => 4,1,Voicemail(u2202)
 
exten => 9,1,Playback(transfer)
 
exten => 9,2,Ringing(1)
 
exten => 9,3,Goto(local,2206,1)
 
 
 
[daytime-analog]
 
exten => s,1,Zapateller(answer|nocallerid)
 
exten => s,2,PrivacyManager
 
exten => s,3,Ringing(1)
 
exten => s,4,Dial(${MAINPHONE}&${KITCHEN},15)
 
exten => s,5,Dial(${JESSICA},6)
 
exten => s,6,Dial(${BILL},6)
 
exten => s,7,Voicemail(u2201)
 
exten => s,8,Hangup
 
 
 
[inbound-analog]
 
include => daytime-analog|9:00-21:00|*|*
 
include => nighttime-analog|21:00-09:00|*|*
 
 
 
 
 
; sip lines
 
;
 
[nighttime-fwd1]
 
exten => s,1,Wait(2)
 
exten => s,2,Background(nighttime)
 
exten => 1,1,Goto(daytime-sip1,s,1)
 
exten => 2,1,Voicemail(u2201)
 
exten => 3,1,Voicemail(u2206)
 
exten => 4,1,Voicemail(u2202)
 
exten => 9,1,Playback(transfer)
 
exten => 9,2,Goto(local,2206,1)
 
 
 
[daytime-fwd1]
 
exten => s,1,Dial(${MAINPHONE}&${KITCHEN},15)
 
exten => s,2,Dial(${JESSICA},6)
 
exten => s,3,Dial(${BILL},6)
 
exten => s,4,Voicemail(u2201)
 
exten => s,5,Hangup
 
 
 
[inbound-fwd1]
 
include => daytime-fwd1|9:00-21:00|*|*
 
include => nighttime-fwd1|21:00-9:00|*|*
 
 
 
[inbound-sip]
 
exten => 2055555,1,Goto(inbound-fwd1,s,1)
 
exten => 2012345,1,Goto(local,2206,1)
 
 
 
 
 
;
 
; Internal Extension
 
;
 
[local]
 
exten => 2201,1,Dial(${MAINPHONE},20,Tt)
 
exten => 2201,2,Voicemail(u2201)
 
exten => 2201,3,Hangup
 
exten => 2201,102,Voicemail(b2201)
 
exten => 2201,103,Hangup
 
 
 
exten => 2202,1,Dial(${JESSICA},20,Tt)
 
exten => 2202,2,Voicemail(u2202)
 
exten => 2202,3,Hangup
 
exten => 2202,102,Voicemail(b2202)
 
exten => 2202,103,Hangup
 
 
 
exten => 2203,1,Dial(${CHRISTOPHER},20,Tt)
 
exten => 2203,2,Playback(vm-nobodyavail)
 
exten => 2203,3,Hangup
 
 
 
exten => 2204,1,Dial(${KITCHEN},20,Tt)
 
exten => 2204,2,Playback(vm-nobodyavail)
 
exten => 2204,3,Hangup
 
 
 
exten => 2205,1,Dial(${PORCH},20,Tt)
 
exten => 2205,2,Playback(vm-nobodyavail)
 
exten => 2205,3,Hangup
 
 
 
exten => 2206,1,Dial(${BILL},20,Tt)
 
exten => 2206,2,Playback(transfer)
 
exten => 2206,3,Macro(billcellfwdoutsip2,${BILLCELLPHONE},${CALLERIDNUM})
 
exten => 2206,4,Voicemail(u2206)
 
exten => 2206,5,Hangup
 
exten => 2206,102,Voicemail(b2206)
 
exten => 2206,103,Hangup
 
 
 
exten => 2500,1,Wait,2
 
exten => 2500,2,VoicemailMain
 
exten => 2500,3,Hangup
 
 
 
;
 
; Berbagai fasilitas test yang dapat digunakan
 
;
 
exten => 2001,1,Answer
 
exten => 2001,2,Playback(demo-echotest)
 
exten => 2001,3,Echo
 
exten => 2001,4,Playback(demo-echodone)
 
exten => 2001,5,Hangup
 
 
 
exten => 2002,1,Answer
 
exten => 2002,2,WaitMusicOnHold(30)
 
exten => 2002,3,Hangup
 
 
 
exten => 2003,1,Answer
 
exten => 2003,2,Wait(1)
 
exten => 2003,3,SayUnixTime( | | k)
 
exten => 2003,4,SayUnixTime( | | M)
 
exten => 2003,5,Playback(vm-and)
 
exten => 2003,6,SayUnixTime( | | S)
 
exten => 2003,7,Wait(2)
 
exten => 2003,8,Hangup
 
 
 
exten => 2004,1,Answer
 
exten => 2004,2,Wait(1)
 
exten => 2004,3,Playback(vm-extension)
 
exten => 2004,4,SayDigits(${CALLERIDNUM})
 
exten => 2004,5,Wait(2)
 
exten => 2004,6,Hangup
 
 
 
exten => 2005,1,Goto(nighttime-analog,s,1)
 
;exten => 2005,2,Playback(ss-noservice)
 
;exten => 2005,3,Playback(vm-nobodyavail)
 
;exten => 2005,4,Playback(agent-incorrect)
 
;exten => 2005,5,Playback(agent-user)
 
;exten => 2005,6,Playback(pbx-invalid)
 
;exten => 2005,7,Playback(tt-somethingwrong)
 
;exten => 2005,8,Playback(vm-extension)
 
;exten => 2005,9,Playback(vm-isunavail)
 
;exten => 2005,10,Playback(vm-isonphone)
 
;exten => 2005,11,Playback(vm-sorry)
 
exten => 2005,2,Hangup
 
  
NAT dan Firewall
+
==NAT dan Firewall==
  
Network Address Translation (NAT) atau lebih dikenal sebagai proxy server seringkali membuat kepala pusing. Masalah yang sering muncul adalah sambungan VoIP yang kurang baik atau tidak tersambung sama sekali karena terblok oleh Firewall / NAT. Jika hal itu terjadi, maka yang perlu dilakukan adalah
+
[[Network Address Translation]] ([[NAT]]) atau lebih dikenal sebagai [[proxy server]] seringkali membuat kepala pusing. Masalah yang sering muncul adalah sambungan [[VoIP]] yang kurang baik atau tidak tersambung sama sekali karena terblok oleh [[Firewall]] / [[NAT]]. Jika hal itu terjadi, maka yang perlu dilakukan adalah
  
Pastikan bahwa software antivirus / firewall yang ada di PC anda tidak memblokir VoIP.
+
Pastikan bahwa [[software]] [[antivirus]] / [[firewall]] yang ada di [[PC]] anda tidak memblokir [[VoIP]].
Hubungi network administrator anda dan katakan bahwa mereka perlu enable NAT untuk anda atau memberi anda Public IP, dan membuka port-port UDP sebagai berikut:
+
Hubungi network administrator anda dan katakan bahwa mereka perlu enable [[NAT]] untuk anda atau memberi anda [[IP Public]], dan membuka port-port UDP sebagai berikut:
  
 
Untuk SIP :
 
Untuk SIP :
Port UDP 3478 dan 3479 (STUN, NAT type discovery)
+
Port UDP 3478 dan 3479 (STUN, NAT type discovery)
Port UDP 5060 dan 5066 (SIP, signalling)
+
Port UDP 5060 dan 5066 (SIP, signalling)
Port UDP 8000 sampai 20000 (RTP, data voice + video)
+
Port UDP 8000 sampai 20000 (RTP, data voice + video)
  
 
Untuk IAX2 :
 
Untuk IAX2 :
Port UDP 4569 (IAX2, signalling and data)
+
Port UDP 4569 (IAX2, signalling and data)
 
   
 
   
Asterisk dapat berperan sebagai SIP client maupun SIP server.  Agar Asterisk berperan sebagai client dapat dilakukan melalui perintah
+
Asterisk dapat berperan sebagai [[SIP client]] maupun [[SIP server]].  Agar Asterisk berperan sebagai [[SIP client]] dapat dilakukan melalui perintah
  
register =>
+
register =>
  
 
pada bagian [general] di sip.conf.
 
pada bagian [general] di sip.conf.
  
Agar Asterisk berperan sebagai SIP Server biasanya dilakukan dengan cara mengkonfigurasi username, secret (password) dan berbagai detail dari client SIP Phone yang akan mendaftarkan diri ke Asterisk di sip.conf.
+
Agar Asterisk berperan sebagai [[SIP Server]] biasanya dilakukan dengan cara mengkonfigurasi username, secret (password) dan berbagai detail dari client [[SIP Phone]] yang akan mendaftarkan diri ke Asterisk di sip.conf.
  
Ada beberapa skenario dimana SIP channel di jaringan NAT, antara lain adalah,
+
Ada beberapa skenario dimana SIP channel di jaringan [[NAT]], antara lain adalah,
  
1.Asterisk SIP client di belakang NAT, tersambung ke SIP proxy di luar.
+
# Asterisk [[SIP client]] di belakang [[NAT]], tersambung ke [[SIP proxy]] di luar.
2.Asterisk SIP client di belakang NAT, tersambung ke SIP proxy di dalam.
+
# Asterisk [[SIP client]] di belakang [[NAT]], tersambung ke [[SIP proxy]] di dalam.
3.Asterisk SIP server di belakang NAT, client di luar NAT tersambung ke Asterisk.
+
# Asterisk [[SIP server]] di belakang [[NAT]], client di luar [[NAT]] tersambung ke Asterisk.
4.Asterisk SIP server di belakang NAT, client di dalam NAT tersambung ke Asterisk.
+
# Asterisk [[SIP server]] di belakang [[NAT]], client di dalam NAT tersambung ke Asterisk.
5.Asterisk SIP client diluar NAT, tersambung ke SIP proxy diluar.
+
# Asterisk [[SIP client]] di luar [[NAT]], tersambung ke [[SIP proxy]] diluar.
6.Asterisk SIP client diluar NAT, tersambung ke SIP proxy di dalam.
+
# Asterisk [[SIP client]] di luar [[NAT]], tersambung ke [[SIP proxy]] di dalam.
7.Asterisk SIP server di luar NAT, client diluar NAT tersambung ke Asterisk.
+
# Asterisk [[SIP server]] di luar [[NAT]], client diluar [[NAT]] tersambung ke Asterisk.
8.Asterisk SIP server diluar NAT, cluent di dalam NAT tersambung ke Asterisk.
+
# Asterisk [[SIP server]] di luar [[NAT]], client di dalam [[NAT]] tersambung ke Asterisk.
  
Secara umum setup yang ada dapat beroperasi dengan konfigurasi yang ada, tentunya sangat tergantung pada konfigurasi client, NAT, server dan banyak faktor, terutama konfigurasi firewall. Pada umumnya kondisi nomor 3 dan nomor 6 sulit dilakukan karena SIP adalah protocol peer-to-peer, sialnya NAT rata-rata hanya mengijinkan client di dalam untuk berhubungan dengan server di luar tapi tidak sebaliknya.  
+
Secara umum setup yang ada dapat beroperasi dengan konfigurasi yang ada, tentunya sangat tergantung pada konfigurasi client, [[NAT]], server dan banyak faktor, terutama konfigurasi firewall. Pada umumnya kondisi nomor 3 dan nomor 6 sulit dilakukan karena SIP adalah protocol peer-to-peer, sialnya [[NAT]] rata-rata hanya mengijinkan client di dalam untuk berhubungan dengan server di luar tapi tidak sebaliknya.  
  
1.Jalan dengan proxy server yang mensupport NAT.
+
# Jalan dengan [[proxy server]] yang mensupport [[NAT]].
2.Jalan - tidak ada NAT diantaranya.
+
# Jalan - tidak ada [[NAT]] diantaranya.
3.Jalan - dengan melakukan port forwarding pada NAT / proxy server.
+
# Jalan - dengan melakukan [[port forwarding]] pada [[NAT]] / [[proxy server]].
4.Jalan - tidak ada NAT diantaranya.
+
# Jalan - tidak ada [[NAT]] diantaranya.
5.Jalan - tidak ada NAT diantaranya.
+
# Jalan - tidak ada [[NAT]] diantaranya.
6.Jalan - dengan melakukan port forwarding pada NAT / proxy server.
+
# Jalan - dengan melakukan [[port forwarding]] pada [[NAT]] / [[proxy server]].
7.Jalan - tidak ada NAT diantaranya.
+
# Jalan - tidak ada [[NAT]] diantaranya.
8.Jalan - dengan konfigurasi nat=yes dan qualify=xxx di sip.conf. Beberapa client seperti x-lite menggunakan STUN dan mengirimkan paket UDP keep-alive. Qualify akan mengirim paket keep-alive dari asterisk ke client yang ada di dalam NAT.
+
# Jalan - dengan konfigurasi nat=yes dan qualify=xxx di sip.conf. Beberapa client seperti x-lite menggunakan [[STUN]] dan mengirimkan paket [[UDP]] keep-alive. Qualify akan mengirim paket keep-alive dari asterisk ke client yang ada di dalam [[NAT]].
  
 
Kasus yang paling parah adalah jika
 
Kasus yang paling parah adalah jika
  
Asterisk di dalam NAT, dan client berada di dalam NAT yang lain.
+
* Asterisk di dalam [[NAT]], dan client berada di dalam [[NAT]] yang lain.
  
dalam kasus seperti ini kita butuh perantara yang dapat melihat ke dua belah pihak sekaligus. Untuk menyalurkan aliran / stream suara, kita akan membutuhkan media server. Asterisk yang diletakan diluar NAT dapat berfungsi sebagai media server, dan dapat ditambahkan kemampuan untuk melakukan konversi CODEC.
+
dalam kasus seperti ini kita butuh perantara yang dapat melihat ke dua belah pihak sekaligus. Untuk menyalurkan aliran / stream suara, kita akan membutuhkan media server. Asterisk yang diletakan diluar [[NAT]] dapat berfungsi sebagai media server, dan dapat ditambahkan kemampuan untuk melakukan konversi [[CODEC]].

Revision as of 05:59, 31 December 2009

Salah satu penarik penggunaan VoIP adalah SLJJ dan SLI gratisan melalui Internet.

Bayangkan, jika anda mempunyai kantor cabang, atau mitra usaha yang sering berhubungan telepon dengan anda. Anda perlu membangun jaringan private antara kantor cabang atau mitra usaha tersebut agar dapat mem-bypass telkom secara keseluruhan. Ada beberapa cara yang dapat dilakukan untuk hal tersebut melalui Asterisk, yaitu,

  • DUNDi, Distributed Universal Number Discovery protocol.
  • Directory terpusat, seperti VoIP Rakyat atau Free World Dialup.

Pada kesempatan ini akan di perlihatkan proses trunk peering menggunakan VoIP Rakyat. Mekanisme yang sama dapat dilakukan untuk SIP Proxy lain di seluruh dunia.

Di samping itu, juga akan di bahas sedikit tentang masalah yang akan kita hadapi secara nyata di konfigurasi jaringan yang banyak digunakan karena menggunakan NAT / Proxy Server. Parahnya sebagian orang menggunakan Firewall yang akhirnya memblokir sinyal VoIP.

Asumsi yang digunakan adalah kita sudah memiliki account di VoIP Rakyat. Dalam hal ini di asumasikan account tersebut adalah

nomor 2012345 password abcdef
nomor 2055555 password 123456

Selanjutnya kita akan mengkonfigurasi secara lengkap file /etc/asterisk/sip.conf dan /etc/asterisk/extensions.conf, termasuk menyediakan fasilitas untuk melakukan testing.

Secara umum hal, ada beberapa hal yang penting untuk di perhatikan dalam mengkonfigurasi trunk pada Asterisk

  • Registrasi ke Account SIP di voiprakyat (sip.conf)
  • Buat username & password untuk berbagai extension (sip.conf)
  • Konfigurasi Dialout, untuk berbagai konfigurasi (extensions.conf)
  • Konfigurasi untuk Inbound call (extensions.conf pada [inbound-sip])

Dengan konfigurasi tersebut maka kita dapat menelepon ke luar dengan berbagai saluran yang ada. Juga kita dapat menerima telepon dari voiprakyat.or.id & dari Internet melalui Modul inbound-sip. Detail dari berbagai konfigurasi tersebut terlampir dalam konfigurasi terlampir.

sip.conf

;
; Konfigurasi SIP untuk Asterisk
;
[general]
disallow=all
allow=ulaw
port=5060 			; Port SIP yang harus di bind (di tempelkan).
bindaddr=0.0.0.0 		; Address yang di bind ke SIP
externip=xxx.xxx.xxx.xxx	; jika kita tahu IP address publik yang kita gunakan.
localnet=192.168.0.0
localmask=255.255.255.0
context=inbound-sip		; Default context untuk panggilan yang masuk
maxexpirey=180
defaultexpirey=160
tos=reliability
srvlookup=yes
; 'PENTING! registrasi ke SIP Server
register => 2012345:abcdef@voiprakyat.or.id/2012345	; username 2012345 password abcdef
register => 2055555:123456@voiprakyat.or.id/2055555	; username 2055555 password 123456

; kita perlu memberi account SIP di tempat kita agar panggilan dari
; voiprakyat.or.id dapat masuk ke PABX kita
;
[fwd1]
type=friend
secret=secret
username=2055555
fromuser=2055555
fromdomain=voiprakyat.or.id
host=voiprakyat.or.id
dtmfmode=inband
nat=yes
canreinvite=no

[fwd2]
type=friend
secret=secret
username=2012345
fromuser=2012345
fromdomain=voiprakyat.or.id
host=voiprakyat.or.id
dtmfmode=inband
nat=yes
canreinvite=no 

; berikut adalah account SIP lokal untuk IP phone yang ada di rumah / di kantor
;
[phone17]
disallow=all
allow=ulaw
type=friend
host=dynamic
defaultip=192.168.0.17
dtmfmode=inband
secret=voip17
mailbox=2206
context=home
callerid="Bill Mandra" <2206>
nat=no

[phone18]
disallow=all
allow=ulaw
type=friend
host=dynamic
defaultip=192.168.0.18
dtmfmode=inband
secret=voip18
mailbox=2204
context=home
callerid="Kitchen" <2204>
nat=no 

extensions.conf

;
; Konfigurasi file extension statik yang digunakan oleh modul pbx_config
; Pada modul ini kita mengkonfigurasi semua panggilan masuk dan keluar di Asterisk.
;
[general]
static=yes
writeprotect=no 

[globals]
DIALOUTANALOG=Zap/1
MAINPHONE=Zap/2
JESSICA=Zap/3
CHRISTOPHER=Zap/4
PORCH=Zap/5
KITCHEN=SIP/phone18
BILL=SIP/phone17
;
; pada confoh ini digunakan card ZAPTEL
; tentunya kita dapat mengganti Zap/1, Zap/2, Zap/3 s/d Zap/5
; dengan account SIP di Asterisk untuk IP Phone atau WiFi Phone
; misalnya SIP/2000 ke IP Phone nomor extension 2000 dsb.

FWDUSERID1=2012345
FWD1USERNAME=William Mandra
FWDUSERID2=2055555
FWD2USERNAME=Bujubuneng Mandra
FWDPREFIX=*

HOMENUMBER=4208888
BILLCELLPHONE=0811888888
MOMCELLPHONE=0811999999
JESSCELLPHONE=0813222222

;
; Macro untuk Extension Asterisk
;
[macro-fastbusy]
exten => s,1,Answer
exten => s,2,Wait,1
exten => s,3,Playback(ss-noservice)
exten => s,4,Wait(30)
exten => s,5,Hangup

[macro-dialoutsip]
exten => s,1,SetCallerID(${FWDUSERID2})
exten => s,2,SetCIDName(${FWD2USERNAME})
exten => s,3,Dial(SIP/${FWDPREFIX}${ARG1}@fwd1,70)
exten => s,4,Macro(fastbusy)
exten => s,5,Hangup
exten => s,104,Macro(fastbusy)
exten => s,105,Wait,3
exten => s,106,Playtones(congestion)
exten => s,107,Wait,30
exten => s,108,Hangup

[macro-billcellfwdoutsip2]
exten => s,1,SetCallerID(${ARG2})
exten => s,2,Dial(SIP/${FWDPREFIX}${ARG1}@fwd2,20)
exten => s,3,Goto(local,2206,4)
exten => s,102,Goto(local,2206,4) 

;
; Outbound
; Panggilan keluar
;
[operator]
exten => 0,1,Dial(${DIALOUTANALOG}/${EXTEN},70)
exten => 0,2,Macro(fastbusy)
exten => 0,102,Playback(ss-noservice)
exten => 0,103,Macro(fastbusy)

[e911]
exten => 911,1,Dial(${DIALOUTANALOG}/${EXTEN})
exten => 911,2,Macro(fastbusy)
exten => 911,102,Playback(ss-noservice)
exten => 911,103,Macro(fastbusy)

[forced-analog]
exten => _9.,1,Dial(${DIALOUTANALOG}/${EXTEN:1},70)
exten => _9.,2,Macro(fastbusy)
exten => _9.,102,Macro(fastbusy) 

[fwd1-out]
exten => _8.,1,SetCallerID(${FWDUSERID2})
exten => _8.,2,SetCIDName(${FWD2USERNAME})
exten => _8.,3,Dial(SIP/${EXTEN:1}@fwd1,70)
exten => _8.,4,Macro(fastbusy)
exten => _8.,5,Hangup 

[fwd2-out-pvt]
exten => _7.,1,SetCallerID(${FWDUSERID1})
exten => _7.,2,SetCIDName(${FWD1USERNAME})
exten => _7.,3,Dial(SIP/${EXTEN:1}@fwd2,70)
exten => _7.,4,Macro(fastbusy)
exten => _7.,5,Hangup

[information]
exten => 108,1,Dial(${DIALOUTANALOG}/${EXTEN},70)
exten => 108,2,Macro(fastbusy)
exten => 108,102,Playback(ss-noservice)
exten => 108,103,Macro(fastbusy)

; PSTN lokal di Jakarta
;
[pstn-local]
exten => _021.,1,Dial(${DIALOUTANALOG}/${EXTEN:3})
exten => _021.,2,Macro(fastbusy)
exten => _021.,102,Macro(dialoutsip,${EXTEN}) 

[toll-free]
exten => _0800.,1,Dial(${DIALOUTANALOG}/${EXTEN})
exten => _0800.,2,Macro(fastbusy)
exten => _0800.,102,Macro(dialoutsip,${EXTEN})

[long-distance]
exten => _0XXXXXXXXXX,1,Macro(dialoutsip,${EXTEN})
exten => _0XXXXXXXXXX,2,Macro(fastbusy)
exten => _0XXXXXXXXXX,102,Dial(${DIALOUTANALOG}/${EXTEN})
exten => _0XXXXXXXXXX,103,Macro(fastbusy) 

[home]
include => operator
include => e911
include => forced-analog
include => fwd1-out
include => fwd2-out-pvt
include => information
include => local
include => pstn-local
include => toll-free
include => long-distance 

;
; Inbound
; analog line

[nighttime-analog]
exten => s,1,Wait(2)
exten => s,2,Background(nighttime)
exten => 1,1,Goto(daytime-analog,s,1)
exten => 2,1,Voicemail(u2201)
exten => 3,1,Voicemail(u2206)
exten => 4,1,Voicemail(u2202)
exten => 9,1,Playback(transfer)
exten => 9,2,Ringing(1)
exten => 9,3,Goto(local,2206,1) 

[daytime-analog]
exten => s,1,Zapateller(answer|nocallerid)
exten => s,2,PrivacyManager
exten => s,3,Ringing(1)
exten => s,4,Dial(${MAINPHONE}&${KITCHEN},15)
exten => s,5,Dial(${JESSICA},6)
exten => s,6,Dial(${BILL},6)
exten => s,7,Voicemail(u2201)
exten => s,8,Hangup 

[inbound-analog]
include => daytime-analog|9:00-21:00|*|*
include => nighttime-analog|21:00-09:00|*|* 

; sip lines
;
[nighttime-fwd1]
exten => s,1,Wait(2)
exten => s,2,Background(nighttime)
exten => 1,1,Goto(daytime-sip1,s,1)
exten => 2,1,Voicemail(u2201)
exten => 3,1,Voicemail(u2206)
exten => 4,1,Voicemail(u2202)
exten => 9,1,Playback(transfer)
exten => 9,2,Goto(local,2206,1) 

[daytime-fwd1]
exten => s,1,Dial(${MAINPHONE}&${KITCHEN},15)
exten => s,2,Dial(${JESSICA},6)
exten => s,3,Dial(${BILL},6)
exten => s,4,Voicemail(u2201)
exten => s,5,Hangup 

[inbound-fwd1]
include => daytime-fwd1|9:00-21:00|*|*
include => nighttime-fwd1|21:00-9:00|*|*

[inbound-sip]
exten => 2055555,1,Goto(inbound-fwd1,s,1)
exten => 2012345,1,Goto(local,2206,1)
;
; Internal Extension
;
[local]
exten => 2201,1,Dial(${MAINPHONE},20,Tt)
exten => 2201,2,Voicemail(u2201)
exten => 2201,3,Hangup
exten => 2201,102,Voicemail(b2201)
exten => 2201,103,Hangup

exten => 2202,1,Dial(${JESSICA},20,Tt)
exten => 2202,2,Voicemail(u2202)
exten => 2202,3,Hangup
exten => 2202,102,Voicemail(b2202)
exten => 2202,103,Hangup

exten => 2203,1,Dial(${CHRISTOPHER},20,Tt)
exten => 2203,2,Playback(vm-nobodyavail)
exten => 2203,3,Hangup

exten => 2204,1,Dial(${KITCHEN},20,Tt)
exten => 2204,2,Playback(vm-nobodyavail)
exten => 2204,3,Hangup

exten => 2205,1,Dial(${PORCH},20,Tt)
exten => 2205,2,Playback(vm-nobodyavail)
exten => 2205,3,Hangup

exten => 2206,1,Dial(${BILL},20,Tt)
exten => 2206,2,Playback(transfer)
exten => 2206,3,Macro(billcellfwdoutsip2,${BILLCELLPHONE},${CALLERIDNUM})
exten => 2206,4,Voicemail(u2206)
exten => 2206,5,Hangup
exten => 2206,102,Voicemail(b2206)
exten => 2206,103,Hangup

exten => 2500,1,Wait,2
exten => 2500,2,VoicemailMain
exten => 2500,3,Hangup

;
; Berbagai fasilitas test yang dapat digunakan
;
exten => 2001,1,Answer
exten => 2001,2,Playback(demo-echotest)
exten => 2001,3,Echo
exten => 2001,4,Playback(demo-echodone)
exten => 2001,5,Hangup

exten => 2002,1,Answer
exten => 2002,2,WaitMusicOnHold(30)
exten => 2002,3,Hangup 

exten => 2003,1,Answer
exten => 2003,2,Wait(1)
exten => 2003,3,SayUnixTime( | | k)
exten => 2003,4,SayUnixTime( | | M)
exten => 2003,5,Playback(vm-and)
exten => 2003,6,SayUnixTime( | | S)
exten => 2003,7,Wait(2)
exten => 2003,8,Hangup

exten => 2004,1,Answer
exten => 2004,2,Wait(1)
exten => 2004,3,Playback(vm-extension)
exten => 2004,4,SayDigits(${CALLERIDNUM})
exten => 2004,5,Wait(2)
exten => 2004,6,Hangup 

exten => 2005,1,Goto(nighttime-analog,s,1)
;exten => 2005,2,Playback(ss-noservice)
;exten => 2005,3,Playback(vm-nobodyavail)
;exten => 2005,4,Playback(agent-incorrect)
;exten => 2005,5,Playback(agent-user)
;exten => 2005,6,Playback(pbx-invalid)
;exten => 2005,7,Playback(tt-somethingwrong)
;exten => 2005,8,Playback(vm-extension)
;exten => 2005,9,Playback(vm-isunavail)
;exten => 2005,10,Playback(vm-isonphone)
;exten => 2005,11,Playback(vm-sorry)
exten => 2005,2,Hangup

NAT dan Firewall

Network Address Translation (NAT) atau lebih dikenal sebagai proxy server seringkali membuat kepala pusing. Masalah yang sering muncul adalah sambungan VoIP yang kurang baik atau tidak tersambung sama sekali karena terblok oleh Firewall / NAT. Jika hal itu terjadi, maka yang perlu dilakukan adalah

Pastikan bahwa software antivirus / firewall yang ada di PC anda tidak memblokir VoIP. Hubungi network administrator anda dan katakan bahwa mereka perlu enable NAT untuk anda atau memberi anda IP Public, dan membuka port-port UDP sebagai berikut:

Untuk SIP :

Port UDP 3478 dan 3479 (STUN, NAT type discovery)
Port UDP 5060 dan 5066 (SIP, signalling)
Port UDP 8000 sampai 20000 (RTP, data voice + video)

Untuk IAX2 :

Port UDP 4569 (IAX2, signalling and data)

Asterisk dapat berperan sebagai SIP client maupun SIP server. Agar Asterisk berperan sebagai SIP client dapat dilakukan melalui perintah

register =>

pada bagian [general] di sip.conf.

Agar Asterisk berperan sebagai SIP Server biasanya dilakukan dengan cara mengkonfigurasi username, secret (password) dan berbagai detail dari client SIP Phone yang akan mendaftarkan diri ke Asterisk di sip.conf.

Ada beberapa skenario dimana SIP channel di jaringan NAT, antara lain adalah,

  1. Asterisk SIP client di belakang NAT, tersambung ke SIP proxy di luar.
  2. Asterisk SIP client di belakang NAT, tersambung ke SIP proxy di dalam.
  3. Asterisk SIP server di belakang NAT, client di luar NAT tersambung ke Asterisk.
  4. Asterisk SIP server di belakang NAT, client di dalam NAT tersambung ke Asterisk.
  5. Asterisk SIP client di luar NAT, tersambung ke SIP proxy diluar.
  6. Asterisk SIP client di luar NAT, tersambung ke SIP proxy di dalam.
  7. Asterisk SIP server di luar NAT, client diluar NAT tersambung ke Asterisk.
  8. Asterisk SIP server di luar NAT, client di dalam NAT tersambung ke Asterisk.

Secara umum setup yang ada dapat beroperasi dengan konfigurasi yang ada, tentunya sangat tergantung pada konfigurasi client, NAT, server dan banyak faktor, terutama konfigurasi firewall. Pada umumnya kondisi nomor 3 dan nomor 6 sulit dilakukan karena SIP adalah protocol peer-to-peer, sialnya NAT rata-rata hanya mengijinkan client di dalam untuk berhubungan dengan server di luar tapi tidak sebaliknya.

  1. Jalan dengan proxy server yang mensupport NAT.
  2. Jalan - tidak ada NAT diantaranya.
  3. Jalan - dengan melakukan port forwarding pada NAT / proxy server.
  4. Jalan - tidak ada NAT diantaranya.
  5. Jalan - tidak ada NAT diantaranya.
  6. Jalan - dengan melakukan port forwarding pada NAT / proxy server.
  7. Jalan - tidak ada NAT diantaranya.
  8. Jalan - dengan konfigurasi nat=yes dan qualify=xxx di sip.conf. Beberapa client seperti x-lite menggunakan STUN dan mengirimkan paket UDP keep-alive. Qualify akan mengirim paket keep-alive dari asterisk ke client yang ada di dalam NAT.

Kasus yang paling parah adalah jika

  • Asterisk di dalam NAT, dan client berada di dalam NAT yang lain.

dalam kasus seperti ini kita butuh perantara yang dapat melihat ke dua belah pihak sekaligus. Untuk menyalurkan aliran / stream suara, kita akan membutuhkan media server. Asterisk yang diletakan diluar NAT dapat berfungsi sebagai media server, dan dapat ditambahkan kemampuan untuk melakukan konversi CODEC.