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!

53 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. dimas febryanto

    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.

  10. maaf mas kalau misal buat ujicoba, setingan ini apakah bisa diaplikasikan untuk 2 server tapi dalam 1 jaringan lokal? jadi misal IP Servernya 192.168.1.11 dan 192.168.1.12 dalam subnet yg sama 255.255.0.0? dan menggunakan SIP bukan IAX2? Saya sdh coba langkah2 sesuai yg masGodril tulis, tapi kok belum bisa call antara 2 server tsb.
    terimakasih

    1. Harusnya tidak masalah mau menggunakan ip address berapa pun selama routingnya ketemu, bisa saling ping, dan port2 yang dibutuhkan dibuka semua (untuk SIP port yang dibutuhkan adalah 5060 (tcp/udp), dan rtp port 10000 – 20000 (udp). Jika ada log coba dipaste saja.

      1. saya jg coba artikel masGodril yg ini, https://asterisk.id/t/interkoneksi-ip-pbx-dengan-sip-trunk/1677, tapi sama msh blm bisa jg. Saya login pake putty antar kedua server bisa saling ping. Saya cek sip show peers trunk jg sudah konek di masing2 server

        ini error di server1:
        freepbx*CLI>
        [2020-07-06 04:04:52] NOTICE[11909][C-000000b9]: chan_sip.c:24154 handle_response_invite: Failed to authenticate on INVITE to ‘”EDP/IT” ;tag=as6257115f’
        [2020-07-06 04:04:56] WARNING[25182][C-000000b9]: channel.c:5190 ast_prod: Prodding channel ‘SIP/5102-00000153’ failed
        freepbx*CLI>

        ini error di server 2:
        [2020-07-06 11:06:10] ERROR[7434][C-00000004]: pbx.c:4425 ast_func_read: Function PJSIP_HEADER not registered
        [2020-07-06 11:06:10] WARNING[7434][C-00000004]: pbx.c:4277 func_args: Can’t find trailing parenthesis for function ‘DB(DEVICE/5102/dial’?
        [2020-07-06 11:06:10] ERROR[7434][C-00000004]: pbx.c:4464 ast_func_read2: Function PJSIP_HEADER not registered
        [2020-07-06 11:06:10] WARNING[7434][C-00000004]: pbx.c:4277 func_args: Can’t find trailing parenthesis for function ‘DB(DEVICE/5102/dial’?
        [2020-07-06 11:06:10] ERROR[7434][C-00000004]: pbx.c:4425 ast_func_read: Function PJSIP_HEADER not registered
        [2020-07-06 11:06:10] ERROR[7434][C-00000004]: pbx.c:4464 ast_func_read2: Function PJSIP_HEADER not registered
        [2020-07-06 11:06:10] WARNING[7434][C-00000004]: app_dial.c:2455 dial_exec_full: Unable to create channel of type ‘SIP’ (cause 20 – Subscriber absent)

        1. mas pakai pjsip ya? kalo yang ini saya belom coba langsung. Yang di postingan aterisk.id itu saya pakai chan_sip. Harusnya secara konsep sama, dan misal ada error itu cuma kurang config. Hanya saja ini belum pernah dapet kesempatan coba pake pjsip. Nanti begitu saya berhasil coba akan saya share.

  11. maaf masGodril br balas, itu jg yg saya heran, soalnya saya pake chan_sip di kedua server mas. Nah masalah ini utk sementara mau saya akali dengan menambah telp SIP di KantorB trus saya konekin ke freepbx di Kantor A, tapi blm berhasil jg. Kalo telp dari kantor A ke Kantor B dan sebaliknya, sepertinya sih nyambung, tapi tidak ada suara sama sekai. Dan saya cek pake sip show peers statusnya unreachable, tapi status di SIP Phone nya sdh Registered. Itu knp y mas?

    1. Dugaan awal sih kayaknya ada NAT antara dua server tersebut. Cara gampang ceknya adalah: coba SSH ke Server A dari Server B. Lalu di server A ketik: w. Nanti akan muncul ip address Server B yang kebaca oleh Server A dan sebaliknya. Kalo benar ada NAT, misal di server A ke B, maka Server A harus dikasih tau manual ip NAT nya di dan set di SIP settings. Kalo di FreePBX menunya ada di Tab Settings -> Asterisk SIP Settings -> tab General SIP Settings -> External Address. Isikan ip nat nya di situ. Lalu di LAN isikan ip network LAN.

  12. Muhammad Haekal

    Om, saya mau tanya om, bisakah kantor B memakai extension kantor A untuk telphone keluar? apakah ada tutorialnya om?

    1. Kantor B tidak perlu menggunakan ekstension kantor A untuk dapat menggunakan nomer telpon di Kantor A kalo itu yang dimaksud om. Cukup diatur di dialplan.

      Asumsi kantor A di Jakarta, dan kantor B di Surabaya. Kantor B hendak melakukan panggilan ke nomer Jakarta, agar biaya murah, maka kantor B hendak memanfaatkan nomer di kantor A agar panggilan lokal (istilah kerennya TEHO – Tail End Hop Off atau Toll By Pass). Yang dilakukan hanya mengatur dialplan di kantor B, setiap kali melakukan panggilan dengan awalan 021 atau +6221, diarahkan ke trunk PBX kantor A.

    1. caranya sama dengan yang sudah saya reply di pertanyaan sebelumnya, hanya saja kalo A ke B berart dialplan ditambahkan di trunk PBX A yang mengarah ke kantor B.

  13. hallo pak, saya pemula di IP PBX ini mohon pencerahannya pak
    saya sudah coba ikutin cara di atas namun ketika saya coba call ke ext gadung A dri gedung B itu selalu lewat ke SIP engga ke IAX2 padahal di outbound route nya udh saya arahin ke IAX2 , mohon solusinya pak
    terimakasih , semoga sehat selalu

    1. Dugaan saya di PBX mas yang lari ke SIP itu memang ada SIP trunk SIP, dan dialplan mas tertangkap oleh dialplan ke SIP tersebut. Apakah SIP trunknya bisa didisable terlebih dahulu?

  14. iya betul pak kebetulan di pbx saya ada sip dan juga IAX2.
    SIP Trunknya untuk outgoing call angsung register ke arah operator
    IAX2 nya saya peruntukan untuk call antar ext dri gedung A ke gedung B

    apakah ada solusinya pak agar sip trunk nya tidak harus di disable dulu karna satu satunya jalur outgoing call kami dri sip trunk itu , mohon pencerahannya pak

    terimakasih, semoga bapak selalu di beri kesehatan aamiin

Leave a Reply to godril Cancel Reply

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