Postingan ini dipicu karena munculnya beberapa pertanyaan mengenai bagaimana menyambungkan dua atau lebih IP PBX Asterisk based dengan menggunakan SIP trunk. Walaupun saya pernah nulis dengan protokol IAX2 dan tinggal diganti ke SIP, kayaknya masih muncul lagi. Pertanyaan lain yang juga sering muncul adalah “Bagaimana kalau vpn? Bagaimana kalau beda subnet? Bagaimana kalau lewat vlan?”. Semoga kali ini bisa membantu teman-teman sekalian mengenai kebingungan ini.
SEVEN OSI LAYER
Bagi yang sudah bermain jaringan TCP/IP, tentu sudah ndak asing lagi dengan 7 OSI Layer kan? Mari kita ulang dari awal:
Layer 7 : Application
Layer 6 : Presentation
Layer 5: Session
Layer 4: Transport
Layer 3: Network
Layer 2: Datalink
Layer 1: Physical
Saya tidak akan membahas detail per layer. Jika teman2 tertarik mengetahui lebih lanjut tentang TCP/IP bisa membeli buku pak Onno W. Purbo yang ini:
Yang akan saya sampaikan adalah, SIP dan protokol teman2nya berjalan, di Layer 5.
Sedangkan untuk VPN, VLAN, routing dan kawan2 lainnya ada di layer 4 ke bawah. Jadi selama antar host IP PBX bisa saling ping dua arah, dan port yang dibutuhkan IP PBX dibuka di firewall (jika ada), harusnya komunikasi sudah berjalan. Jika pada saat melakukan panggilan test dan bagian peer sudah ada trafik masuk (terutama pada saat melihat log ada pergerakan), artinya panggilan sudah sampai hanya tinggal ruleset/dialplan saja yang belum tepat. Jadi tidak perlu lagi melihat apakah ini kabelnya, atau vpn nya, atau port diblokir atau tidak, dlsb. Tidak ada relevansinya.
Untuk komunikasi VoIP Asterisk, port2 berikut yang perlu dibuka:
- TCP: 5060, 5061, 80, 443
- UDP: 5060, 10000 - 20000
MENYAMBUNGKAN IP PBX DENGAN PROTOKOL SIP
Dalam contoh berikut ini saya menggunakan Issabel. Teman-teman tetap bisa mencoba dengan distro lain seperti Elastix (walaupun saya sangat menyarankan yang masih pakai Elastix segera pindah ke Issabel), Briker, FreePBX, ataupun AsteriskNow. Mesinnya sama kok. Jadi config ndak jauh-jauh beda.
Topologinya sederhana:
PBX01 ip address 192.168.66.21 dengan nomer ekstensi berawalan 1XXX (1001 dan 1002).
PBX02 ip address 192.168.66.22 dengan nomer ekstensi berawalan 2XXX (2001 dan 2002).
Perencanaan penomeran ekstensi sangat penting untuk menghindari keruwetan ketika hendak melakukan routing panggilan antar PBX dengan dialplan. Jika dari awal sudah ditetapkan panjang ekstensi yang sama dengan awalan nomer ekstensi khusus untuk masing-masing IP PBX, maka routing panggilan/pembuatan dialplan juga menjadi mudah.
Berikutnya mari kita setup masing-masing IP PBX. (Detail Instalasi Issabel tidak akan dibahas di sini karena cukup intuitif dan mudah).
SETUP IP PBX PERTAMA (PBX01)
- Login ke halaman Issabel, lalu di menu di samping kiri, masuk ke opsi PBX -> Tools ->Asterisk File Editor.
- Pilih Show Filter lalu isikan sip_custom.conf untuk mencari file tersebut. Ketika sudah ketemu, klik nama file tersebut untuk membuka editor.
- di dalam editor kita akan mengisikan konfigurasi agar PBX02 dikenali PBX01:
[PBX02]
deny=0.0.0.0/0.0.0.0
context=from-trunk
host=dynamic
type=friend
port=5060
qualify=yes
dtmfmode=rfc2833
insecure=port,invite
nat=force_rport,comedia
permit=192.168.66.22/255.255.255.255
- klik Save dan Reload Asterisk ketika selesai.
- Masuk ke menu PBX Configuration -> Trunks -> Add SIP Trunk. Beri nama trunk dengan PBX02, lalu di bagian peer details isikan;
host=192.168.66.22
type=peer
context=from-trunk
- Klik Submic Changes ketika selesai.
- Masuk ke menu PBX Configuration -> Outbound Routes -> Add Route
- Di bagian Route Name isikan dengan PBX02 , hanya sekedar tidak bingung. Sebenarnya bisa diisi bebas. Lalu di bagian dial pattern di kotak bertuliskan match pattern isikan 2XXX.
- Di menu pulldown ** Trunk Sequence for Matched Routes** pilih PBX02.
- Klik Submit Changes lalu klik Apply Config di bar berwana pink di bagian atas halaman web.
- Buat ekstensi 1001 (optional 1002) untuk test.
SETUP IP PBX KEDUA (PBX02)
- Login ke halaman Issabel, lalu di menu di samping kiri, masuk ke opsi PBX -> Tools ->Asterisk File Editor.
- Pilih Show Filter lalu isikan sip_custom.conf untuk mencari file tersebut. Ketika sudah ketemu, klik nama file tersebut untuk membuka editor.
- di dalam editor kita akan mengisikan konfigurasi agar PBX01 dikenali PBX02:
[PBX01]
deny=0.0.0.0/0.0.0.0
context=from-trunk
host=dynamic
type=friend
port=5060
qualify=yes
dtmfmode=rfc2833
insecure=port,invite
nat=force_rport,comedia
permit=192.168.66.21/255.255.255.255
- klik Save dan Reload Asterisk ketika selesai.
- Masuk ke menu PBX Configuration -> Trunks -> Add SIP Trunk. Beri nama trunk dengan PBX01, lalu di bagian peer details isikan;
host=192.168.66.21
type=peer
context=from-trunk
- Klik Submic Changes ketika selesai.
- Masuk ke menu PBX Configuration -> Outbound Routes -> Add Route
- Di bagian Route Name isikan dengan PBX01 , hanya sekedar tidak bingung. Sebenarnya bisa diisi bebas. Lalu di bagian dial pattern di kotak bertuliskan match pattern isikan 1XXX.
- Di menu pulldown ** Trunk Sequence for Matched Routes** pilih PBX01.
- Klik Submit Changes lalu klik Apply Config di bar berwana pink di bagian atas halaman web.
- Buat ekstensi 2001 (optional 2002) untuk test.
CHECK MASING2 TRUNK
Jika mengikuti cara yang tepat di atas, seharusnya panggilan antar ekstensi di kedua IP PBX ini sudah bisa dilakukan. Tetapi untuk memastikan, kita bisa melakukan hal sebagai berikut:
- masuk ke console linux masing2 IP PBX lalu ketik perintah asterisk -vr untuk masuk ke console Asterisk. Di dalam console Asterisk ini kita jalankan perintah : sip show peers
Tampilan PBX01 kira2 seperti ini:
dan PBX02 seperti ini:
artinya adalah bahwa masing-masing trunk sudah dikenali, dan masing PBX memiliki ekstensi yang sudah teregistrasi dan siap melakukan panggilan (1001 di PBX01 dan 2001 di PBX02).
- Test panggilan antar ekstensi.
Done!
Jika ada yang pertanyaan bagaimana dengan lebh dari 2 IP PBX? Misal PBX01, PBX02, dan PBX03? Gampang. Di PBX01 tambahkan config seperti di atas untuk PBX03, sehingga
- di PBX01 ada config trunk dan routing call untuk ke PBX02 dan PBX03.
- di PBX02 ada config trunk dan routing call untuk ke PBX01 dan PBX03.
- di PBX03 ada config trunk dan routing call untuk ke PBX01 dan PBX03.
Hal serupa akan sama jika ada PBX01, PBX02, PBX03, PBX04, dan seterusnya.
Saya harapkan setelah ini teman-teman sekalian tidak ada yang bingung lagi. Lain waktu kalau senggang saya akan membahas bagaimana konsep menambahkan voip gateway apapun merek dan jenisnya.