Premessa
Dopo aver avuto a che fare con Asterisk durante le mie ultime attività lavorative, ho deciso di creare un piccolo testbed casalingo, in modo da approfondire bene il funzionamento di tale applicativo, al netto di alcune customizzazioni e configurazioni ad hoc ereditate dal campo. Infatti, secondo la mia opinione, il modo più rapido per riuscire a padroneggiare una determinata tecnologia consiste nella realizzazione ex novo dell’infrastruttura che ne fa uso (ovviamente su scala ridotta), configurando manualmente i vari software coinvolti (in questo caso Asterisk ed i telefoni VOIP utilizzati come client).
Tra i diversi sip provider che ho passato al vaglio la scelta è ricaduta su cheapvoip Italia, sicuramente uno dei migliori in termini di costi/benefici. E’ sufficiente registrarsi, scegliere il numero geografico per la nostra linea e pagare i 6 € di credito telefonico iniziale (il quale potrà essere ulteriormente incrementato in un secondo momento). I 6 € si riferiscono al piano tariffario Standard.
Una volta attivato l’account ed il numero geografico possiamo procedere con la configurazione del nostro PBX open source.
Configurazione di Asterisk
Per configurare Asterisk occorre operare dapprima sul file /etc/asterisk/sip.conf, inserendo le informazioni relative alla registrazione verso il provider. Occorre notare, inoltre, che tale registrazione è mandatoria per le chiamate in ingresso (inbound), mentre per quelle in uscita (outbound) non è richiesta. In particolare, sarà necessario aggiungere la seguente direttiva:
register => 6554XXXXXX:password@sip.cheapnet.it/6554XXXXXX
all’interno della sezione [general] del suddetto file di configurazione. Tale direttiva ha il seguente formato:
voipusername:voippassword@sipproxy/extension
dove voipusername ed extension coincidono (corrispondono semplicemente al numero VOIP fornitoci dal sip provider).
A questo punto possiamo definire gli interni da utilizzare, ad esempio il 7001 ed il 7002:
[7001] type=friend host=dynamic context=from-sip callerid=Test1 <7001> secret=passaccount context=internal [7002] type=friend host=dynamic context=from-sip callerid=Test1 <7002> secret=passaccount context=internal
Bene, ora non ci resta che definire i parametri per le chiamate in ingresso ed in uscita:
[cheapvoip-inbound] type=peer username=6554XXXXXX@sip.cheapnet.it secret=<vostra voippassword> fromuser=6554XXXXXX fromdomain=sip.cheapnet.it host=sip.cheapnet.it outboundproxy=sip.cheapnet.it context=cheapvoip-in insecure=port,invite realm=sip.cheapnet.it nat=yes qualify=yes regseconds=60 disallow=all allow=alaw allow=ulaw allow=g729
[cheapvoip-outbound] type=peer callerid="Vostro identificativo testuale" <vostro numero geografico> username=6554XXXXXX@sip.cheapnet.it secret=pass fromuser=6554XXXXXX fromdomain=sip.cheapnet.it host=sip.cheapnet.it outboundproxy=sip.cheapnet.it context=cheapvoip-in insecure=port,invite realm=sip.cheapnet.it nat=yes qualify=yes regseconds=60 disallow=all allow=alaw allow=ulaw allow=g72
Ho deciso di separare le chiamate in ingresso da quelle in uscita poichè, in quest’ultimo caso, voglio sovrascrivere il caller id di default creando una stringa ad hoc da usare come identificativo.
Salviamo le modifiche apportate al suddetto file e passiamo alla configurazione di /etc/asterisk/extensions.conf, che dovrà essere simile alla seguente:
[internal] include => cheapvoip-in include => cheapvoip-out exten => 7001,1,Answer() exten => 7001,2,Dial(SIP/7001,60) exten => 7001,3,Hangup() exten => 7002,1,Answer() exten => 7002,2,Dial(SIP/7002,60) exten => 7002,3,Hangup() [cheapvoip-in] exten => 6554XXXXXX,1,Dial(SIP/7001&SIP/7002) [cheapvoip-out] exten => _X.,1,Dial(SIP/${EXTEN}@cheapvoip-outbound)
Nel contesto [internal] ho incluso le regole definite in [cheapvoip-out] e [cheapvoip-in]. Ho inoltre definito le actions per ciascun interno ed ho imposto la chiamata simultanea su entrambi in caso di telefonata proveniente dall’esterno:
Dial(SIP/7001&SIP/7002)
Infine, in caso di chiamata verso l’esterno, si dovrà procedere con l’inoltro della stessa verso il sip provider, sfruttando la configurazione definita in [cheapvoip-outbound] del file /etc/asterisk/sip.conf. Da notare che il pattern _X. rappresenta semplicemente una dialplan, dove _ indica il carattere che demarca l’inizio della stessa, X rappresenta tutti i digit da 0 a 9 e . indica una o più occorrenze di tali digit.
A configurazione ultimata sarà sufficiente ricaricare la configurazione di Asterisk mediante il comando:
[root@PBX ~]# service asterisk reload
Port forwarding
Per le chiamate in ingresso è necessario che il sip provider sia in grado di comunicare con il nostro PBX attraverso la porta 5060, protocollo UDP. Per fare ciò occorre consentire in ingresso tale tipologia di traffico sul nostro router (definendo anche le opportune regole di port forwarding). E’ bene restringere il filtro al solo IP sorgente 87.238.30.10 (sip.cheapnet.it).
Client
Il client che ho utilizzato è un softphone scaricabile gratuitamente da Internet, ovvero Zoiper.
Fine del post, alla prossima.