FusionPBX a ACL

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.

  1. 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.
  2. 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

Pridať komentár