FusionPBX i ACL

Moj članak nije potpuni opis proizvoda, već samo blago usavršavanje dobre publikacije "FusionPBX, ili opet sjajno, FreeSWITCH". Čini mi se da tema ACL-a u FusionPBX-u nije dobro razotkrivena u njemu. Pokušat ću popuniti ovu prazninu na temelju vlastitog iskustva s FreeSWITCH/FusionPBX.

I tako, imamo instaliranu FusionPBX s registriranim internim brojem 1010 u domeni domain.local i konfiguriranu rutu za vanjske pozive prema gradu. Koristimo ACL kako bismo zaštitili naš telefonski sustav od neovlaštenih poziva koji će nam oduzeti novac. Oni. samo iz mreža opisanih u ACL-u dopuštaju odlazne pozive. I ovdje vam je potrebno potpuno jasno razumijevanje načina na koji ACL radi u FusionPBX-u, njegove značajke, logiku i njegovu sidrišnu točku.

Kao i poštovani autor gornjeg članka, i ja sam stao na sve grablje vezane uz ACL.

Počet ću s SipProfili.
Oba profila (tako ću ih nazvati), i interni i eksterni, nalaze se u javnom kontekstu i to nije slučajno. Registracija brojeva odvija se u internom profilu, na što ćemo obratiti pozornost. U internom profilu, ACL domene vezan je kao apply-inbound-acl. Upravo je ta linija odgovorna za rad ACL-a na razini profila. Za sada je to to s profilima.

Kontekst

Kontekst se, između ostalog, koristi u usmjeravanju poziva. Sve dolazne rute vezane su za javni kontekst.

Odlazne (prema gradu, na mobilnu mrežu, međugradske, međunarodne i bilo koje druge) rute su (prema zadanim postavkama) u kontekstu naziva domene (nazovimo ga domain.local).

ACL

Sada se pozabavimo ACL-ovima. Prema zadanim postavkama, svježe instalirani FusionPBX ima dva ACL-a:

domene zadana akcija: odbij - ovaj list je vezan za interni profil
lan zadana radnja: dopusti

U ACL popisu domena propisujemo mrežu (dobro, na primjer, 192.168.0.0/24), dopuštamo dopuštenje za ovu mrežu, koristimo reloadacl.

Zatim registriramo telefon iz ove mreže i čini se da je sve u redu, prema uputama i logično.
Krenemo s testiranjem, nazovemo eksterni broj i ... dobijemo krafnu, odnosno krafnu. Iznenada!

Počinjemo analizirati zapisnik u konzoli ili kroz Log Viewer FusioPBX.

Vidimo svoj izazov:

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

Vidimo ACL koji je radio:

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

I dalje:

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] 

Nema rute! Iako smo rutu pošteno upisali.

Odgovor je zaista jednostavan.

Poziv je stigao. ACL je to propustio. A budući da je ACL vezan u internom profilu, a ovaj je profil u javnom kontekstu, FreeSWITCH iskreno gleda na usmjeravanje u javnom kontekstu. Ali u javnom kontekstu, samo dolazno rutiranje, a sustav nam iskreno kaže da tamo nema ruta do grada.

Postoje najmanje dva izlaza iz ove situacije.

  1. Priložite ovaj ACL ne profilu, već samom internom broju. Ovo je možda najispravniji način rješavanja, jer. Bolje je vezati ACL što bliže proširenju za finije podešavanje. Oni. možete propisati određenu adresu / mrežnu adresu telefona s koje može ostvariti odlazni poziv. Nedostatak ove opcije je da će to morati učiniti svako proširenje.
  2. Popravite ACL tako da ispravno radi na razini profila. Odabrao sam ovu opciju jer mi se činilo lakšim dodati mrežu u ACL jednom nego je propisivati ​​u svakoj ekstenziji. Ali ovo je posebno za moj zadatak. Za druge zadatke možda će vam trebati drugačija logika donošenja odluka.

Tako. Popravimo ACL domene na sljedeći način:

zadana radnja domena: dopusti

U ACL listi domena registriramo mrežu:

odbiti 192.168.0.0/24

Primijeni, ponovno učitaj.
Testiramo: ponovno biramo broj 98343379xxxx i ... dolazi kontrolna točka ... ZDRAVO. Sve radi.
Pogledajmo što se dogodilo u FreeSWITCH-u:
poziv počinje:

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

ACL nije propustio:

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

i dalje:

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 

Routing je prošao, a onda dolazi uspostava veze, što je izvan okvira teme.

Ako promijenimo mrežnu adresu u ACL-u, ali dobijemo sliku iz prvog testa, tj. ACL će preskočiti poziv i usmjeravanje će reći NO_ROUTE_DESTINATION.

To je vjerojatno sve što sam želio dodati na ACL FusionPBX.

Nadam se da će nekome biti od koristi.

Izvor: www.habr.com

Dodajte komentar