Libro su FreeSWITCH in italiano

17/02/2015 8 commenti

Più volte, in questo blog, ho esaltato le potenzialità di FreeSWITCH. Eppure questo magnifico software stenta a guadagnare terreno sul suolo italico. Allora ho preso il coraggio a due mani e mi sono messo a scrivere. Ne sono uscite 150 pagine circa dense di idee, nozioni e spiegazioni. L’ho detto ad Anthony e al suo gruppo, come a chiedere la loro benedizione. Non solo mi hanno incoraggiato, ma mi hanno messo in contatto con un revisore eccezionale. Si tratta di Giovanni Maruzzelli, italiano come noi e autore di diversi moduli per FS. Ne è nato un lavoro modesto nei modi ma denso nei contenuti, capace di introdurre anche il voippista più acerbo alle magie di questo softswitch d’avanguardia.

CopertinaLight

 Il libro è questo. Lo trovate su Amazon, Feltrinelli, IBS, Hoepli e anche in molte librerie fuori da internet. Se lo leggete sono contento, soprattutto perché avrò così contribuito al progetto FreeSWITCH! Se lo fate, mi piacerebbe avere i vostri commenti. Saluti!!!

Annunci
Categorie:Voip:Freeswitch

Fastidiose chiamate VoIP notturne: chi è?

Molti clienti si lamentano del fatto che spesso ricevono chiamate, anche di notte, sui loro apparati VoIP, con numero chiamante assurdo. A volte sono anonime, a volte il numero è esageratamente lungo, a volte è troppo corto (es. 100), a volte si riceve solo un indirizzo IP. Chi risponde o non sente niente, o il fischio di fax o messaggi incomprensibili.

Più o meno la domanda che mi giunge è sempre la stessa: “Ma chi è? Chi osa disturbare il mio sonno? Voi gestori delle centrali VoIP dovete assolutamente dirmelo!

Per rispondere alla domanda dobbiamo fare un passo indietro e parlare del protocollo SIP, il più usato ormai negli apparati VoIP. Il SIP è un protocollo peer-to-peer, punto-punto. Teoricamente non ho bisogno di nessuna centrale per fare telefonate in SIP. Due telefoni SIP possono parlare tra loro semplicemente indicando ad uno dei due l’indirizzo IP e la porta d’ascolto dell’altro. Questa peculiarità del protocollo è sfruttata da manigoldi diffusi per tutto il globo per infastidire i poveri utenti. Come ricevete email pubblicitarie che non avevate chiesto, così ricevete telefonate che non avevate chiesto. In questo caso si parla di SPITTING (Spam over Internet Telephony).

Ma lo scopo qual’è: sono scherzi per svegliarmi, tipo i ragazzini che suonano i campanelli? No. Chi vi manda quelle telefonate non ha nessun interesse a svegliarvi. Anzi: all’altro capo del telefono c’è una macchina, con pochissimo senso dell’umorismo. A che pro?

  • Invio di FAX pubblicitari
  • Invio di messaggi pubblicitari (quasi sempre in inglese)
  • Verifica dell’esistenza di un apparato VoIP presso il vostro IP

L’ultimo è il più pericoloso e spesso si avvale di un software chiamato SIPVicious, in grado di generare chiamate a raffica e interagire con altri software. Tipicamente, se il vostro telefono IP risponde, da lì a poco parte un attacco fraudolente per rubarvi la password del vostro account VoIP e farvi arrivare bollette salatissime. Chi ha fatto SIPVicious voleva solo offrire un tool di test ai tanti sviluppatori di software VoIP. Invece è diventato lo strumento più usato dai pirati di tutto il mondo.

La seconda domanda che arriva è:”Ma come hanno fatto a scoprire il mio IP?” Se hai una macchina che lavora per te 24 ore su 24, puoi permetterti di spazzolare tutte le classi IPv4 esistenti sul pianeta! Se poi usi un provider che fa VoIP (quasi tutti ormai) sarai ancora più colpito. Quindi non vi preoccupate: nulla di personale.

Ed ecco la terza ed ultima domanda:”Come posso difendermi?” Semplicemente popolando opportunamente le vostre regole di firewall. Se fate VoIP con un certo provider, sinceratevi di aprire la porta SIP del vostro telefono (tipicamente la 5060 UDP) solo all’indirizzo IP della loro piattaforma. Dovete comunicare anche con i centralini VOIP delle altre sedi della vostra azienda? Aprite anche quelli. Insomma, non lasciate i vostri apparati VoIP aperti al mondo, anche se sono nattati. Basta proteggere il VoIP? No! Proteggete anche l’interfaccia web, l’accesso telnet. Tutto!

Eh ma come sei paranoico!” Dirà qualcuno. Statene certi, è il prossimo che bucano!

Categorie:Voip:Clients, VoIP:Info

WebRTC: anche il telefono se ne va nella nuovola

L’ultimo baluardo dell’ufficio vecchia maniera era rimasto il telefono. Google e soci avevano messo in cloud tutto il necessario ad una normale postazione lavorativa. La posta su GMail, i documenti su Drive, foglio di calcolo ed editor inclusi, gli appuntamenti sul Calendar, le presentazioni video su YouTube.

Eppure il telefono eravamo comunque costretti a portarcelo dietro. Dal classico cellulare fino al softphone sul PC, per i più smaliziati. Insomma o ti portavi dietro il telefono o per lo meno il tuo PC con il tuo software di fiducia e le cuffiette. In passato ci sono stati tentativi per superare questo vincolo. Ricordo GizmoCall, FlashPhone e altri. Tutti ottimi tentativi che risentivano delle specifiche hardware o di rete, in cui la pagina web girava.

Poi i ragazzi della grande G si inventano un progetto spettacolare. Contattano i maggiori produttori di web browsers e li coinvolgono nello standardizzare una nuova tecnologia: il WebRTC, dove la sigla sta per Real-Time Communications. La soluzione all’annoso problema della comunicazione portatile viene trovata nel classico uovo di colombo.

Le solite menti visionarie si sono dette: cosa succede se integriamo nei browsers delle funzionalità per gestire audio (scheda sonora, cuffie,etc) e video (webcam), oltre che ad un protocollo per lo streaming sicuro? Ecco che così il browser diventa lo strumento per comunicare, dopo essere già diventato lo strumento per scrivere programmare e inviare mails. Ci sono delle demo (http://googlechrome.github.io/webrtc/) che mostrano la potenza di questo nuovo strumento, realizzate dai suoi inventori e fan entusiasti.

Un altro gruppo di programmatori, gli amici di FreeSWITCH, di cui tanto ho parlato in queste pagine, hanno subito cavalcato l’onda e creato un modulo per il loro  software VoIP che si interfaccia agevolmente col WebRTC. Sto parlando di mod_verto. Non sono proprio di primo pelo nelle telecomunicazioni ma la semplicità riesce ancora a stupirmi. Con poche righe di codice, riutilizzando dei pezzi di Javascript già presenti in rete da anni, si riesce a creare qualcosa di unico.

La DEMO permette di unirsi alla conference degli sviluppatori in certi giorni della settimana. Generalmente udrete musica. Il bello è che quella demo potete scaricarla e farla diventare il vostro web phone personale! Certo ci vuole un po’ di studio per modificarla a proprio piacimento, utilizzando tutti i metodi del WebRTC. Ma il risultato è più che soddisfacente.

L’ultima barriera è dunque superata. Se siete in vacanza alle Maldive e quel cliente importantissimo ha bisogno di essere chiamato, andate ad un internet point, trovate sul Drive le offerte che gli avevate mandato, accedete al vostro webphone e chiamatelo col numero dell’ufficio. Tranquilli…non vedrà le vostre infradito.

Truffe VoIP: i telefoni Grandstream della famiglia 14XX

Lo scopo di questo blog è anche quello di mettere la gente in allarme, al fine di evitare che i soliti malintenzionati abbiano strumenti per rubare il traffico telefonico. Quindi il mio obiettivo non è quello di formare nuovi ladri ma di impedire che simili cose accadano.

A tal fine, segnalo un bello scherzetto praticato dagli “amici” hacker palestinesi sui telefoni Grandstream (testato da me sulla famiglia GXP 14XX). 

Molti possessori di telefoni IP si preoccupano di mettere passwords molto complesse per l’utente ADMIN, mentre tralasciano la parte USER. Di solito, infatti, come user si può fare poco e niente. I solerti programmatori Grandstream, invece, hanno permesso all’utente di configurarsi una rubrica di numeri con funzionalità Click To Dial!!! 

Cosa significa? Si entra nell’interfaccia web del telefono, si inserisce un numero in rubrica, si clicca sul numero e il telefono compone il numero in automatico. Dall’altra parte c’è il sistema premium del truffaldino, che risponde alla chiamata e la tiene in piedi fino a che non cade per timeout dell’operatore. 

Risultato? La nostra bolletta telefonica esplode e gli amici palestinesi ingrassano a nostre spese.

Cosa fare per proteggesi? Due cose molto semplici:

1 – Il telefono non deve essere accessibile da internet sulla sua interfaccia web (porta TCP 80)

2 – Anche la password USER (oltre a quella ADMIN) deve essere complessa!

A buon intenditore, poche parole!

 

 

Categorie:Voip:Asterisk

GNR Virtuale Clouditalia e Call Manager Express

03/12/2013 16 commenti

Sul lavoro ne capita di tutti i colori. Quando si tratta di mettere le mani su roba CISCO poi, che intende il VoIP in maniera molto proprietaria, son dolori. E sì perché il marchio leader del networking ha pensato, ormai da anni, la sua bella soluzione voip e non ammette interferenze dall’esterno…o quasi.

Quando mi sono ritrovato a configurare un account VoIP Clouditalia con selezione passante su un gateway montante IOS 15.1  e Call Manager Express ho cambiato colore del viso! Ma alla fine, anche senza certificazione, in qualche modo ne sono uscito.

La release in questione offre una serie di comandi, non ben documentati, che suppliscono alle carenze della famiglia 12, con la quale l’unica strada era ricorrere a script TCL legati ai dial-peers. Questi comandi permettono di manipolare i pacchetti SIP e raggiungere lo scopo che ci prefiggiamo. Qual’è lo scopo? Estrarre l’effettivo chiamato ingresso, perché Clouditalia manda sempre lo stesso numero sulla SIP Request URI, ma mette l’effettivo chiamato nella TO URI. Una scelta che ci rende la vita difficile in ambito CISCO, ma già recepita da molti centralini nativi voip e non.

Il primo blocco di comandi definisce le regole di manipolazione della segnalazione SIP:

voice class sip-profiles 1
request INVITE peer-header sip To copy “sip:(.*)@” u01
request CANCEL peer-header sip To copy “sip:(.*)@” u01
request INVITE sip-header SIP-Req-URI modify “.*@(.*)” “INVITE sip:\u01@\1”
request CANCEL sip-header SIP-Req-URI modify “.*@(.*)” “CANCEL sip:\u01@\1”

In pratica si copia la TO URI e si sostituisce alla SIP Request URI, unico sistema per poi matchare i dial-peers che seguono.

Quindi si imposta due regole di “ingaggio” per beccare il chiamato:

voice class uri TRUNK sip
user-id 01234567..

voice class sip-copylist 1
sip-header TO

Il grosso è fatto ma già arrivare fino a qui mi ha fatto penare!

Concludiamo con un paio di dial-peers che attuano quanto definito.  Il primo cattura il pacchetto:

dial-peer voice 99 voip
description incoming SIP Trunk
session protocol sipv2
session target sip-server
incoming uri to TRUNK
voice-class codec 1
voice-class sip copy-list 1

Il secondo lo modifica e lo ributta nel dial-plan:

dial-peer voice 300 voip
description to/from ccme
destination-pattern 01234567..
session protocol sipv2
session target ipv4:<IP Locale CCME>
voice-class codec 1
voice-class sip profiles 1
dtmf-relay rtp-nte
no vad

Naturalmente l’account principale deve essere registrato:

sip-ua
credentials username 0123456700 password 7 <password account voip> realm voiptrunk.eutelia.it
keepalive target dns:voip.eutelia.it
authentication username 0123456700 password 7 <password account voip> realm voiptrunk.eutelia.it
nat symmetric role active
nat symmetric check-media-src
no remote-party-id
retry invite 2
retry response 3
retry bye 3
retry cancel 3
retry register 10
timers connect 100
timers keepalive active 100
registrar dns:voip.eutelia.it expires 900
sip-server dns:voip.eutelia.it
connection-reuse
host-registrar

I purisiti mega certificati troveranno che dire, ma vi assicuro che a uno come me sarebbe servito come il pane trovare istruzioni del genere! Quindi sotto con i commenti ma non inferite troppo.

P.S. Per i soliti svegli: 01234567XX è un GNR di esempio…sostituite la vostra radice, mi raccomando.

Categorie:VoIP:Cisco, VoIP:Info

Il primo PBX virtuale basato su Freeswitch in Italia

29/10/2012 3 commenti

Chi segue questi miei deliri online, sa quanto sia innamorato del software voip open source Freeswitch. Su queste pagine ho pubblicato anche alcuni esperimenti che ho realizzato con questo software. Proprio leggendo i miei commenti entusiasti, sono stato contattato da una giovane software house italiana che ha realizzato e commercializzato un PBX virtuale interamente basato su Freeswitch!

I ragazzi del team di TiChiamo.it mi hanno offerto una demo gratuita e spiegato le funzionalità del loro ‘virtualpbx’ e devo dire che, sebbene il numero di servizi offerti non sia ancora paragonabile a quello delle grandi firme americane, stupisce per la semplicità di utilizzo e per la facilità con cui ci si registra al servizio con un IP-Phone di media qualità.

Le features sono quelle classiche: chiamate gratuite tra interni, gruppi di squillo, code, trasferimenti (anche verso interni virtuali corrispondenti a numeri di cellulare), voicemail, follow-me e altri ancora. Altre sono in cantiere, motivate dai clienti, data la giovane età del progetto.

Quello che mi ha colpito è la facilità di implementazione con cui certe funzionalità sono state create. Sicuramente grazie alla loro bravura, ma soprattutto per la potenza di questa piattaforma. I ragazzi mi hanno detto che per ottenere le stesse funzionalità del loro dialplan (un paio di schermate) con script Asterisk hanno dovuto riempire pagine e pagine di extensions.conf con programmazione Gosub/Goto simile ai programmi basic del povero Commodore 64 (che il dio dei computers l’abbia in gloria)!

Insomma: bravi ragazzi! Vi auguro tanta fortuna.

Lato mio gongolo, perché “ve l’avevo detto che FS è il futuro!”. Detentori di PBX virtuali basati su Asterisk, siete avvisati!

FreeTDM: attacchiamo Freeswitch alla vecchia telefonia

12/06/2012 1 commento

Per chi non lo sapesse Sangoma, nota produttrice di schede per connettere i server VoIP alla rete telefonica tradizionale, è uno dei più grossi sponsor di Freeswitch (abbreviato FS), ed è per questo che uno dei suoi tecnici ha sviluppato il modulo TDM di FS, FreeTDM appunto. Di conseguenza le loro schede sono le più indicate, per chi avesse l’esigenza di sviluppare, ad esempio, un centralino connesso ad un flusso primario.

Se però, come me, siete degli ex sviluppatori Asterisk, per lo stesso principio, vi ritroverete per il laboratorio una scheda Digium; siccome non costano un soldo, vi domanderete: “posso usarla con FS?” La risposta è “sì” ma l’operazione non è proprio scontata.

Step 1. La parte più semplice

La parte più semplice è quella che già conoscevamo: installare libpri e dahdi, esattamente come si fa su Asterisk. Alla fine della compilazione si fa partire il servizio (“service dahdi start” in Debian), si fa generare i files di configurazione e si verifica il tutto:

root@pbx:~#dahdi_genconf
root@pbx:~#dahdi_cfg

root@pbx:~#lsdahdi

### Span 1: TE4/0/1 “T4XXP (PCI) Card 0 Span 1” (MASTER) HDB3/CCS/CRC4 ClockSource
1 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
2 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
3 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
4 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
5 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
6 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
7 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
8 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
9 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
10 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
11 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
12 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
13 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
14 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
15 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
16 PRI HDLCFCS (In use) (EC: VPMOCT128 – INACTIVE)
17 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
18 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
19 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
20 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
21 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
22 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
23 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
24 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
25 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
26 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
27 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
28 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
29 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
30 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
31 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)

[…]

In verità non è stata così facile come faccio sembrare. Ho avuto la fortuna di subire un bug noto a tutti eccetto che a me, di incompatibilità tra i nuovi drivers e una scheda un po’ vecchiotta che avevo. Una giornata di lavoro per scoprire che avrei dovuto rimandarla indietro quando era l’ora!

Step 2.  La compilazione di ftmod_libpri

Libpri rimane ancora la libreria più affidabile per le Digium. Per integrarla in FS è necessario portarsi nell’apposita directory dei file sorgente /…/freeswitch/libs/freetdm

-) ./configure –with-libpri –prefix=/usr/local/freeswitch

-) make

-) make install

Al termine, per sicurezza, controllate che ftmod_libpri.laftmod_libpri.so siano apparsi sotto /usr/local/freeswitch/mod.

Step 3. Le tre conf di FS

In FS i files da modificare sono tre.

Il primo è conf/zt.conf che ho lasciato come di default:

[defaults]
codec_ms => 20
wink_ms => 150
flash_ms => 750
echo_cancel_level => 64
rxgain => 0.0
txgain => 0.0

Il secondo è conf/freetdm.conf che ho configurato per un solo primario (nonostante la scheda avesso 4 span) :

[general]
cpu_monitor => no
cpu_monitoring_interval => 1000
cpu_set_alarm_threshold => 80
cpu_reset_alarm_threshold => 70
cpu_alarm_action => warn
debugdtmf_directory=/usr/local/freeswitch/log

[span zt myPRI_1]
trunk_type => E1
group => e1group
b-channel => 1-15
d-channel => 16
b-channel => 17-31

Il terzo costituisce il legame tra FS e i driver propri dell’hardware: conf/autoload_configs/freetdm.conf.xml. Di tutti quelli elencati fin’ora è l’unico in formato XML:

<configuration name=”freetdm.conf” description=”FreeTDM Configuration”>

<settings>
<param name=”debug” value=”0″/>
</settings>

<libpri_spans>
<span name=”myPRI_1″>
<param name=”node” value=”cpe”/>
<param name=”switch” value=”euroisdn”/>
<param name=”opts” value=”omit_redirecting_number”/>
<param name=”dp” value=”unknown”/>
<param name=”debug” value=”none”/>
<param name=”dialplan” value=”XML”/>
<param name=”context” value=”public”/>
</span>

</libpri_spans>
</configuration>

Notare che il campo “span name” è pari a myPRI_1 : questo valore deve coincidere con il nome della span zt nel file freetdm.conf!

Step.4 Telefonare

A questo punto ho registrato un softphone a FS come interno 1000 nel dominio di default. Solo per fare le prove ho aggiunto sotto conf/dialplan/public/ il file 01_inbound_TDM.xml  così fatto:

<include>
<extension name=”public_tdm”>
<condition field=”destination_number” expression=”^012345678$”>
<action application=”transfer” data=”1000 XML default”/>
</condition>
</extension>
</include>

Dove 012345678 è il numero attestato sul flusso primario collegato al server tramite scheda Digium.

Poi su conf/dialplan/default.xml ho aggiunto questa extension:

<extension name=”outgoing-pri”>
<condition field=”destination_number” expression=”^61000$”>
<action application=”bridge” data=”freetdm/1/a/300112233″/>
</condition>
</extension>

Dove 300112233 è il numero del mio cellulare (non è vero , ovviamente!).

A questo punto digitando 61000 dal softphone ho parlato con il cellulare, mentre chiamando 012345678 mi è squillato il softphone e ho potuto ugualmente parlare.

Conclusioni

Ripeto la frase con cui ho iniziato: se dovete comprare una card nuova, scegliete Sangoma! Per motivi di spazio non vi posso documentare le mille difficoltà (stupidaggini) in cui sono incappato, anche grazie alla poca documentazione per le Digium. Commercialmente è giusto così, tecnologicamente parlando un po’ meno. Alla fine però il buon Freeswitch esce vincitore anche da questa vicenda, facendosi trovare già maturo alle interconnessioni TDM!

Categorie:Voip:Freeswitch