VoIP e Asterisk/Canali di comunicazione

Indice del libro

Asterisk supporta una varietà di canali di comunicazione, sia canali VoIP che canali telefonici della rete tradizionale, tuttavia quelli più utilizzati sono 4: Session Initiation Protocol (SIP) e Inter-Asterisk eXchange (IAX) per i canali VoIP, Foreign eXchange Office (FXO) e Foreign eXchange Station (FXS) per i canali telefonici tradizionali.

Per visualizzare i canali supportati dalla corrente installazione di Asterisk si utilizza il comando “show channeltypes”, eccone un esempio, eseguito su un centralino puro VoIP:


FXO e FXS

modifica

I canali FXO e FXS non sono molto diversi in fase di configurazione, entrambi comunque richiedono sia la configurazione di Asterisk che la configurazione dei moduli Zaptel, separati da asterisk.

Si inizia con la configurazione di Zaptel, poi si configura lo Zapata hardware nelle configurazioni di asterisk. Nella configurazione di Zaptel (/etc/zaptel.conf) si specifica quali canali della scheda telefonica sono FXO e quali sono FXS, e che tipo di sottoprotocollo utilizza per trasmettere il ringing, Loop start, Ground start o Kewl start. Oltre a questo viene specificata la zona geografica in cui ci si trova, per cui Zaptel trasmetterà di conseguenza il dialtone, tono d'occupato, cicli di ringing opportuni per la zona specificata. Ogni zona ha delle differenze sulle frequenze e sulle pause usate per indicare i vari stati della linea.

Asterisk usa il file zapata.conf per determinare i settaggi e la configurazione dell'hardware telefonico installato nel sistema. Oltre a questi nel file vi è specificato alcune feature legate all'hardware, come la trasmissione del CallerID, possibilità di mettere in attesa la chiamata, la soppressione dell'eco, e altre opzioni.

La sintassi di questo file è relativamente semplice:

[trunkgroups]
; qua si definiscono i trunk di canali
[channels]
; parametri di default per i canali
...

; definizione dei canali
context=internianalogici
; usa il context [internianalogici] in extensions.conf
signalling=fxo_ks
; il tipo di segnale ricevuto (in questo caso FXO Kewl Start)
channel => 1
; le impostazioni sopra sono per il canale 1 della scheda zap
; Il telefono analogico è attaccato alla porta 1 (canale 1)

context=lineainentrata
;le chiamate in ingresso usano [lineainentrata] in extensions.conf
signalling=fxs_ks
; il segnale ricevuto è FXS Kewl Start
channel => 2
; La linea PSTN è collegata alla seconda porta della scheda


Per testare questa configurazione occorrerà creare un dialplan di base, la cui sintassi verrà spiegata più avanti. Per ora basta sapere che per testare i due canali basta collegare linea PSTN e telefono e definire due context nel file extensions.conf.

[lineainentrata]
; le linee in ingresso dalla porta FXO
exten => s,1,Answer()
exten => s,2,Echo()

[internianalogici]
; dalla porta FXS
exten => 123,1,Answer()
exten => 123,2,Echo()

Questa configurazione minimale istruisce asterisk a fare l'eco del segnale vocale, per testare bisogna effettuare una chiamata verso il numero telefonico associato alla linea telefonica connessa al server. Per testare invece il telefono bisogna comporre sul tastierino numerico l'interno 123.


La configurazione del protocollo SIP avviene nel file sip.conf, suddiviso in varie sezioni. La sezione [general] contiene i settaggi generali applicati a ogni utente SIP, poi per ogni utente SIP del sistema ci sarà una sezione nominata con l'username.

Per ogni utente è possibile definire una quantità enorme di parametri, i più importanti sono:

type: definisce il tipo di trasmissioni generate per quell'utente, se in entrata, in uscita o entrambi.
secret: password usata nell'autenticazione
callerid: stringa mostrata sul display del chiamato che identifica il chiamante
context: il contesto che controlla cosa è possibile fare (vedi dialplan)

Parametri di rete: qualify, host, nat, canreinvite

qualify indica se monitorizzare la latenza del client per stabilire se è on-line o off-line, host indica l'IP del client o “dynamic” se per sapere l'IP è richiesta la registrazione del client, nat comprende le opzioni per connessioni con NAT, canreinvite riguarda le redirezioni SIP.


File d'esempio:

[general]
context=default
srvlookup=yes	; piazza le chiamate in base al nome di dominio

[john]
type=friend	; entrambe le direzioni permesse
secret=welcome
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=internal

Questa configurazione definisce l'utente SIP “john” con password “welcome” e la possibilità di piazzare chiamate in entrambe le direzioni, ed è un utente che necessita di registrarsi presso il SIP proxy perché le sue informazioni di rete (IP,...) non sono nella configurazione.


Per quanto riguarda invece il secondo protocollo, IAX, la sua configurazione è memorizzata nel file iax.conf. Il protocollo IAX è solitamente utilizzato nelle comunicazioni server-to-server, il formato è molto differente dal SIP, e questo protocollo è molto meno sofferente al NAT che il SIP, infatti le connessioni IAX, sia nella fase di signalling che nella trasmissione voce, utilizza sempre la stessa connessione, sulla porta 4569.

Il formato di questo file è molto simile a quello del SIP, la sezione [general] con i settaggi generali applicati a ogni utente, e una sezione per ogni utente, nominata con l'username dell'utente. Molte proprietà per gli utenti si chiamano nello stesso modo e hanno lo stesso significato.


File d'esempio:

[general]
....

[iaxserver]
type=friend
context=internal
auth=rsa			; connessione crittata e autenticata
inkeys=filechiavi	; file contenente le chiavi

Se l'utente definito necessita di registrarsi anche su un altro server (per poter fare chiamate inter-server) occorrerà un comando di registrazione, specificato nel file. register => user:pass@host

Si rimanda al capitolo opportuno per una trattazione più approfondita.