FusionPBX e ACL

O meu artigo non é unha descrición completa do produto, senón só un lixeiro refinamento da boa publicación "FusionPBX, ou, de novo, xenial, FreeSWITCH". Paréceme que o tema da ACL en FusionPBX non está moi ben divulgado nel. Tentarei cubrir este oco baseándome na miña propia experiencia con FreeSWITCH/FusionPBX.

E así, temos instalado un FusionPBX cun número interno rexistrado 1010 no dominio domain.local e unha ruta configurada para chamadas externas á cidade. Usamos ACL para protexer o noso sistema de telefonía de chamadas non autorizadas que nos quitarán cartos. Eses. só desde as redes descritas na ACL permiten chamadas saíntes. E aquí precisa unha comprensión completamente clara de como funciona ACL en FusionPBX, as súas características, a lóxica e o seu punto de ancoraxe.

Do mesmo xeito que o respectado autor do artigo anterior, tamén pisei todos os anciños relacionados con ACL.

Vou comezar con SipProfiles.
Ambos os perfís (chamareilles así), tanto internos como externos, están no contexto Público, e isto non é casual. O rexistro de números realízase no perfil interno, e prestarémoslle atención. No perfil interno, os dominios ACL están ligados como apply-inbound-acl. É esta liña a responsable do funcionamento da ACL a nivel de perfil. Ata agora, iso é todo cos perfís.

Contexto

O contexto utilízase, entre outras cousas, no enrutamento de chamadas. Todas as rutas de entrada están vinculadas ao contexto público.

As rutas de saída (para a cidade, para móbiles, de longa distancia, internacionais e calquera outra) están (por defecto) no contexto dun nome de dominio (chamémoslle dominio.local).

ACL

Agora imos tratar coas ACL. Por defecto, un FusionPBX recentemente instalado ten dúas ACL:

acción predeterminada de dominios: denegar: esta folla está ligada ao perfil interno
acción predeterminada lan: permitir

Na lista de dominios ACL, prescribimos a rede (ben, por exemplo, 192.168.0.0/24), facemos o permiso de permiso para esta rede, usamos reloadacl.

A continuación, rexistramos un teléfono desta rede, e todo parece estar ben e segundo as instrucións e loxicamente.
Comezamos a probar, chamamos a un número externo e... sácanos unha rosquilla, ou mellor dito, unha rosquilla. De súpeto!

Comezamos a analizar o log na consola ou a través do Log Viewer FusioPBX.

Vemos o noso reto:

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

Vemos a ACL que funcionou:

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

E máis:

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] 

Sen ruta! Aínda que a ruta temos rexistrada sinceramente.

A resposta é realmente sinxela.

Chegou a chamada. ACL perdeuno. E dado que a ACL está vinculada ao perfil interno e este perfil está no contexto público, FreeSWITCH mira honestamente o enrutamento no contexto público. Pero no contexto público, só as rutas de entrada, e o sistema sinceramente dinos que alí non hai rutas para a cidade.

Hai polo menos dúas formas de saír desta situación.

  1. Achegue esta ACL non ao perfil, senón ao propio número interno. Esta pode ser a forma máis correcta de resolver, porque. É mellor vincular ACL o máis preto posible de Extensión para un axuste máis fino. Eses. pode prescribir un enderezo específico/enderezo de rede do teléfono desde o que pode facer unha chamada saínte. A desvantaxe desta opción é que cada Extensión terá que facelo.
  2. Corrixe a ACL para que funcione correctamente a nivel de perfil. Escollín esta opción, porque me pareceu máis doado engadir a rede á ACL unha vez que prescribila en cada Extensión. Pero isto é específicamente para a miña tarefa. Para outras tarefas, pode necesitar unha lóxica de toma de decisións diferente.

Entón. Imos corrixir os dominios ACL do seguinte xeito:

acción predeterminada de dominios: permitir

Na lista de dominios ACL, rexistramos a rede:

denegar 192.168.0.0/24

Aplicar, recargar.
Estamos probando: marcamos de novo o número 98343379xxxx e... chega o posto de control... OLA. Todo está funcionando.
Vexamos que pasou en FreeSWITCH:
comeza a chamada:

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

ACL non faltou:

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

e ademais:

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 

O enrutamento pasou, e despois vén o establecemento da conexión, que está fóra do ámbito do tema.

Se cambiamos o enderezo de rede na ACL, pero obtemos a imaxe da primeira proba, é dicir. A ACL saltará a chamada e o enrutamento dirá NO_ROUTE_DESTINATION.

Probablemente iso é todo o que quería engadir a ACL FusionPBX.

Espero que lle sexa útil a alguén.

Fonte: www.habr.com

Engadir un comentario