Fusion PBX és ACL

Cikkem nem a termék teljes leírása, hanem csak a "FusionPBX, avagy ismét nagyszerű, FreeSWITCH" című jó kiadvány enyhe finomítása. Nekem úgy tűnik, hogy az ACL témája a FusionPBX-ben nem nagyon van benne. Ezt a hiányt megpróbálom pótolni a FreeSWITCH/FusionPBX-el kapcsolatos saját tapasztalataim alapján.

Így van egy telepített Fusion PBX-ünk 1010-es regisztrált belső számmal a domain.local tartományban, és egy konfigurált útvonallal a városba irányuló külső hívásokhoz. Az ACL-t használjuk, hogy megvédjük telefonrendszerünket a jogosulatlan hívásoktól, amelyek elveszik a pénzünket. Azok. csak az ACL-ben leírt hálózatokról engedélyezi a kimenő hívásokat. És itt teljesen világosan meg kell értenie az ACL működését a Fusion PBX-ben, annak jellemzőit, logikáját és rögzítési pontját.

A fenti cikk tisztelt szerzőjéhez hasonlóan én is ráléptem az ACL-lel kapcsolatos összes gereblyére.

azzal kezdem SipProfiles.
Mindkét profil (ennek nevezem őket), mind a belső, mind a külső, nyilvános kontextusban van, és ez nem véletlen. A számok regisztrációja a belső profilban történik, erre odafigyelünk. A belső profilban a tartományok ACL-je alkalmaz-bejövő-acl-ként van kötve. Ez a vonal felelős az ACL profilszintű működéséért. Eddig ennyi volt a profilokkal.

Kontextus

A kontextust többek között a hívásirányításban használják. Minden bejövő útvonal a nyilvános kontextushoz van kötve.

A kimenő (városba, mobilhálózatba, távolsági, nemzetközi és bármilyen más) útvonalak (alapértelmezés szerint) egy domain név kontextusában vannak (nevezzük domain.local).

ACL

Most foglalkozzunk az ACL-ekkel. Alapértelmezés szerint egy frissen telepített Fusion PBX két ACL-lel rendelkezik:

tartományok alapértelmezett művelete: deny - ez a lap a belső profilhoz van kötve
lan alapértelmezett művelet: engedélyezés

A domain ACL listában előírjuk a hálózatot (hát pl. 192.168.0.0/24), erre a hálózatra megadjuk az engedélyezési engedélyt, reloadacl-t használunk.

Ezután regisztrálunk egy telefont erről a hálózatról, és úgy tűnik, hogy minden rendben van, az utasításoknak megfelelően és logikusan.
Elkezdjük a tesztelést, felhívunk egy külső számot és ... kapunk egy fánkot, vagy inkább egy fánklyukat. Hirtelen!

Elkezdjük elemezni a naplót a konzolon vagy a Log Viewer FusioPBX-en keresztül.

Látjuk a kihívásunkat:

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

Látjuk az ACL-t, amely működött:

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

És tovább:

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] 

Nincs útvonal! Bár az útvonalat őszintén regisztráltuk.

A válasz nagyon egyszerű.

Megjött a hívás. Az ACL kihagyta. És mivel az ACL a belső profilhoz van kötve, és ez a profil nyilvános, a FreeSWITCH őszintén nézi az útválasztást a nyilvános kontextusban. De nyilvánosan csak a bejövő routing, és a rendszer őszintén megmondja, hogy ott nincsenek útvonalak a városba.

Ebből a helyzetből legalább két kiút van.

  1. Ezt az ACL-t ne a profilhoz csatolja, hanem magához a belső számhoz. Ez lehet a leghelyesebb megoldás a megoldásra, mert. A finomabb hangolás érdekében jobb, ha az ACL-t a lehető legközelebb köti az Extension-hez. Azok. előírhat egy konkrét címet/hálózati címet a telefonnak, amelyről kimenő hívást kezdeményezhet. Ennek az opciónak az a hátránya, hogy ezt minden bővítménynek meg kell tennie.
  2. Javítsa ki az ACL-t úgy, hogy az megfelelően működjön a profil szintjén. Azért választottam ezt a lehetőséget, mert egyszerűbbnek tűnt egyszer hozzáadni a hálózatot az ACL-hez, mint minden bővítményben előírni. De ez kifejezetten az én feladatomra vonatkozik. Más feladatokhoz más döntési logikára lehet szükség.

Így. Javítsuk ki az ACL tartományokat a következőképpen:

domain alapértelmezett művelete: engedélyezés

A domain ACL listában regisztráljuk a hálózatot:

tagadás 192.168.0.0/24

Jelentkezés, újratöltés.
Tesztelünk: újra tárcsázzuk a 98343379xxxx számot és ... jön az ellenőrző pont... HELLO. Minden működik.
Lássuk, mi történt a FreeSWITCH-ben:
hívás indul:

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

Az ACL nem hagyta ki:

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

és tovább:

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 

Elmúlt az útválasztás, majd jön a kapcsolatépítés, ami túlmutat a téma keretein.

Ha az ACL-ben megváltoztatjuk a hálózati címet, de az első tesztből megkapjuk a képet, pl. Az ACL kihagyja a hívást, és az útválasztás a NO_ROUTE_DESTINATION feliratot jelzi.

Valószínűleg ennyit akartam hozzátenni az ACL Fusion PBX-hez.

Remélem hasznos lesz valakinek.

Forrás: will.com

Hozzászólás