U mo articulu ùn hè micca una descrizzione completa di u pruduttu, ma solu un ligeru raffinamentu di a bona publicazione "FusionPBX, o novu-grande, FreeSWITCH". Mi pari chì u tema di ACL in FusionPBX ùn hè micca assai ben divulgatu in questu. Pruvaraghju di cumpensà sta lacuna basatu annantu à a mo sperienza cù FreeSWITCH / FusionPBX.
È cusì, avemu un FusionPBX installatu cù un numeru internu registratu 1010 in u duminiu domain.local è una strada cunfigurata per chjamati esterni à a cità. Utilizemu ACL per assicurà u nostru sistema di telefonia da chjamati micca autorizati chì ci portaranu i nostri soldi. Quelli. solu da e rete descritte in l'ACL permettenu e chjama in uscita. È quì avete bisognu di una cunniscenza cumplettamente chjara di cumu ACL funziona in FusionPBX, e so caratteristiche, a logica è u so puntu di ancora.
Cum'è l'autore rispettatu di l'articulu sopra, aghju ancu pisatu nantu à tutti i razzii ligati à ACL.
Cumincià cù SipProfiles.
I dui profili (li chjameraghju cusì), sia interni sia esterni, sò in u cuntestu Publicu, è questu ùn hè micca accidintali. L'arregistramentu di i numeri si faci in u prufilu internu, è avemu da esse attenti à questu. In u prufilu internu, i domini ACL hè ligatu cum'è apply-inbound-acl. Hè sta linea chì hè rispunsevule per l'operazione di l'ACL à u livellu di u prufilu. Finu à avà, hè questu cù i profili.
cuntestu
U cuntestu hè utilizatu, frà altre cose, in u routing di chjama. Tutte e rotte entranti sò ligati à u cuntestu Pùblicu.
Outgoing (à a cità, à cellula, longa distanza, internaziunale, è qualsiasi altri) rotte sò (per difettu) in u cuntestu di un nome di duminiu (chiamemu domain.local).
ACL
Avà trattamu cù ACL. Per automaticamente, un FusionPBX appena installatu hà dui ACL:
Azzione predeterminata di domini: deny - sta foglia hè ligata à u prufilu internu
azione predefinita lan: permette
In a lista di domini ACL, prescrivemu a reta (bene, per esempiu, 192.168.0.0/24), facemu l'autorizazione per questa reta, usemu reloadacl.
In seguitu, avemu registratu un telefonu da sta reta, è tuttu pare esse bè è secondu l'istruzzioni è logica.
Cuminciamu à pruvà, fate una chjama à un numeru esternu è ... avemu una ciambella, o piuttostu una ciambella. Di colpu !
Cuminciamu à analizà u log in a cunsola o attraversu u Log Viewer FusioPBX.
Avemu vistu a nostra sfida:
switch_channel.c:1104 New Channel sofia/internal/[email protected]
Avemu vistu l'ACL chì hà travagliatu:
sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.
È in più:
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]
Nisuna strada ! Ancu s'è a strada avemu onestamente registratu.
A risposta hè veramente simplice.
A chjama hè ghjunta. ACL hà mancatu. E postu chì l'ACL hè ligatu in u prufilu internu, è questu prufilu hè in u cuntestu publicu, FreeSWITCH onestamente guarda à u routing in u cuntestu publicu. Ma in u cuntestu pùblicu, solu u routing in entrata, è u sistema onestamente ci dice chì ùn ci sò micca rotte à a cità quì.
Ci hè almenu duie manere di fora di sta situazione.
- Attach this ACL micca à u prufilu, ma à u numeru internu stessu. Questu pò esse u modu più currettu per risolve, perchè. Hè megliu ligà l'ACL u più vicinu pussibule à Extension per una sintonizazione più fine. Quelli. pudete prescrive un indirizzu specificu / indirizzu di rete di u telefunu da quale pò fà una chjama in uscita. U svantaghju di sta opzione hè chì ogni Extension hà da fà questu.
- Fix l'ACL in modu chì funziona currettamente à u livellu di u prufilu. Aghju sceltu sta opzione, perchè mi pareva più faciule d'aghjunghje a reta à l'ACL una volta chì di prescrive in ogni Extension. Ma questu hè specificamente per u mo compitu. Per altri compiti, pudete bisognu di una logica di decisione diversa.
Allora. Fixemu i duminii ACL cusì:
azzione predeterminata di domini: permette
In a lista di domini ACL, registremu a reta:
ricusà 192.168.0.0/24
Applicà, reloadacl.
Testemu: marchemu u numeru 98343379xxxx di novu è ... u puntu di cuntrollu hè ghjuntu ... HELLO. Tuttu travaglia.
Videmu ciò chì hè accadutu in FreeSWITCH:
a chjama principia:
switch_channel.c:1104 New Channel sofia/internal/[email protected]
ACL ùn mancava micca:
[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.
è in più:
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 hè passatu, è dopu vene u stabilimentu di cunnessione, chì hè fora di u scopu di u tema.
Se cambiamu l'indirizzu di a reta in l'ACL, ma uttene a stampa da a prima prova, i.e. L'ACL saltarà a chjama è u routing dicerà NO_ROUTE_DESTINATION.
Hè probabilmente tuttu ciò chì vulia aghjunghje nantu à ACL FusionPBX.
Spergu chì serà utile à qualchissia.
Source: www.habr.com