- Installazione e primi passi
- SIP settings
- Configurazione Trunk MessageNet
- Interno, Rotte in ingresso e Rotte in uscita
- Selezione Passante
- Deviazione pilotata dal PBX con mantenimento del numero chiamante
- NAT Traversal
FreePBX è un software PBX offerto da Sangoma e basa il core del proprio funzionamento su Asterisk, al quale aggiunge templating nella definizione dei servizi accessibili e configurabili tramite la propria interfaccia web, divenendo uno standard molto diffuso nel mondo della telefonia VoIP.
A partire dalla versione 21 di Asterisk è disponibile unicamente stack PJSIP e non viene più impiegato CHAN_SIP, pertanto questa guida aggiorna quanto già pubblicato nel nostro helpcenter (per FreePBX 13) andando a mostrare come procedere nella configurazione standard di una URI MessageNet.
FreePBX (https://www.freepbx.org/ ) è scaricabile gratuitamente ed installabile via ISO o tramite script a partire da un’installazione Debian/GNU. Vengono offerti da Sangoma espansioni, licenze applicative e moduli, nonché hosting, nel caso siano utili alla propria realtà.
In questo articolo esemplifichiamo la configurazione di una URI multinumero MessageNet (per selezione passante in ingresso ed uscita), l’impostazione di deviazione con mantenimento del numero chiamante ed alcune indicazioni alcune indicazioni in merito a problematiche relative alla NAT.
Installazione e primi passi
Non ci occuperemo in questa sede dei dettagli relativi all’installazione e configurazione iniziale, dando per inteso la competenza necessaria a procedere; sono, eventualmente, a disposizione guide dettagliate sul sito del produttore.
Ricordiamo, però, di porre particolare attenzione alla configurazione del firewall ed alla gestione della NAT assicurando una corretta comunicazione tra rete pubblica e rete privata per il protocollo SIP e le relative porte, andando parimenti a proteggere il sistema ed evitando intrusioni esterne: è importante non esporre l’apparato in DMZ ed assicurarsi che non sia raggiungibile a livello configurativo dall’esterno.
SIP settings
A valle dell’installazione e della configurazione del firewall, il consiglio è quello di iniziare verificando le configurazioni SIP ("SIP Settings"): si invita a visionare le seguenti impostazioni, garantendo sicurezza per la gestione delle chiamate ed allo stesso tempo definendo le modalità di funzionamento dell’autenticazione per come utile, se diverso da come presentato in questo documento. È importante definire le porte in ascolto per il protocollo SIP, in relazione ai trasporti scelti ed alle configurazioni di rete locali.
Configurazione Trunk MessageNet
Trunk - General
Il trunk rappresenta il nostro numero MessageNet ed è opportuno configurarlo indicando il callerID scelto come default, ma autorizzando tutti i "CID" come qui indicato al fine di poter gestire la selezione passante in uscita tramite "displayname" (configurato sull’interno – per questo consultare la sezione successiva).
Trunk – pjsip Settings - General
Questa configurazione è quella più importante per il funzionamento della linea: è importante indicare la URI come username e autenticazione, indicare il "context from-pstn-toheader" per poter gestire le rotte in ingresso basandosi sul numero geografico. Usiamo la porta 5060 che è valida anche per trasporto TCP, qualora richiesto per gestire eventuali problemi di NAT Traversal.
Trunk – pjsip Settings – Advanced
Questa sezione è altrettanto fondamentale e non può essere tralasciata in quanto è richiesto di indicare i campi "From User” e “From Domain” con URI e dominio MessageNet; verificare le ulteriori impostazioni come da immagine o adattarle ove richiesto alle proprie necessità.
Trunk – pjsip Settings – Codecs
L’immagine a seguire mostra l’ordinamento codec standard valido per l’offerta MessageNet. Si tenga conto che il codec g729 è sottoposto a licenza e potrebbe dover essere installato manualmente a parte; non è necessario il suo utilizzo, quindi, rimuoverlo completamente disabilitandolo dalla lista e mantenendo il medesimo ordine per i restanti codec.
Interno, Rotte in entrata e Rotte in uscita
Al fine di ultimare l’esempio procediamo alla configurazione di un estensione interna dimostrativa e del relativo utente: non approfondiremo questo aspetto, richiamandolo unicamente nelle sezioni successive per quanto concerne la selezione passante.
Mostriamo però con degli screenshot la configurazione delle "Rotte in entrata" (Inbound Routes) e delle "Rotte in Uscita" (Outbound Routes) sottolineando che proprio in relazione al context di registrazione indicato nel trunk, indicheremo il formato del numero da riconoscere in ingresso, qualora necessario, in formato nazionale come da specifica MessageNet.
Selezione Passante
Per approfondire consultare l'articolo "Un solo Account VoIP con più numeri geografici" presente nel nostro help center.
Selezione Passante in uscita
In questo esempio ci basiamo sulla modalità di selezione del CLI tramite displayname/header from. Questa modalità va abilitata specificamente tramite richiesta di assistenza oppure tramite il portale Partner (se si è rivenditori di servizi voce).
Imponiamo all’interno l’ID in uscita nel formato descritto, indicando il numero geografico in formato internazionale tra virgolette doppie (display part) e parentesi uncinate per l’URI indicato dopo (user part).
Selezione Passante in ingresso
È sufficiente definire regole specifiche per i DID in ingresso basandosi sul numero geografico in formato nazionale: questo è possibile avendo applicato lo specifico context di registrazione al trunk, come definito in precedenza.
Deviazione pilotata dal PBX con mantenimento del numero chiamante
FreePBX è basato sul core di Asterisk, quindi possiamo applicare senza troppo sforzo le medesime regole anche in questo caso:
- andremo ad aggiungere alle opzioni del trunk un override delle opzioni della Dial in modo tale da definire un hook (con la sintassi “b()”) dove andremo a richiamare uno specifico context custom, che andiamo a definire tramite Destinazione Personalizzata (Custom Destination);
- sarà necessario definire quindi la Custom Destination una Custom Extension tramite il file di configurazione indicando di applicare all’header necessario il valore passatogli come estensione;
Sostanzialmente: in fase di call-out verrà applicata la procedura definita e quindi l’header richiesto verrà letto dal leg di chiamata entrante e riapplicato al leg uscente, garantendo screening del numero chiamante ed autorizzandone l’impiego.
E' possibile approfondire l'argomento consultando l'articolo "Deviazione di Chiamata tramite apparato esterno" presente nel nostro help center.
NAT Traversal
In generale, non è mai necessario configurare DMZ o port-forwarding statici (che si baserebbero per altro su situazioni di NAT della porta simmetriche o predicibili, e non sempre è così): si consiglia pertanto di mantenere dietro NAT il PBX demandando alle funzionalità di NATP dinamico dell’apparato di rete la definizione delle sessioni necessarie alla comunicazione.
Per mantenere funzionale questa configurazione, è utile tenere in considerazione che a seconda del trasporto scelto, dall’intervallo di ri-registrazione al servizio o al keep-alive impostato, derivano caratteristiche della NAT diverse (tipicamente su TCP avremo masquerading della porta) o conseguenze operative (chiusura della sessione anzitempo) che devono essere tenute in considerazione ed ottimizzate.
In caso di problemi nella registrazione al servizio o nella gestione della comunicazione SIP, è opportuno verificare se l’impiego di TCP quale trasporto possa risolvere tali problematiche (tipicamente legate alla sessione NAT o alla frammentazione IP).
Nel momento in cui il problema si presenta come indisponibilità randomica, senza errori nella registrazione al servizio, la comunicazione avviene correttamente, ma la sessione NAT dura troppo poco: nei nostri template abbiamo sempre indicato un lease di registrazione basso (300 secondi) con keep-alive attivo. Si può ottimizzare riducendo questi valore o incrementando la durata della sessione NAT sul router.
Per il trasporto TCP, sarà necessario definire un transport ed impiegarlo sia per la registrazione al trunk che per l’endpoint chiamante.
E' possibile approfondire l'argomento consultando l'articolo "NAT Traversal" presente nel nostro help center