Interkoneksi IP PBX Dengan IAX2 Trunk

Sebenarnya ini tema lama, tapi baru kesampaian posting kali ini, karena masih banyak yang menanyakan. Setup ini untuk menghubungkan dua atau lebih site yang menggunakan IP PBX Asterisk (khusus postingan ini saya menggunakan Elastix versi 4.0), sehingga dial antar ekstensi di kedua site bisa dilakukan dengan mudah, yaitu dengan hanya menekan nomer ekstensi langsung. Untuk dua sampai dengan 7 site, cara ini memang masih bisa digunakan. Jumlah trunk yang harus disetup untuk menghasilkan full mesh trunk network bisa didapatkan dengan rumus:

n x (n – 1)

Jadi, jika kita hendak menyambungkan 7 IP PBX sekaligus, maka akan dibutuhkan sebanyak 7 x (7 – 1) = 42 trunk!

Untuk interkoneksi IP PBX dengan jumlah lebih itu, setup menjadi rumit dan disarankan menggunakan DUNDi (Distributed Universal Numbering Discovery). Lain kali kalau ada waktu dan server buat bermain akan saya bahas di sini.

Yang perlu disiapkan adalah sebagai berikut:

  1. Jika kedua site berada di dua network/tempat/kota yang berbeda, sangar disarankan koneksi antar site menggunakan VPN (PPTP, L2TP, OpenVPN, VPLS, MPLS, EoIPdll). Dan apabila sangat terpaksa menggunakan ip address public, letakkan server IP PBX di bawah router/firewall dan lakukan port forward saja (jangan 1:1 Nat!!!). Trunk menggunakan IAX2, port forward menjadi mudah karena hanya dibutuhkan satu port untuk signalling dan media stream, yaitu port TCP/UDP 4569.
  2. Perencanaan penomoran ekstensi. Ini sangat penting karena untuk mempermudah routing panggilan. Jika memiliki dua buah IP PBX yang hendak diinterkoneksi, gunakan kepala ekstensi yang berbeda, misal kantor A menggunakan 4 digit dengan kepala 1 (1001, 1002, 1003, dst), lalu kantor B menggunakan 4 ekstensi dengan kepala 2 (2001, 2002, 2003, dst). Sebagai saran tambahan, jika site mencapai lebih dari 7 dan tetap akan menggunakan interkoneksi cara ini, tambahkan digit ekstensi, misal menjadi 5 atau 6 digit. Kelak akan sangat membantu jika kita hendak menggunakan prefix tambahan (misal untuk trunk ke PSTN/ITSP), atau jumlah site mencapai lebih dari 10 site.
  3. Trunk yang akan digunakan adalah IAX2 jika masing-masing IP PBX adalah Asterisk based. Jika tidak, bisa menggunakan SIP. Alasan menggunakan IAX2 karena hanya menggunakan satu port untuk signalling dan media stream (SIP menggunakan port signalling yang berbeda dengan media stream), sehingga pengaturan di firewall cukup mudah. Selain itu IAX2 memang didesain untuk mengatasi permasalahan NAT.

ASUMSI

  1. Dalam contoh setup ini akan digunakan dua buah IP PBX Elastix untuk dua buah kantor (Kantor A dan Kantor B).
  2. Masing-masing kantor memiliki ekstensi dengan panjang 4 digit dengan awalan berbeda. Kantor A berawalan 1 (1001, 1002, 1003), dan kantor B berawalan 2 (2001, 2002, 2003).
  3. Semua ekstensi dibuat dengan opsi nat=yes atau nat=force_rport,comedia untuk mengantisipasi one way audio.
  4. IP address Elastix kantor A adalah 10.0.1.10, dan untuk Kantor B 10.0.2.20.
  5. Saya menganggap tidak perlu lagi melakukan screenshot untuk lokasi menu WebGUI karena menu-menu di WebGUI Elastix sudah cukup jelas dan mudah diikuti hanya dengan petunjuk tulisan.

SKENARIO

  1. IP PBX kantor A akan merigstrasikan diri ke IP PBX kantor B, sehingga semua ekstensi di Kantor A bisa melakukan panggilan ke ekstensi di Kantor B hanya cukup dengan menekan nomer ekstensi yang dituju (tanpa prefix). Pada gambar skema di bawah, trunk Kantor A menuju Kantor B digambarkan dengan garis penuh warna merah. Sedangkan panggilan dari ekstensi Kantor A ke ekstensi Kantor B digambarkan dengan garis putus-putus warna merah.
  2. IP PBX kantor B akan meregistrasikan diri ke IP PBX kantor A, sehingga semua ekstensi di Kantor B bisa melakukan panggilan ke ekstensi di Kantor A hanya cukup dengan menekan nomer ekstensi yang dituju (tanpa prefix). Pada gambar skema d bawah, trunk kantor B menuju Kantor A digambarkan dengan garis penuh warna biru. Sedangkan panggilan dari ekstensi Kantor B ke ekstensi Kantor A digambarkan dengan garis dengan garis putus-putus warna biru.

IAX2 trunk

SETUP

SETUP KANTOR A

1. Masuk ke menu PBX -> PBX Configuration -> Trunks -> Add IAX2 Trunk. Isikan sebagai berikut:

Trunk Name: RouteToKantorB

PEER Details:

type=peer
host=10.0.2.20
context=from-internal
qualify=yes

Setelah itu klik Submit Changes.

2. Pilih menu PBX -> Tools -> Asterisk File Editor -> Show Filter. Isikan pada filter: iax_custom lalu klik nama file iax_custom.conf. Isikan seperti berikut:

[RouteToKantorB]
deny=0.0.0.0/0.0.0.0
context=from-internal
host=dynamic
type=friend
port=4569
qualify=yes
permit=10.0.2.20/255.255.255.255
requirecalltoken=no
calltokenoptional=0.0.0.0/0.0.0.0

Klik Save dan Reload Asterisk.

3. Pilih menu PBX -> PBX Configuration -> Outbound Routes -> Add Route. Lalu isikan sebagai berikut:

Route Name: ToKantorB

Di bawah opsi Dial Patterns that will use this Route isikan pada kotak match pattern: 2XXX

Lalu di menu drop down Trunk Sequence for Matched Routes pilih  RouteToKantorB, kemudian klik Submit Changes.

4. Terakhir klik Apply Config.

 

SETUP KANTOR B

1. Masuk ke menu PBX -> PBX Configuration -> Trunks -> Add IAX2 Trunk. Isikan sebagai berikut:

Trunk Name: RouteToKantorA

PEER Details:

type=peer
host=10.0.1.10
context=from-internal
qualify=yes

Setelah itu klik Submit Changes.

2. Pilih menu PBX -> Tools -> Asterisk File Editor -> Show Filter. Isikan pada filter: iax_custom lalu klik nama file iax_custom.conf. Isikan seperti berikut:

[RouteToKantorA]
deny=0.0.0.0/0.0.0.0
context=from-internal
host=dynamic
type=friend
port=4569
qualify=yes
permit=10.0.1.10/255.255.255.255
requirecalltoken=no
calltokenoptional=0.0.0.0/0.0.0.0

Klik Save dan Reload Asterisk.

3. Pilih menu PBX -> PBX Configuration -> Outbound Routes -> Add Route. Lalu isikan sebagai berikut:

Route Name: ToKantorA

Di bawah opsi Dial Patterns that will use this Route isikan pada kotak match pattern: 1XXX

Lalu di menu drop down Trunk Sequence for Matched Routes pilih  RouteToKantorA, kemudian klik Submit Changes.

4. Terakhir klik Apply Config.

TEST

  1. Register ekstensi-ekstensi yang diperlukan untuk test seperti pada gambar di atas (1001 dan 1002 untuk IP PBX Kantor A. 2001 dan 2003 untuk IP PBX Kantor B).
  2. Lakukan panggilan dari ekstensi 1002 (x1002) ke ekstensi 2001 (x2001) untuk test trunk dari IP PBX Kantor A ke IP PBX Kantor B.
  3. Lakukan panggilan dari ekstensi 2003 (x2003) ke ekstensi 1001 (x1001) untuk test trunk dari IP PBX Kantor B ke IP PBX Kantor A.
  4. Jika tidak ada kendala, masing-masing ekstensi dari IP PBX yang berbeda seharusnya sudah bisa tersambung dan saling bicara. Jika masih belum bisa, ikuti baik-baik langkah di atas, mungkin ada yang terlewat.

Selamat mencoba!

38 thoughts on “Interkoneksi IP PBX Dengan IAX2 Trunk”

    1. Untuk mirip-mirip. File yang diedit sip_custom.conf, isinya kopi paste saja dengan perubahan dihilangkan baris requirecalltoken dan calltokenoptional, lalu port diganti 5060.

  1. om mau nanya dong saya sudah coba seperti ini, tetapi tidak bisa.

    tapi saya coba menggukanakan server lain bisa, mohon bantuannya

    terima kasih.

    1. Boleh disertakan lognya ketika panggilan tidak bisa lewat? Akan sulit menentukan permasalahan jika tidak disertakan lognya.

  2. apakah bisa 2 server elastix(Berbeda segmen dan server fisik) bisa saling terhubung???
    Kalo bisa mohon bimbingannya mas.
    termia kasih

    1. ndak ada mas… selama ip address server pbx masing2 bisa saling ping dan tidak ada firewall yang ngeblokir komunikasinya. Misal ada firewall jangan lupa untuk dibuka port 4569 jika protokol yang digunakan IAX2. Jika trunk menggunakan SIP, mohon diallow port UDP/TCP 5060 untuk SIP signalling, dan UDP 10000 – 20000 untuk Media/RTP.

      1. apakah menggunakan voip gateway WellGate tidak support untuk elastix??? Dikarnakan konfigurasi yg saya buat sudah sama dengan yang om jelaskan tetapi tidak bisa terhubung antar kedua server.
        Termakasih Om

  3. apakah menggunakan voip gateway WellGate tidak support untuk elastix??? Dikarnakan konfigurasi yg saya buat sudah sama dengan yang om jelaskan tetapi tidak bisa terhubung antar kedua server.
    Termakasih Om

    1. Selama sama sama menggunakan protokol SIP, semua mediagw merek apa pun harusnya bisa mas. Saya yakin ini cuma miss di konfigurasi saja.

  4. Mas mau nanya,
    Saya sudah buat 2 server seperti di atas, namun ada kendala dari site B ke A tidak bisa call, padahal dari site A ke B sudah bisa mas, untuk melihat log detil kesalahan nya dimana ya mas?

    Terima kasih

    1. Bisa dengan melihat di /var/log/asterisk/messages untuk asterisk/freepbx/briker, atau di /var/log/asterisk/full untuk Elastix/Issabel.

      1. mas saya ketemu masalah baru, mau bertanya lagi mas, kenapa ya suara telepon ke nomor hp dan telepon biasa (telepon rumah/ kantor) kok suaranya kresek-kresek mas, saya pakai openvox 1200p dengan elastix 2.5 dengan settingan sebagai berikut :

        out bound
        PBX > PBX Configuration > Trunks > Add DAHDI Trunk
        Trunk Name: g0
        DAHDI Identifier: g0

        PBX > PBX Configuration > Outbound Routes
        Route Name: PSTN
        Dial Patterns that will use this Route
        match pattern: .
        Trunk Sequence for Matched Routes
        g0

        mohon bantuan nya mas

        1. kalau kresek2 itu bukan permasalahan dengan voipnya, tapi ada grounding yang belum benar di salah satu titik analognya. Kalau dirunut, dari pesawat telepon sampai dengan line yang masuk PBX banyak yang kemungkinan groundingnya bocor. Mulai dari kabel handle telpon yang masih tembaga, lalu dari pesawat telepon ke IP PBX kalau masih pake AtA. Lalu port Openvox 1200 itu sendiri juga ada komponen analognya. Pastikan saja grounding PBX ndak bocor.

  5. Halo om, terima kasih buat tutorialnya adakah tutorial buat menghubungkan lebiih dari 2 server voip? software pakai freepbx?
    makasih

    1. Caranya sama dengan di atas, dan sudah disebutkan di awal tulisan. Topologinya fullmesh, artinya jika menyambungkan 3 server, berarti masing2 server akan ada dua sip trunk. Jika 4 server, maka masing2 server ada 3 trunk dst.

  6. om gagal om saya telpon ke server b dari server a ane liat log nya di server b
    [2019-10-23 14:55:49] NOTICE[17584]: acl.c:750 ast_apply_acl: IAX2 user ACL: Rejecting ‘X.X.X.X’ due to a failure to pass ACL ‘(BASELINE)’

    1. baris berikut sudah ada om?
      permit=10.0.1.10/255.255.255.255
      requirecalltoken=no
      calltokenoptional=0.0.0.0/0.0.0.0

      ip address disesuaikan dengan ip address client nya.. karena itu ada log Rejecting ACL (Access Control List), yang artinya blok ip address client ndak diallow.

  7. Selamat siang mas,

    mas mau bertanya, saya pakai 2 briker meraki dan berhasil saling terhubung menggunakan cara mas, namun ada kendala mas, setiap beberapa saat (waktu nya bervariasi) trunk nya jadi offline sendiri, kira kira itu masalah dimana ya mas?

    atau adakah cara supaya dapat reconect trunk iax2 kembali?

    terima kasih mas

    1. ini harus dicari lognya pada saat offline. Agak sulit sih karena variasi kejadian waktunya. Ada sesuatu di laye 1-4 sepertinya. Bisa banyak hal. Log kalau bisa didapatkan mas.

    2. Hmmm… belum pernah mengalami hal ini. Apakah sudah ada config qualify=yes di setting trunk nya? Config ini untuk melakukan “ping” antar peer PBX nya.

  8. saya sudah ikuti cara tsb ko masih ga bisa ya…
    Kantor A: 10.62.100.254
    Kantor B : 10.62.200.254
    ping antar server sudah reply

    tp ketika call ga bisa

    saya pake ippbx isabel di kantor A & kantor B
    bsa bantu info pak
    wa ; 081387097175

    1. Boleh disertakan log nya? Supaya kita bisa tau tidakbisanya sampai mana. Untuk protokol menggunakan IAX2 juga? pastikan port tcp/udp 4569 open untuk kedua site tersebut, dan untuk test pastikan firewall di masing2 PBX semua allow dulu.

  9. Selamat malam mas..

    Mau tanya mas. kalau untuk menghubungkan 4 server dengan iax , dibagian iax.custom.conf-nya itu gimana ya ? (Dibagian permitnya mas)..

    1. Halo,
      mohon maaf baru balas. Jadi jika ip address untuk 4 server tersebut berada di satu blok memang akan mudah karena tinggal:

      permit=10.0.2.0/255.255.255.0

      Jika 4 server tersebut beda lokasi dan beda blok tambahkan saja permit multiple, misal:

      permit=10.0.1.20/255.255.255.255
      permit=10.0.2.20/255.255.255.255
      permit=10.0.3.20/255.255.255.255
      permit=10.0.4.20/255.255.255.255

      Semoga bisa membantu.

    1. Kalo delay itu berhubungan dengan RTCP kalo dari siptrace. Cuma kalo IAX ini belum tau mas. Untuk antisipasinya, IAX hanya menggunakan signalling dan rtp dengan satu port yaitu 4569 (UDP/TCP), kalau bisa diutamakan di CoS/QoS di port tersebut di router atau bw manager agar tidak delay.

Leave a Reply

Your email address will not be published. Required fields are marked *