FusionPBX және ACL

Менің мақалам өнімнің толық сипаттамасы емес, тек «FusionPBX немесе тағы да керемет, FreeSWITCH» жақсы жарияланымының шамалы нақтылануы. Менің ойымша, FusionPBX-тегі ACL тақырыбы онша жақсы ашылмаған сияқты. Мен FreeSWITCH/FusionPBX-пен өз тәжірибемнің негізінде бұл олқылықты толтыруға тырысамын.

Сонымен, бізде domain.local доменінде 1010 тіркелген ішкі нөмірі бар FusionPBX орнатылған және қалаға сыртқы қоңыраулар үшін конфигурацияланған маршрут бар. Біз телефония жүйемізді ақшамызды алып кететін рұқсатсыз қоңыраулардан қорғау үшін ACL пайдаланамыз. Анау. тек ACL сипатталған желілерден шығыс қоңырауларға рұқсат береді. Мұнда сізге FusionPBX жүйесінде ACL қалай жұмыс істейтінін, оның мүмкіндіктерін, логикасын және оның тірек нүктесін толық түсіну қажет.

Жоғарыда аталған мақаланың құрметті авторы сияқты, мен де ACL-ге қатысты барлық тырмаларды бастым.

Мен бастаймын SipProfiles.
Ішкі және сыртқы екі профиль де (оларды осылай атаймын) Қоғамдық контекстте және бұл кездейсоқ емес. Нөмірлерді тіркеу ішкі профильде жүреді, біз оған назар аударамыз. Ішкі профильде ACL домендері application-inbound-acl ретінде байланыстырылады. Дәл осы желі профиль деңгейінде ACL жұмысына жауап береді. Әзірге бұл профильдермен.

контекст

Мәтінмән басқа нәрселермен қатар қоңырауды бағыттауда қолданылады. Барлық кіріс маршруттар Жалпы контекстке байланысты.

Шығыс бағыттар (қалаға, ұялы телефондарға, қалааралық, халықаралық және кез келген басқа) атау контекстінде (әдепкі бойынша) орналасқан домен (оны жергілікті домен деп атайық).

ACL

Енді ACL-мен айналысайық. Әдепкі бойынша, жаңадан орнатылған FusionPBX екі ACL бар:

домендердің әдепкі әрекеті: бас тарту - бұл парақ ішкі профильге байланған
lan әдепкі әрекеті: рұқсат ету

ACL домендерінің тізімінде біз желіні белгілейміз (жақсы, мысалы, 192.168.0.0/24), біз осы желіге рұқсат береміз, біз reloadacl қолданамыз.

Әрі қарай, біз телефонды осы желіден тіркейміз және бәрі жақсы және нұсқауларға сәйкес және логикалық түрде.
Біз тестілеуді бастаймыз, сыртқы нөмірге қоңырау шаламыз және ... біз пончик аламыз, дәлірек айтсақ, пончик тесігі. Кенеттен!

Біз журналды консольде немесе FusioPBX Log Viewer арқылы талдауды бастаймыз.

Біз өз міндетімізді көреміз:

switch_channel.c:1104 New Channel sofia/internal/1010@domain.local

Біз жұмыс істеген ACL көреміз:

sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.

Және бұдан әрі:

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] 

Маршрут жоқ! Маршрутты біз адал тіркегенімен.

Жауап шынымен қарапайым.

Қоңырау келді. ACL оны жіберіп алды. ACL ішкі профильде байланыстырылғандықтан және бұл профиль жалпыға ортақ контекстте болғандықтан, FreeSWITCH жалпы контексте маршруттауды адал қарастырады. Бірақ қоғамдық контексте тек кіріс маршруты ғана бар, ал жүйе бізге қалаға қатынайтын маршруттар жоқ екенін шынайы айтады.

Бұл жағдайдан шығудың кем дегенде екі жолы бар.

  1. Бұл ACL профиліне емес, ішкі нөмірдің өзіне бекітіңіз. Бұл шешудің ең дұрыс жолы болуы мүмкін, өйткені. Жақсырақ реттеу үшін ACL мүмкіндігінше Extension-ге жақын байлаған дұрыс. Анау. шығыс қоңырау шала алатын телефонның белгілі бір мекенжайын / желілік мекенжайын белгілей аласыз. Бұл опцияның кемшілігі - әрбір кеңейтім мұны істеуі керек.
  2. ACL профиль деңгейінде дұрыс жұмыс істейтіндей етіп түзетіңіз. Мен бұл опцияны таңдадым, өйткені маған желіні ACL-ге бір рет қосу оны әрбір кеңейтімде белгілеуден оңайырақ болып көрінді. Бірақ бұл менің тапсырмам үшін арнайы. Басқа тапсырмалар үшін сізге басқа шешім қабылдау логикасы қажет болуы мүмкін.

Сонымен. ACL домендерін келесідей түзетейік:

домендердің әдепкі әрекеті: рұқсат ету

ACL домендерінің тізімінде біз желіні тіркейміз:

192.168.0.0/24 жоққа шығару

Қолдану, қайта жүктеу.
Біз сынап жатырмыз: біз 98343379xxxx нөмірін қайтадан тереміз және ... бақылау пункті келеді ... СӘЛЕМ. Барлығы жұмыс істейді.
FreeSWITCH-те не болғанын көрейік:
қоңырау басталады:

switch_channel.c:1104 New Channel sofia/internal/1010@domain.local

ACL жіберіп алған жоқ:

[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.

және одан әрі:

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 

Маршруттау өтті, содан кейін тақырып ауқымынан тыс байланыс орнату келеді.

Егер біз ACL-де желі мекенжайын өзгертсек, бірақ бірінші сынақтан суретті алсақ, яғни. ACL қоңырауды өткізіп жібереді және маршруттау NO_ROUTE_DESTINATION дейді.

Бұл мен ACL FusionPBX-ке қосқым келген нәрсе болса керек.

Бұл біреуге пайдалы болады деп үміттенемін.

Ақпарат көзі: www.habr.com

пікір қалдыру