Mening maqolam mahsulotning to'liq tavsifi emas, balki "FusionPBX yoki yana ajoyib, FreeSWITCH" yaxshi nashrining ozgina takomillashtirilishi. Menimcha, FusionPBX-da ACL mavzusi unchalik yaxshi ochib berilmagan. Men FreeSWITCH/FusionPBX bilan o'z tajribamga asoslanib, bu bo'shliqni to'ldirishga harakat qilaman.
Shunday qilib, bizda domain.local domenida ro'yxatdan o'tgan 1010 ichki raqamiga ega FusionPBX o'rnatilgan va shaharga tashqi qo'ng'iroqlar uchun sozlangan marshrut mavjud. Biz telefoniya tizimimizni ruxsatsiz qo'ng'iroqlardan himoya qilish uchun ACL dan foydalanamiz, bu esa pulimizni olib qo'yadi. Bular. faqat ACLda tasvirlangan tarmoqlardan chiquvchi qo'ng'iroqlarga ruxsat beradi. Va bu erda sizga FusionPBX-da ACL qanday ishlashi, uning xususiyatlari, mantig'i va bog'lanish nuqtasi haqida to'liq aniq tushuncha kerak.
Yuqoridagi maqolaning hurmatli muallifi singari, men ham ACL bilan bog'liq barcha rakelarga qadam qo'ydim.
bilan boshlayman SipProfiles.
Ikkala profil ham (men ularni shunday deb atayman), ham ichki, ham tashqi, ommaviy kontekstda va bu tasodifiy emas. Raqamlarni ro'yxatga olish ichki profilda amalga oshiriladi va biz bunga e'tibor beramiz. Ichki profilda ACL domenlari application-inbound-acl sifatida bog'langan. Aynan shu liniya ACL ning profil darajasida ishlashi uchun javobgardir. Hozircha, bu profillar bilan.
Kontekst
Kontekst, boshqa narsalar qatori, qo'ng'iroqlarni marshrutlashda ishlatiladi. Barcha kiruvchi marshrutlar Umumiy kontekstga bog'langan.
Chiquvchi yo'nalishlar (shaharga, mobil telefonlarga, shaharlararo, xalqaro va boshqa har qanday yo'nalishlarga) nom kontekstida (sukut bo'yicha) joylashgan domen (buni domen.local deb ataymiz).
ACL
Endi ACL bilan shug'ullanamiz. Odatiy bo'lib, yangi o'rnatilgan FusionPBX ikkita ACLga ega:
domenlarning standart harakati: rad etish - bu varaq ichki profilga bog'langan
lan standart amal: ruxsat berish
ACL domenlari ro'yxatida biz tarmoqni belgilaymiz (masalan, 192.168.0.0/24), biz ushbu tarmoqqa ruxsat beramiz, biz reloadacl dan foydalanamiz.
Keyinchalik, biz ushbu tarmoqdan telefonni ro'yxatdan o'tkazamiz va hamma narsa yaxshi va ko'rsatmalarga muvofiq va mantiqiy ko'rinadi.
Biz sinovni boshlaymiz, tashqi raqamga qo'ng'iroq qilamiz va ... biz donutni, aniqrog'i donut teshigini olamiz. Birdan!
Biz jurnalni konsolda yoki FusioPBX Log Viewer orqali tahlil qilishni boshlaymiz.
Biz qiyinchilikni ko'ramiz:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.localBiz ishlagan ACLni ko'ramiz:
sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.Va yana:
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] Marshrut yo'q! Garchi marshrut biz ro'yxatdan o'tgan bo'lsa-da.
Javob haqiqatan ham oddiy.
Qo'ng'iroq keldi. ACL buni o'tkazib yubordi. Va ACL ichki profilga bog'langanligi va bu profil ommaviy kontekstda bo'lgani uchun FreeSWITCH ochiq kontekstda marshrutlashni ko'rib chiqadi. Ammo ommaviy kontekstda faqat kiruvchi marshrut va tizim bizga u erda shaharga hech qanday yo'nalish yo'qligini ochiqchasiga aytadi.
Ushbu vaziyatdan chiqishning kamida ikkita yo'li bor.
- Ushbu ACLni profilga emas, balki ichki raqamning o'ziga biriktiring. Bu hal qilishning eng to'g'ri yo'li bo'lishi mumkin, chunki. Yaxshiroq sozlash uchun ACL-ni Extension-ga iloji boricha yaqinroq bog'lash yaxshiroqdir. Bular. siz chiquvchi qo'ng'iroqni amalga oshirishi mumkin bo'lgan telefonning ma'lum bir manzilini / tarmoq manzilini belgilashingiz mumkin. Ushbu variantning kamchiligi shundaki, har bir kengaytma buni amalga oshirishi kerak.
- ACL ni profil darajasida to'g'ri ishlashi uchun tuzating. Men ushbu variantni tanladim, chunki har bir kengaytmada uni belgilashdan ko'ra, tarmoqni ACLga bir marta qo'shish menga osonroq tuyuldi. Lekin bu mening vazifam uchun maxsus. Boshqa vazifalar uchun sizga qaror qabul qilish uchun boshqa mantiq kerak bo'lishi mumkin.
Shunday qilib. Keling, ACL domenlarini quyidagicha tuzatamiz:
domenlarning standart harakati: ruxsat berish
ACL domenlari ro'yxatida biz tarmoqni ro'yxatdan o'tkazamiz:
192.168.0.0/24 ni rad etish
Qo'llash, qayta yuklash.
Biz sinovdan o'tmoqdamiz: biz yana 98343379xxxx raqamini teramiz va ... nazorat punkti kelmoqda ... SALOM. Hammasi ishlayapti.
Keling, FreeSWITCH-da nima bo'lganini ko'rib chiqaylik:
qo'ng'iroq boshlanadi:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.localACL o'tkazib yubormadi:
[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.va yana:
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 Marshrutlash o'tdi, keyin esa mavzu doirasidan tashqarida bo'lgan ulanish o'rnatilishi keladi.
Agar biz ACLda tarmoq manzilini o'zgartirsak, lekin rasmni birinchi sinovdan olsak, ya'ni. ACL qo'ng'iroqni o'tkazib yuboradi va marshrut NO_ROUTE_DESTINATION deb aytadi.
Bu, ehtimol, men ACL FusionPBX-ga qo'shmoqchi bo'lgan narsadir.
Umid qilamanki, bu kimgadir foydali bo'ladi.
Manba: www.habr.com
