Môj článok nie je úplným popisom produktu, ale len miernym doladením dobrej publikácie "FusionPBX, alebo opäť super, FreeSWITCH". Zdá sa mi, že téma ACL vo FusionPBX v ňom nie je veľmi dobre zverejnená. Pokúsim sa vyplniť túto medzeru na základe vlastnej skúsenosti s FreeSWITCH/FusionPBX.
A tak máme nainštalovanú FusionPBX s registrovaným interným číslom 1010 v doméne domain.local a nakonfigurovanú trasu pre externé hovory do mesta. ACL používame na zabezpečenie nášho telefónneho systému pred neoprávnenými hovormi, ktoré nám vezmú peniaze. Tie. iba zo sietí popísaných v ACL umožňujú odchádzajúce hovory. A tu potrebujete úplne jasné pochopenie toho, ako ACL funguje vo FusionPBX, jeho vlastnosti, logika a jeho kotviaci bod.
Rovnako ako rešpektovaný autor vyššie uvedeného článku, aj ja som stúpil na všetky hrable súvisiace s ACL.
Začnem s SipProfiles.
Oba profily (nazvem ich tak), interné aj externé, sú vo verejnom kontexte a nie je to náhodné. Registrácia čísel prebieha v internom profile a budeme jej venovať pozornosť. V internom profile sú domény ACL viazané ako apply-inbound-acl. Práve táto linka je zodpovedná za fungovanie ACL na úrovni profilu. Zatiaľ je to s profilmi všetko.
Kontext
Kontext sa okrem iného používa pri smerovaní hovorov. Všetky prichádzajúce cesty sú viazané na verejný kontext.
Odchádzajúce (do mesta, do mobilnej siete, medzimestské, medzinárodné a akékoľvek iné) trasy sú (štandardne) v kontexte názvu domény (nazvime to doména.miestna).
ACL
Teraz sa poďme zaoberať ACL. V predvolenom nastavení má čerstvo nainštalovaná FusionPBX dva ACL:
domény predvolená akcia: zamietnuť - tento hárok je viazaný na interný profil
lan predvolená akcia: povoliť
V zozname domén ACL predpíšeme sieť (dobre napríklad 192.168.0.0/24), urobíme povolenie povolenia pre túto sieť, použijeme reloadacl.
Ďalej zaregistrujeme telefón z tejto siete a všetko sa zdá byť v poriadku a podľa pokynov a logicky.
Začneme testovať, zavoláme na externé číslo a ... dostaneme šišku, alebo skôr dierku na šišku. Zrazu!
Začneme analyzovať protokol v konzole alebo cez Log Viewer FusioPBX.
Vidíme našu výzvu:
switch_channel.c:1104 New Channel sofia/internal/[email protected]
Vidíme zoznam ACL, ktorý fungoval:
sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.
A ďalej:
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/[email protected] [CS_ROUTING] [NO_ROUTE_DESTINATION]
Žiadna trasa! Aj keď trasu máme poctivo zaregistrovanú.
Odpoveď je naozaj jednoduchá.
Prišiel hovor. ACL to zmeškal. A keďže ACL je viazaný v internom profile a tento profil je vo verejnom kontexte, FreeSWITCH sa poctivo pozerá na smerovanie vo verejnom kontexte. Ale vo verejnom kontexte iba prichádzajúce smerovanie a systém nám úprimne hovorí, že tam žiadne cesty do mesta nevedú.
Z tejto situácie existujú minimálne dva spôsoby.
- Toto ACL nepripájajte k profilu, ale k samotnému internému číslu. Toto môže byť najsprávnejší spôsob riešenia, pretože. Pre jemnejšie ladenie je lepšie viazať ACL čo najbližšie k Extension. Tie. môžete predpísať konkrétnu adresu / sieťovú adresu telefónu, z ktorej môže uskutočniť odchádzajúci hovor. Nevýhodou tejto možnosti je, že to bude musieť urobiť každé rozšírenie.
- Opravte ACL tak, aby fungoval správne na úrovni profilu. Vybral som si túto možnosť, pretože sa mi zdalo jednoduchšie pridať sieť do ACL raz, ako ju predpisovať v každom Extension. Ale toto je špeciálne pre moju úlohu. Pri iných úlohách možno budete potrebovať inú logiku rozhodovania.
Takže. Opravme domény ACL takto:
domény predvolená akcia: povoliť
V zozname ACL domén registrujeme sieť:
zamietnuť 192.168.0.0/24
Použiť, znova načítať.
Testujeme: opäť vytáčame číslo 98343379xxxx a ... checkpoint sa blíži ... AHOJ. Všetko funguje.
Pozrime sa, čo sa stalo vo FreeSWITCH:
hovor začína:
switch_channel.c:1104 New Channel sofia/internal/[email protected]
ACL si nenechalo ujsť:
[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.
a ďalej:
mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context domain.local
sofia/internal/[email protected] Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]d{6})$/ break=on-false
Smerovanie prešlo a potom prichádza nadviazanie spojenia, čo je nad rámec témy.
Ak zmeníme sieťovú adresu v ACL, ale získame obrázok z prvého testu, t.j. ACL preskočí hovor a smerovanie povie NO_ROUTE_DESTINATION.
To je asi všetko, čo som chcel pridať k ACL FusionPBX.
Dúfam, že to bude pre niekoho užitočné.
Zdroj: hab.com