Artikel saya bukan deskripsi lengkap tentang produk, tetapi hanya klarifikasi kecil dari publikasi yang baik "FusionPBX, atau sekali lagi, hebat, FreeSWITCH". Sepertinya saya bahwa topik ACL di FusionPBX tidak tercakup dengan baik. Saya akan mencoba mengisi celah ini, berdasarkan pengalaman saya sendiri dengan FreeSWITCH / FusionPBX.
Jadi, kami telah menginstal FusionPBX dengan nomor ekstensi terdaftar 1010 di domain.local domain dan rute yang dikonfigurasi untuk panggilan eksternal ke kota. Kami menggunakan ACL untuk melindungi sistem telepon kami dari panggilan tidak sah yang akan mengambil uang kami. Yaitu hanya dari jaringan yang dijelaskan dalam ACL yang memungkinkan panggilan keluar. Dan di sini Anda membutuhkan pemahaman yang sangat jelas tentang bagaimana ACL di FusionPBX bekerja, fitur-fiturnya, logika, dan titik lampirannya.
Seperti penulis terhormat artikel di atas, saya juga menginjak semua garu yang terkait dengan ACL.
Saya akan mulai dengan
SipProfiles .
Kedua profil (saya akan menyebutnya demikian), dan internal, dan eksternal berada dalam konteks Publik, dan ini bukan kebetulan. Registrasi angka dilakukan di profil internal, dan perhatikan. Di profil internal, domain ACL terikat sebagai apply-inbound-acl. Baris ini bertanggung jawab untuk pengoperasian ACL di tingkat profil. Sejauh ini dengan profil.
Konteks
Konteks, antara lain, digunakan dalam panggilan panggilan. Semua rute yang masuk terikat dengan konteks publik.
Rute keluar (ke kota, ke seluler, antar kota, internasional, dan lainnya) berada (secara default) dalam konteks nama domain (sebut saja domain.local).
ACL
Sekarang mari kita berurusan dengan ACL. Secara default, FusionPBX yang baru diinstal memiliki dua ACL:
tindakan default domain: deny - sheet ini terikat ke profil internal
dan tindakan default: izinkan
Dalam daftar domain ACL kami mengatur jaringan (baik, misalnya, 192.168.0.0/24), membuat memungkinkan jaringan untuk jaringan ini, gunakan reloadacl.
Selanjutnya, daftarkan ponsel dari jaringan ini, dan semuanya tampak baik-baik saja sesuai dengan instruksi dan logis.
Kami mulai menguji, melakukan panggilan ke nomor eksternal dan ... kami mendapatkan bagel, atau lebih tepatnya lubang dari bagel. Tanpa diduga!
Kami mulai menganalisis log di konsol atau melalui Log Viewer FusioPBX.
Kami melihat panggilan kami:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.local
Kami melihat ACL yang dipicu:
sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.
Dan selanjutnya:
mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context public switch_core_state_machine.c:311 No Route, Aborting switch_core_state_machine.c:312 Hangup sofia/internal/1010@domain.local [CS_ROUTING] [NO_ROUTE_DESTINATION]
Tidak ada rute! Meskipun rute kami telah terdaftar dengan jujur.
Jawabannya sangat sederhana.
Panggilan sudah datang. ACL melewatkannya. Dan karena ACL terikat dalam profil internal, dan profil ini berada dalam konteks publik, FreeSWITCH dengan jujur melihat perutean dalam konteks publik. Tetapi dalam konteks publik, hanya ada rute masuk, dan sistem dengan jujur memberi tahu kita bahwa tidak ada rute ke kota di sana.
Setidaknya ada dua jalan keluar dari situasi ini.
- Lampirkan ACL ini bukan ke profil, tetapi ke nomor internal. Ini mungkin cara paling benar untuk diselesaikan, karena ACL harus diikat sedekat mungkin dengan Ekstensi untuk penyetelan yang lebih halus. Yaitu Anda dapat menentukan alamat / alamat jaringan tertentu dari ponsel yang darinya ia dapat melakukan panggilan keluar. Kerugian dari opsi ini adalah bahwa dalam setiap Ekstensi Anda harus melakukan ini.
- Perbaiki ACL sehingga berfungsi dengan benar di tingkat profil. Saya memilih opsi ini, karena menambahkan jaringan ke ACL menurut saya lebih mudah daripada menulisnya di setiap ekstensi. Tapi ini khusus untuk tugasku. Untuk tugas-tugas lain, Anda mungkin memerlukan logika keputusan yang berbeda.
Dan begitulah. Mari kita perbaiki domain ACL sebagai berikut:
tindakan default domain: bolehkan
Dalam daftar domain ACL kami mengatur jaringan:
tolak 192.168.0.0/24
Terapkan reloadacl.
Kami menguji: kami menghubungi lagi nomor 98343379xxxx dan ... CPV pergi ... ALLO. Semuanya berfungsi.
Kami melihat apa yang terjadi di FreeSWITCH:
Panggilan dimulai:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.local
ACL tidak ketinggalan:
[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.
dan selanjutnya:
mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context domain.local sofia/internal/1010@domain.local Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]\d{6})$/ break=on-false
Routing telah lewat, dan kemudian koneksi dibuat yang melampaui lingkup topik.
Jika kami mengubah alamat jaringan di ACL, tetapi mendapatkan gambar dari tes pertama, mis. Panggilan ACL akan melewati dan perutean akan mengatakan NO_ROUTE_DESTINATION.
Mungkin itu yang ingin saya tambahkan pada FusionPBX ACL.
Saya harap seseorang berguna.