FusionPBX a ACL

Můj článek není úplným popisem produktu, ale pouze mírným upřesněním dobré publikace "FusionPBX, aneb opět skvělé, FreeSWITCH". Zdá se mi, že téma ACL ve FusionPBX v něm není příliš dobře popsáno. Pokusím se tuto mezeru vyplnit na základě vlastní zkušenosti s FreeSWITCH/FusionPBX.

A tak máme nainstalovanou FusionPBX s registrovaným interním číslem 1010 v doméně domain.local a nakonfigurovanou trasu pro externí hovory do města. ACL používáme k zabezpečení našeho telefonního systému před neoprávněnými hovory, které nám vezmou peníze. Tito. pouze ze sítí popsaných v ACL umožňují odchozí hovory. A zde potřebujete zcela jasně porozumět tomu, jak ACL funguje ve FusionPBX, jeho funkcím, logice a kotevnímu bodu.

Stejně jako respektovaný autor výše uvedeného článku jsem také šlápl na všechny hrábě související s ACL.

Začnu SipProfiles.
Oba profily (budu je tak nazývat), interní i externí, jsou v kontextu Public, a to není náhodné. Registrace čísel probíhá v interním profilu a budeme se jí věnovat. V interním profilu jsou domény ACL svázány jako apply-inbound-acl. Právě tato linka je zodpovědná za provoz ACL na úrovni profilu. Zatím je to s profily.

Kontext

Kontext se používá mimo jiné při směrování hovorů. Všechny příchozí cesty jsou vázány na veřejný kontext.

Odchozí (do města, na mobilní, meziměstské, mezinárodní a jakékoli jiné) trasy jsou (ve výchozím nastavení) v kontextu názvu domény (říkejme tomu doména.místní).

ACL

Nyní se pojďme zabývat ACL. Ve výchozím nastavení má čerstvě nainstalovaná FusionPBX dva ACL:

domény výchozí akce: zakázat - tento list je vázán na interní profil
lan výchozí akce: povolit

V seznamu domén ACL předepíšeme síť (dobře například 192.168.0.0/24), uděláme povolení povolení pro tuto síť, použijeme reloadacl.

Dále registrujeme telefon z této sítě a vše se zdá být v pořádku a podle návodu a logicky.
Začneme testovat, zavoláme na externí číslo a ... dostaneme koblihu, nebo spíše dírku na koblihu. Najednou!

Začneme analyzovat protokol v konzole nebo prostřednictvím prohlížeče protokolů FusioPBX.

Vidíme naši výzvu:

switch_channel.c:1104 New Channel sofia/internal/[email protected]

Vidíme ACL, které fungovalo:

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

A dále:

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] 

Žádná trasa! I když trasu máme poctivě registrovanou.

Odpověď je opravdu jednoduchá.

Přišel hovor. ACL to minul. A protože ACL je vázáno v interním profilu a tento profil je ve veřejném kontextu, FreeSWITCH se upřímně dívá na směrování ve veřejném kontextu. Ale ve veřejném kontextu pouze příchozí směrování a systém nám upřímně říká, že tam žádné cesty do města nevedou.

Z této situace existují minimálně dvě cesty.

  1. Tento ACL nepřipojujte k profilu, ale k samotnému internímu číslu. To může být nejsprávnější způsob řešení, protože. Pro jemnější ladění je lepší svázat ACL co nejblíže k Extension. Tito. můžete mu předepsat konkrétní adresu / síťovou adresu telefonu, ze kterého může uskutečňovat odchozí hovor. Nevýhodou této možnosti je, že to bude muset udělat každé rozšíření.
  2. Opravte ACL tak, aby fungoval správně na úrovni profilu. Zvolil jsem tuto možnost, protože se mi zdálo jednodušší přidat síť do ACL jednou, než ji předepisovat v každém rozšíření. Ale to je speciálně pro můj úkol. Pro jiné úkoly možná budete potřebovat jinou logiku rozhodování.

Tak. Opravme domény ACL následovně:

domény výchozí akce: povolit

V seznamu ACL domén registrujeme síť:

zamítnout 192.168.0.0/24

Použít, znovu načíst.
Testujeme: znovu vytočíme číslo 98343379xxxx a ... kontrolní bod se blíží ... AHOJ. Všechno funguje.
Podívejme se, co se stalo ve FreeSWITCH:
hovor začíná:

switch_channel.c:1104 New Channel sofia/internal/[email protected]

ACL si nenechalo ujít:

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

a dále:

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 

Směrování prošlo a pak přichází navázání spojení, což je nad rámec tématu.

Pokud změníme síťovou adresu v ACL, ale dostaneme obrázek z prvního testu, tzn. ACL přeskočí hovor a směrování řekne NO_ROUTE_DESTINATION.

To je asi vše, co jsem chtěl k ACL FusionPBX přidat.

Doufám, že to bude pro někoho užitečné.

Zdroj: www.habr.com

Přidat komentář