Comments
Description
Transcript
Interfacciare Asterisk ed Alice Voce
Interfacciare Asterisk ed Alice Voce Introduzione Seguendo questo tutorial è possibile configurare Asterisk per ricevere ed inviare chiamate tramite Asterisk, su Linux, verso e da una linea Alice Voce. Prerequisiti 1. Scheda di rete aggiuntiva 2. Python 2.x 3. I sorgenti di Asterisk, per ricompilarlo Come fare Installazione della scheda di rete Dovrete collegare il vostro server Asterisk al router Alice Voce con una scheda ed un indirizzo IP riservati esclusivamente al VoIP. Il router Alice Gate, apparentemente, una volta attivato il servizio Alice Voce gestisce non una, ma due connessioni diverse, forse su VC/VP (virtual channel/virtual path) diversi, e certamente con indirizzi IP diversi. Quale delle due connessioni sia impiegata per un certo IP della rete interna lo stabilisce l’associazione ad un dato numero Alice Voce, e questa associazione non è fatta a livello di indirizzo IP, ma a livello di MAC address -- l’indirizzo fisico della scheda di rete. Pertanto, se vorrete usare una scheda sola dovrete rinunciare alla connettività verso Internet tramite Alice Gate. (Se avete un altro router con un altro collegamento, e desiderate utilizzare quello, non è un problema). Nota È possibile che si riesca ad evitare di utilizzare due schede di rete utilizzando il pacchetto ebtables, ma non ho compiuto esperimenti. Una strada percorribile sarebbe: creare una interfaccia di rete dummy0 con il proprio indirizzo IP sulla rete locale ed il proprio MAC address autonomo, e configurare il brouting, MAC SNAT e MAC DNAT come in questo esempio. Nel seguito, supporremo che la vostra scheda di rete per il VoIP si chiami eth1. Patch e ricompilazione di Asterisk Scompattare i sorgenti di Asterisk e portarsi nella loro directory. Applicare la patch fornita con: patch -p0 < /percorso/sip-alice.diff 1 Procedere poi alla ricompilazione ed installazione come indicato nella documentazione di Asterisk. Nota La patch fornita è relativa alla versione 1.4.17 di Asterisk. È probabile che funzioni anche con altre versioni, ma non è garantito; in questo caso può essere necessaria qualche piccola modifica. Installazione del software Scompattate il software ed installatelo con il classico comando: # python setup.py install File di configurazione Il software fornito fa essenzialmente due cose: 1. dialoga con il router per attivare e disattivare le numerazioni VoIP; 2. crea automaticamente i files di configurazione per Asterisk. Copiate i files di configurazione pivelli.ini e *_template.conf nella directory /etc/pivelli. Modificate il file pivelli.ini secondo i commenti al suo interno. Ricordatevi di impostare almeno l’interfaccia di rete con l’opzione bind_iface, ad es. bind_iface=eth1. Indicare i numeri VoIP è facoltativo. Se volete gli automatismi all’attivazione delle numerazioni VoIP, cioè la scrittura dei files di configurazione di Asterisk e l’impostazione delle route, attivate le opzioni relative. Test del software Il comando alice-client.py va eseguito sempre come utente root, altrimenti non può scegliere l’interfaccia di rete giusta quando comunica con il router. Eseguite il comando: # alice-client.py --status Comparirà una lista delle numerazioni VoIP disponibili, ed un valore True o False che indica se sono disponibili per la registrazione oppure no. Eseguite il comando: # alice-client.py --enable-all --verbose Comparirà un’elenco delle numerazioni abilitate ed il relativo proxy in uscita. Ricordatevi di modificare il file degli hosts /etc/hosts, e di aggiungere la riga: 80.11.22.33 wifi.apt.telecomitalia.it dove 80.11.22.33 è l’indirizzo IP del proxy come comunicato dal comando. A questo punto, il gioco dovrebbe essere fatto! 2 Appendice tecnica Architettura Qualche ricerca su Internet suggerisce che il sistema Alice Voce funzioni in questo modo: il router Alice Gate crea due connessioni parallele (più, eventualmente, altre per la telegestione o altre funzionalità) verso l’operatore. Si presume che questo serva a isolare la rete IP su cui lavorano gli apparati di centrale da Internet e ad allocare efficacemente la banda destinata alle comunicazioni VoIP. Ciascun nodo della rete interna può comunicare soltanto con una delle due connessioni, e non entrambe. Per default, un nodo della rete interna comunica con Internet. Quando desidera comunicare con la rete destinata al VoIP, deve usare le API messe a disposizione dal router agli indirizzi web: http://router-ip/aptconfig.xml?WINDWEB_URL=%2Fdoc2%2Faskcli per ottenere un elenco XML delle numerazioni disponibili e del loro stato; http://router-ip/aptconfig.xml?WINDWEB_URL=%2Fdoc2%2Fsetcli&CLI=0212345678 per associarsi ad una numerazione; http://router-ip/aptconfig.xml?WINDWEB_URL=%2Fdoc2%2Fdelallcli per disassociarsi da Alice Voce. Questo è anche il motivo per cui una macchina su cui gira Il Telefono di Alice non è in grado di navigare. Con chi parliamo? Un esame dei messaggi SIP scambiati riporta: Server: SHS/rel-3_7_3m StarSIP/rel-2_7_3y durante la fase di registrazione, e: Server: SSW/0.0.0 alla terminazione di alcune richieste. Corrispondono all’architettura su switch di Classe 5 Italtel descritta in numerosi documenti (esempi: 1, 2, 3, 4). Patch di Asterisk Usando Asterisk senza patch, la registrazione al proxy SIP appare impossibile per un misterioso UDB Internal Error 1. Pare che in qualche punto la comunicazione tra SHS, StarSIP (le parti che gestiscono i messaggi SIP) e UDB (il DB universale con i dati degli utenti) si interrompa quando si usa un Call-ID troppo lungo nel messaggio SIP. Asterisk li genera utilizzando 32 caratteri random seguiti da ’@’ e l’identificativo dello host locale; RFC 3261 non riporta esplicitamente limitazioni sulla lunghezza né nella sezione 8.1.1.4 né nella sezione 20.8. Ad ogni modo, limitando i caratteri ad 8, diventa possibile registrarsi correttamente. 3