Guida ad Asterisk sul Fritz!box

Da Vocesuip.

Trattasi di bozza da completare o implementare

Indice

Premessa

Questa guida descrive, come l'Asterisk installato sul Fritz!box possa convivere insieme al Fritz!box aumentando le caratteristiche di un apparecchiatura già di per se evoluta, e inoltre di avere in un solo prodotto le funzionalità sia di asterisk che del fritz!box in una sola apparecchiatura.

L'installazione funziona con il 7050 (Kernel 2.4 e 2.6) e 7170. E' stato segnalato il funzionamento anche sul 7140 e 7141 e, probabilmente, funzionerà anche su altri modelli. Si rammenta che se utilizzato su modelli differenti al 7050 e 7170 si DOVRA' NECESSARIAMENTE apportare delle modifiche al file capi.conf (se ne discuterà dopo) dovute al fatto che cambiano le interfacce CAPI interne (mancanza del BUS interno ISDN (S0) o numero differente di porte analogiche (Fon1-X).

Responsabilità

Queste istruzioni sono distribuite senza alcuna garanzia (neppure con la garanzia implicita di idoneità).

IMPORTANTE: Le modifiche invalidano la garanzia, e bisogna annullarle per poter richiedere assistenza o supporto sul prodotto. Non si assume alcuna responsabilità implicita o esplicita per i danni di alcun genere, che ne potrebbero derivare da questa modifica.

Glossario

Brevemente e per comodità di lettura per i neofiti v'è da specificare che:

  • Access Point dispositivo che permette all'utente mobile di collegarsi ad una rete wireless. L'access point, collegato fisicamente ad una rete cablata (oppure via radio ad un altro access point), riceve ed invia un segnale radio all'utente, permettendo così la connessione.
  • Asterisk (vedi anche dopo) software open sorce utilizzato come gateway e proxy per la telefonia. Gestisce i canali Sip, Iax2 e, dove "istruito" anche canali ISDN, PSTN ovvero la telefonia "tradizionale"
  • ATA (Analogic Telephon Adapter) è un dispositivo usato per collegare uno o più telefoni analogici standard in modo da usarli attraverso altri sistemi come ad esempio il trasporto della voce su IP (VoIP).
  • CAPI (Common isdn Application Programming Interface) è una interfaccia di programmazione "standard" delle periferiche ISDN, ci verrà utile poi.
  • chmod (change mode) è un comando della shell negli ambienti di tipo UNIX, che serve a cambiare le opzioni ai file (lettura/scrittura/esecuzione).
  • client si indica una componente che accede ai servizi di un server. Si può parlare di client riferendosi sia all'hardware che al software.
  • Flash o memoria flash o memory flash è una memoria permanente riscrivibile dove è possibile scrivere dati mantenendoli anche in assenza di alimentazione.
  • Ftp (File Trasfer Protocoll) è un protocollo per il trasferimento di file tra due computer, per esempio, tra un PC ed un server web.
  • gateway (dall'inglese, portone, passaggio) è un dispositivo di rete che veicola i pacchetti di rete all'esterno della rete locale (LAN).
  • IAX (Internet Asterisk Exchange) protocollo utilizzato da Asterisk per veicolare il flusso voce, alternativo e (per certi versi) migliore al SIP, ma utilizzato solo su centralini Asterisk. Si parlerà in futuro di IAX2, ovvero il secondo sviluppo di tale protocollo.
  • ISDN (Integrated Services Digital Network) è utilizzato per la telefonia "digitale", ovvero la telefonata non arrivà alle centrali telefoniche in analogico, sotto forma di frequenza, ma viene "trasformata" in digitale dalla borchia sita in casa nostra/nel nostro ufficio (chiamate borchia NT1 o NT1 plus, per maggiori info vedi [qui].
  • kernel costituisce il nucleo di un sistema operativo. Si tratta di un software avente il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware.
  • MSN (multiple subscriber number) o servizio multinumero, è uno dei servizi offerti dalla rete ISDN. permette di associare ad un unico accesso ISDN diversi numeri telefonici, in modo da associare ogni numero telefonico ad un diverso terminale connesso all’ISDN. Si possono assegnare fino ad 8 numeri telefonici su un unico accesso, di cui uno verrà chiamato "numero principale".
  • ne3c (n)e3(c) è un sistema di editazione testi molto piccolo che sotto licenza GPL. Ha un formato di codice di più meno di 10 Kilobytes, più evoluto rispetto a NVI. Completamente scritto in linguaggio Assembler, ma disponibile in linguaggio C.
  • NVI (new vi)) è un editor di testo distribuito con BSD o nei sistemi Unix.
  • PBX (Private Branch eXchange) è una centrale telefonica per uso privato. È principalmente usato nelle aziende per fornire una rete telefonica interna.
  • PSTN (Public Switched Telephone Network), ma non è altro che la normale telefonia domestica, analogica.
  • router (instradatore) dispositivo di rete che si occupa di instradare pacchetti tra reti diverse ed eterogenee.
  • script il termine sta ad indicare un tipo particolare di programma scritto con un linguaggio di programmazione interpretato (cioè che non viene compilato) destinato in genere a compiti di automazione.
  • Server è una componente che fornisce servizi ad altri componenti (tipicamente chiamate client) attraverso una rete.
  • SIP (Session Initialization Protocol) è una tecnologia standard per l'uso del VOIP
  • Telnet è un'applicazione standard che è disponibile nella maggior parte di computer indipendentemente dal sistema operativo. In pratica consente di realizzare un collegamento remoto con un altra apparecchiatura colloquiare con essa.
  • USB Host (Universal Serial Bus Host) USB è un'interfaccia standard che permette al computer di comunicare con diverse periferiche normalmente detto protocollo di comunicazione, Host sta ad indicare che svolge la funzione di controllore come il nostro computer dove colleghiamo le nostre periferiche che vengono chiamate "USB Client".
  • VOIP (Voice Over Internet Protocol), ovvero trasmissione di voce tramite IP. Ci sono diverse tecnologie che fanno uso del Voip ma in questa sede tratteremo SOLO degli standard di mercato ovvero della tecnologia SIP e IAX.
  • wget è un software per scaricare i file da Internet, parte del progetto GNU. Supporta i protocolli HTTP, HTTPS e FTP.
  • WLAN (wireless local area network) termine inglese che indica una rete locale senza fili che sfrutta la tecnologia wireless.

Che cosa è il Fritz!Box ?

Il Fritz!Box è un Box multifunzione votato alla connettività.

Le sue funzioni principali sono (a seconda dei modelli):

1) Modem ADSL in Annex A (modelli internazionali), Annex B (Modelli tedeschi);

2) Router (se il modello ha perlomeno oltre alla USB anche 1 porta Ethernet);

3) Access Point WiFi (se WLAN, quelli dotati di antenna);

4) ATA (Adattatore telefonico per il VOIP);

5) Centralino telefonico (interconnessione tra gli ingressi PSTN/ISDN/VOIP ed i derivati FON1-x (porte analogiche per telefoni tradizionali) e Bus S0 (TE ISDN, ovvero centralini ISDN, Telefoni ISDN o semplici Schede ISDN)

Che cosa è Asterisk?

Asterisk è una completa soluzione PBX in software. Funziona in ambiente GNU/Linux, BSD e MacOSX e fornisce tutte le funzionalità che possono essere richieste a un sistema PBX e qualcosa di più. Asterisk supporta il “voice over ip” con molti protocolli, e può interagire con praticamente tutti i dispositivi telefonici basati su standard, utilizzando hardware relativamente poco costoso. E' importante ricordare che Asterisk non è un Sistema Telefonico Pronto, ovvero va configurato per poterlo fare girare.

Asterisk+Fritz!Box -> AsterFritz

Tutte le "features" del Fritz!Box NON CONTEMPLANO la possibilità di collegare al Fritz!Box una device SIP o IAX2 (vedi un SoftPhone, un Telefono IP od un ulteriore ATA).. Ed è a causa di questa "mancanza" (grave per NOI di Vocesuip) e grazie ad una segnalazione dell'utente Emblema, che si è iniziato il viaggio verso l'integrazione di Asterisk sul Fritz!Box, ribattezzato AsterFritz...

La finale applicazione di AsterFritz permetterà:

a) l'utilizzo delle nuove funzionalità di Asterisk sul Fritz;

b) la "remotizzazione" degli interni... Sarete capaci di dialogare con TUTTI I TELEFONI (Fon1-x/S0/SIP/IAX2) collegati all'AsterFritz anche se fuori sede...

c) la "virtualizzazione" delle linee esterne... Diretta conseguenza del punto precedente.. Ovvero potrete intercettare una chiamata proveniente da PSTN/ISDN (ovvero dal cavo fisico collegato all'AsterFritz) e rispondere da un luogo situato altrove...

d) utilizzo del Fritz!Box come "gateway" a basso costo per un altro sistema di telefonia Voip (anche virtualizzato), diretta conseguenza di b) e c)

e) ..

Operazioni preliminari

was Requisiti pre-installazione ("ferri del mestiere")

Prima di iniziare le modifiche abbiamo bisogno, per mera comodità, di alcuni tools..

- Un client telnet (integrato su tutti i sistemi operativi..) Una alternativa su Windows può essere Putty che è un client che permette di connettersi ad una terminale Unix sfruttando i protocolli SSH, Telnet o rlogin.

- Un editor di testo che possa gestire anche il testo "Linux style" (ovvero con fine linea marcato con LF e non LF+CR). Già abbiamo parlato di NVI, potente ma complicato, di ne3c, da installare sul Fritz!Box o su un sistema Linux, oppure su Windows usare EditPadLite

- Uno spazio da dove far scaricare al Fritz!Box i files di installazione. Questo punto è complesso e necessita di un piccolo approfondimento (vedi sotto). Nel frattempo, se non avete a disposizione uno spazio WEB o FTP su Internet, un NAS raggiungibile dal Fritz!Box con procollo HTTP o FTP, potreste pensare di installare sul Vs. computer Windows un mini server HTTP od un Server FTP.

Telnet sul Fritz!Box

Prima di passare alla configurazione, come molti sapranno, è necessario attivare il telnet sul Fritz!Box. Ciò è abbastanza semplice, basta collegare un telefono alle uscite FON e digitare il codice #96*7*. (#96*8* per disattivarlo).

Per avviare il telnet sotto Windows basterà cliccare su Start e successivamente cliccare su Esegui, digitando:

telnet 192.168.178.1

Se necessario, si dovrà inserire la password d'accesso che corrisponde a quella impostata nel Fritz!box.

Installazione di Asterisk

I comandi sotto elencati andranno dati attraverso telnet:

(per l'installazione nella memoria del Fritz!box, valida per i modelli senza porta USB Host)

CD /var
wget http://spblinux.de/fbox/cfg_asterisk
chmod 755 cfg_asterisk
./cfg_asterisk install 

(per l'installazione in un Hard Disk o Pen Drive collegato al Fritz!box, valida per i modelli con porta USB Host)

./cfg_asterisk usb_install

Configurazione di Asterisk

I file di configurazione di asterisk sono sotto la cartella:

/var/tmp/asterisk

e possono essere visti o modificati tramite il comando nvi.

per esempio

nvi /var/tmp/asterisk/extensions.conf

I file possono essere memorizzati con:

./cfg_asterisk config2flash

nella memoria flash.

Per modificarli nuovamente o tornare indietro, basta eseguire:

./cfg_asterisk flash2config.

Questo è importante poichè quando il Fritz!box viene riavviato essendo i file nella memoria flash, questi verranno cancellati e bisognerà rinstallare l'Asterisk.

NOTA: La porta SIP dell'Asterisk deve essere preferibilmente la 5061, essendo la porta 5060 già impegnata dal Fritz!Box.

Editare un file attraverso un editor linux anzichè con nvi.

Per editare un file per esempio il file debug.cfg, suggerisce redoctober71:

che bisogna prima riempire il file con una stringa, in questo caso:

> echo "prova" > /var/flash/debug.cfg 

poi caricare l'editor ne3c

> cd /var 
> wget http://spblinux.de/fbox/ne3c 
> chmod +x ne3c 
> ./ne3c flash/debug.cfg 

infine, salvare con CTRL-K Q e rispondere con Y alla domanda se si vuol salvare o meno.

Come rendere permanente Asterisk nel Fritz!box

Ciò non sembra essere possibile a causa della quantità e del tipo di memoria del Fritz!box, ma possiamo trasferire l'Asterisk sul Fritz!box attraverso uno script che al riavviamento del Fritz!box installa e configura l'asterisk sulla memoria flash.

Quindi registramo nel file:

/var/flash/debug.cfg

il seguente script:

wait_seconds=10
CD /var
while! wget http://spblinux.de/fbox/cfg_asterisk; DO
sleep $wait_seconds
done
chmod +x cfg_asterisk
./cfg_asterisk install
while! [- x asterisk/is/asterisk]; DO
./cfg_asterisk remove
sleep $wait_seconds
./cfg_asterisk install
done
./cfg_asterisk flash2config quiet
./cfg_asterisk start

Questo script carica i file per l'installazione. Il tentativo verrà ripetuto ogni 10 secondi.

Così che l'asterisk è installato automaticamente e configurato nella memoria flash.

Asterisk permanente nel Fritz!Box, variante su USB

Poiché l'asterisk nella Flash ha bisogno di parecchio spazio, diventa più facile utilizzarlo attraverso un Hard disk o pen drive collegato alla porta USB del Fritz!Box. Per chi è in possesso di un Fritz!box 7170, l'istallazione dell'asterisk può essere effettuata anche su una pen drive USB.

(vedi sopra: ./cfg_asterisk usb_install).

Per installare questa versione anche automaticamente, nel file sotto indicato:

/var/flash/debug.cfg 

bisogna scrivere i seguenti comandi:

let i=0
while! [- f /var/media/ftp/USB-Partition-0-1/addons/cfg_asterisk]; DO
sleep 10
let i +=1
[$i - lt 18] && continue
echo “NONE asterisk”
BREAK
done
CD /var/media/ftp/USB-Partition-0-1/addons
./cfg_mc usb_install
./cfg_asterisk usb_install
./cfg_asterisk start

Questo script installa ed avvia l'asterisk sul drive USB.

Probabilmente il nome “USB-Partition-0-1„ può cambiare poichè dipendente dal ftp server del fritz!box, quindi è meglio accertarsi prima come viene chiamato il nostro Hard-Disk o Pen Drive.

Avviamento e arresto del programma Asterisk.

Con


./cfg_asterisk start

si avvia Asterisk.

e da ricordare che nel caso del primo avviamento di asterisk il comando va seguito dal numero di telefono della porta di entrata (cioè il vostro numero di telefono, registrato come MSN), ovvero:

./cfg_asterisk start 081xxxxxx 

sostituire a 081xxxxxx il vostro numero.

Redoctober71 aggiunge in uno dei suoi tanti post che è possibile avviare l'Asterisk in modalità console:

./cfg_asterisk start c 

per uscirne basta digitare da CLI>stop now.

mentre con per arrestare il programma basta digitare:

./cfg_asterisk stop

e si arresta il programma.

E' importante memorizzare la configurazione nella memoria flash con

./cfg_asterisk config2flash.

Asterisk e Fritz!Box

Il Funzionamento dell'Asterisk sul Fritz!box è, se si vuole, indipendente da esso.

Infatti il funzionamento interno del FritzBox è basato sulle chiamate agli MSN, ovvero ad i numeri identificativi delle varie linee... (todo Asterfritz & CAPI, howto) Se, però, vogliamo far interagire Asterfritz con gli MSN, basterà far in modo che Asterisk intercetti gli MSN chiamati e che il Fritz non ne tenga conto.

Le comunicazioni interne sono possibili, poiché l'Asterisk sente inoltre il Bus S0 interno. Tuttavia occorre aprire delle porte per effettuare un collegamento SIP. il Fritz!Box deve fornire dei collegamenti all'Asterisk in uscita, attraverso alcune porte ed assegnarli a dei numeri telefonici.

per esempio andando su numeri Voip sul fritz!box:

 Attivo     Numero Voip          Provvider              Seleziona
 x             41             192.168.82.254:5061         *121#
 x             43             192.168.82.254:5061         *122#
 x             51             192.168.82.254:5061         *123#
 x             52             192.168.82.254:5061         *124#
 x             53             192.168.82.254:5061         *125#

Successivamente bisogna associare i numeri Voip alle porte FON oppure alla porta S0-ISDN. Seguendo l'esempio, configuriamo i numeri 41 per la FON1 e il 43 per la FON3, mentre la serie 5x per le porte S0-ISDN.

Nell'asterisk bisogna configurare i numeri telefonici nel file:

sip.conf

per esempio nel numero 43 (preso dalla lista di sopra):

[43]
context=from_fritzbox
callerid="Fritzbox" <43>
host=dynamic
domain=192.168.178.1
type=friend
user=43
secret=password
disallow=all
allow=gsm
allow=ulaw
allow=alaw

Con questo esempio il numero 43 risulta come numero interno utilizzando la porta analogica 1.

Quindi occorre configurare il file extensions.conf.

I numeri 5x sono solo un esempio, per collegare anche i telefoni ISDN sull'asterisk,. comunque riconosciuti dall'asterisk, poiché rilevati dal Bus S0, ma ho avuto difficoltà nell'associare sia in entrata che in uscita gli MSN dei telefoni ISDN con le porte interne, probabile che vi sia una gestione separata che dovrebbe essere scoperta per far si che funzioni correttamente sia in ingresso che in uscita.

Sicurezza del PC

I file possono essere modificati sul Fritz!box dal pc con TFTP oppure può essere integrato nel Fritz!box attraverso il programma DS-Mod. Se viene utilizzata la porta USB Host, l'l ftp server risulta già integrato nel Fritz!box e quindi può essere utilizzato, senza quindi registrare il file ext.MSN nei telefoni.

Vantaggi sull'istallazione dell'Asterisk.

Per l'Asterisk vi è molta documentazione su internet, bisogna cercare quindi maggiori informazioni sul funzionamento e sulle possibilità offerte. Fino adesso, l'istallazione dell'asterisk sul Fritz!Box offre i seguenti vantaggi:

-I telefoni con protocollo SIP chiamano direttamente sul Fritz! Box; -Possibilità di tunnel IAX sui Fritz!Box, ad esempio per chiamare tra interni in altri luoghi, vedi liberailvoip. - Possibilità di implementare una segreteria telefonica. - Basso costo di routing, di distribuzione di autorizzazione, ecc….

Ringraziamenti e collaborazioni

Tutto questo grazie a:

- in modo diretto: [Tokka], [redoctober71] (si spera di annoverarne molti, oltre a loro).

- in modo indiretto: [Jonas Jürging]

- [Le WIKI tedesche]

- [gli innumerevoli sviluppatori tedeschi]

- [i pazienti scrittori delle wiki di ip-phone]

- [il sito di Asterisk per Linux,]

- [il sito di Asterisk per Windows]

- [Le WIKI di (n) VI]

- Non dimenticando che l'idea di partenza è stata di Tokka con la attiva collaborazione di [emblema] e successivamente di redoctober71.

Note

Questa piccola guida è stata fatta per spronare lo sviluppo dell'Asterisk sul Fritz!box e come inizio di una sperimentazione maggiore su questa possibile integrazione, avendo limitate conoscenze del prodotto Asterisk, la mia non è una esaustiva guida, ma come descritto sopra una piccola bozza, che aspetta di essere implementata e integrata.

Strumenti personali