OpenSIPS: L’Installazione

Inizio oggi una serie di post che riguardano direttamente il mio lavoro, ovvero il VoIP. Sono stato infatti incaricato ufficialmente di traghettare l’Università di Siena dal vecchio mondo degli Ericcson MD110 alla tecnologia VoIP, essendo stato uno dei pochi ad aver realizzato qualcosa del genere all’interno dello stesso ateneo.

Una bella avventura su cui mi appresto a lavorare al meglio, sfruttando il più possibile software libero (per quanto mi riguarda, ESCLUSIVAMENTE software libero) e niente appliances commerciali.

Alla fine credo che ne usciremo con qualche OpenSIPS, qualche Asterisk per i servizi quali VoiceMail ed IVR, uno o più Patton SR 4960 per interfacciare la rete telefonica ed il centralino tradizionale con la nuova realtà VoIP.

La sfida più grande, infatti, è migrare nel modo più trasparente possibile mantenendo comunque la compatibilità tra i due mondi senza disservizi per l’utenza, ormai abituata ad un certo tipo di servizi e metodologie.

L’idea è di partire migrando piccole realtà, uffici di 10-15 persone, e vedere come si comporta il tutto. Prendiamo spunto da realtà che hanno già fatto, o stanno facendo, il grande passo, come il CNR di Pisa (di cui siamo stati ospiti):

  • OpenSIPS a gestire le registrazioni ed il flusso di messaggi SIP, basando le configurazioni su DB MySQL
  • Asterisk per i servizi IVR e VoiceMail
  • Patton come gateway tra PSTN e VoIP

Inizio quindi a provare OpenSIPS, installando i binari della 1.7.0 su una Debian ad-hoc, da http://opensips.org/pub/opensips/1.7.0/.

Dopo dpkg -i e svariate dipendenze da risolvere, si passa a creare il DB e popolare le tabelle che accoglieranno le configurazioni. Tutti gli schemi si trovano nella directory /usr/share/opensips/mysql e dopo aver importato lo script standard-create.sql (che si limita a creare la tabella “version”), ho scritto due righe in bash per semplificare il lavoro:

#!/bin/sh
for filename in *.sql
do
    mysql -u opensips --password=[password] opensips < $filename
done;

alla fine il vostro bel DB “opensips” sarà popolato da tutte le tabelle necessarie al funzionamento. Adesso si passa ad adattare /etc/opensips/opensips.conf per le proprie necessità. Per iniziare è stato sufficente abilitare i vari moduli ed impostare adeguatamente le credenziali per l’accesso al DB. Nello stesso file, però, c’è la sezione cruciale di OpenSIPS:

####### Routing Logic ########

Per iniziare a giocare, mi sono limitato ad attivare l’autenticazione scommentando questa parte:

if (!(method=="REGISTER") && is_from_local())  /*multidomain version*/
    {
        if (!proxy_authorize("", "subscriber")) {
            proxy_challenge("", "0");
            exit;
        }
        if (!db_check_from()) {
            sl_send_reply("403","Forbidden auth ID");
            exit;
        }
        consume_credentials();
        # caller authenticated
    }

ho lanciato il demone OpenSIPS (/etc/init.d/opensips start) ed ho aggiunto una riga nella tabella subscriber:

idusernamedomainpasswordemail_addressha1ha1brpid
12001unisi.it2001michele.pinassi@unisi.itNUL

per provare se se almeno l’autenticazione funziona. Ho poi installato ngrep (apt-get install ngrep) per monitorare cosa succede sulla porta 5060:

ngrep -W byline -td any . port 5060

e questo è il primo risultato:

U 2011/10/06 15:43:33.258240 proxy-voip01:5060 -> mypc:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP mypc:5060;rport=5060;branch=z9hG4bKPjc1eae852-b68a-4343-8b08-e875cf11899e.
From: <sip:2169@proxy-voip01>;tag=ca889e8a-13be-429d-ad28-50e1252b15e8.
To: <sip:2169@proxy-voip01>;tag=c97b4d1cb1f3d0da549e06a8d482ef63.abf4.
Call-ID: cbfbc2aa-0cf2-4455-aacb-5650beb92f3d.
CSeq: 42858 REGISTER.
Contact: <sip:2169@mypc:5060>;expires=60.
Server: OpenSIPS (1.7.0-notls (i386/linux)).
Content-Length: 0.
.

Per oggi può bastare 🙂 alla prossima puntata !

(Visitato in totale 55 volte, oggi 1 visite)

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.