FusionPBX och ACL

Min artikel Àr inte en fullstÀndig beskrivning av produkten, utan bara en liten förklaring av en bra publikation "FusionPBX, eller Äterigen, FreeSWITCH". Jag tycker att Àmnet ACL i FusionPBX inte riktigt behandlas pÄ ett bra sÀtt i den. Jag kommer att försöka fylla detta tomrum baserat pÄ min egen erfarenhet av att arbeta med FreeSWITCH/FusionPBX.

SÄ, vi har installerat FusionPBX med det registrerade interna numret 1010 i domÀnen domain.local och ett konfigurerat route för externa samtal till staden. Vi anvÀnder ACL för att skydda vÄrt telefonsystem frÄn obehöriga samtal som kan kosta oss pengar. Det innebÀr att endast de nÀtverk som beskrivs i ACL tillÄts göra utgÄende samtal. HÀr krÀvs det en tydlig förstÄelse för hur ACL fungerar i FusionPBX, dess egenskaper, logik och kopplingspunkt.

Precis som den respekterade författaren av den nÀmnda artikeln sÄ har Àven jag stött pÄ alla fallgropar kopplade till ACL.

Jag börjar med SipProfiles.
BÄda profilerna (som jag kommer att kalla dem), bÄde internal och external, finns i kontexten Public, vilket inte Àr en slump. Registreringen av nummer sker i profilen internal, och vi kommer att fokusera pÄ den. I profilen internal Àr ACL-listan domains kopplad som apply-inbound-acl. Det Àr just den hÀr raden som ansvarar för ACL:s funktion pÄ profilenivÄ. SÄ lÄngt har vi klarat profilerna.

Context

Kontexten anvÀnds ocksÄ vid samtalsroutning. Alla inkommande rutter Àr kopplade till kontexten Public.

UtgÄende (till staden, till mobiltelefoner, lÄngdistans, internationella, och andra) rutter finns (som standard) i kontexten med namnet domÀn (lÄt oss kalla den domain.local).

ACL

LÄt oss nu titta pÄ ACL. Som standard finns det tvÄ ACL-listor i den nyinstallerade FusionPBX:

domains default action: deny — denna lista Ă€r kopplad till profilen internal
lan default action: allow

I ACL-listan domains anger vi nÀtverket (till exempel 192.168.0.0/24), ger detta nÀtverk tillstÄnd allow, och tillÀmpar reloadacl.

DÀrefter registrerar vi en telefon frÄn detta nÀtverk, och det verkar vara okej bÄde enligt instruktionerna och logiskt.
Vi börjar testa, gör ett samtal till ett externt nummer och
 fĂ„r ett bakslag, eller snarare en donut. OvĂ€ntat!

Vi börjar analysera loggen i konsolen eller via Log Viewer i FusioPBX.

Vi ser vÄrt samtal:

switch_channel.c:1104 New Channel sofia/internal/1010@domain.local

Vi ser den aktiverade ACL:

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

Och vidare:

mod_dialplan_xml.c:637 Bearbetning 1010 ->98343379xxxx i kontext offentlig
switch_core_state_machine.c:311 Inga rutter, avbryter 
switch_core_state_machine.c:312 Överge sofia/internal/1010@domain.local [CS_ROUTING] [NO_ROUTE_DESTINATION] 

Ingen rutt! Trots att rutten Àr korrekt angiven.

Svaret Àr faktiskt enkelt.

Samtalet kom in. ACL tillÀt det. Eftersom ACL Àr kopplad till profilen internal och denna profil befinner sig i kontexten offentlig, kontrollerar FreeSWITCH routing i den offentliga kontexten. Men i den offentliga kontexten finns det endast ingÄende routing, och systemet sÀger Àrligt att det inte finns nÄgra rutter i staden.

Det finns minst tvÄ alternativ i den uppkomna situationen.

  1. Koppla denna ACL inte till profilen, utan till det interna numret sjÀlv. Detta kan vara det mest rÀtta sÀttet att lösa det, eftersom ACL Àr bÀttre att binda sÄ nÀra pÄ Extension som möjligt för mer finjustering. D.v.s. man kan ange en specifik adress/nÀtverksadress för telefonen frÄn vilken den kan göra samtal. Nackdelen med detta alternativ Àr att man mÄste göra detta i varje Extension.
  2. Korrigera ACL sÄ att den fungerar korrekt pÄ profileringsnivÄ. Jag valde detta alternativ, eftersom det verkade enklare att lÀgga till nÀtet i ACL en gÄng snarare Àn att ange det i varje Extension. Men detta Àr specifikt för mitt syfte. För andra uppgifter kan det möjligtvis krÀvas en annan beslutslogik.

SÄ. Vi korrigerar ACL domains pÄ följande sÀtt:

domains standardÄtgÀrd: tillÄt

I ACL-listan domains anger vi nÀtverket:

deny 192.168.0.0/24

TillÀmpa, reloadacl.
Testa: slÄ Äter numret 98343379xxxx och
 det finns en koppling
 HALLO. Allt fungerar.
Vi tittar pÄ vad som hÀnde i FreeSWITCH:
samtalet inleds:

switch_channel.c:1104 New Channel sofia/internal/1010@domain.local

ACL tillÀt inte:

[DEBUG] sofia.c:10263 IP 192.168.0.150 Avvisad av acl "domains". ÅtergĂ„r till Digest autentisering.

och vidare:

mod_dialplan_xml.c:637 Bearbetar 1010 ->98343379xxxx i kontext domain.local
sofia/internal/1010@domain.local Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]d{6})$/ break=on-false 

Routing passerade, och vidare gÄr anslutningen, vilket gÄr bortom Àmnet.

Om vi Àndrar nÀtverksadressen i ACL, men fÄr samma resultat som vid första testet, d.v.s. ACL tillÄter samtalet och routing sÀger NO_ROUTE_DESTINATION.

Det Àr nog allt jag ville lÀgga till angÄende ACL FusionPBX.

Hoppas det hÀr Àr till nytta för nÄgon.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster