Collegare due Centralini Asterisk tramite il protollo IAX

Qualche giorno fa mi è venuta l’idea di collegare un centralino asterisk che ho in ufficio e che uso come test con il mio centralino di casa.
Allora pongo la domanda al mio caro amico Walter esperto di Asterisk e lui mi risponde cosi:

Certo che si può fare (a patto che i centralini da collegare abbiano una connessione adsl, o comunque a banda larga)
basta usare IAX che è il protocollo di interconnessione nativo di asterisk.
Poi mi spiegava che questo protocollo ha una serie di vantaggi in confronto al piu tiffuso dei protolli.. SIP

1) può incapsulare tutto il traffico in un unico canale
2) usa una sola porta di comunicazione
3) l’attraversamento delle NAT è nativo, e non da problemi
4) permette di selezionare il punto di arrivo nel dialplan di destinazione sin dall’origine
5) permette l’autenticazione su chiave pubblica

comunque tante altre piccole funzionalità che nell’insieme lo rendono imbattibile.

Mi sono studiato la configurazione e alla fine non è stata molto difficile.
Veniamo al sodo abbiamo due centralini (Hardy e Karmic in perfetto stile Ubuntu) di cui vado ad illustrare iax.conf:

Hardy
iax.conf:
[general]

bindport=4569
bindaddr=0.0.0.0
language=it
bandwidth=medium
disallow=all
allow=gsm
allow=g729
allow=alaw
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
requirecalltoken=no
mailboxdetail=yes
minregexpire=360
maxregexpire=3600

[karmic] type=friend
username=ubuntu
secret=linux
auth=plaintext
host=karmic.mydomain.it
context=fromiax
peercontext=fromiax
qualify=yes
transfer=yes

Karmic
iax.conf:
[general]

bindport=4569
bindaddr=0.0.0.0
language=it
bandwidth=medium
disallow=all
allow=gsm
allow=g729
allow=alaw
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
requirecalltoken=no
mailboxdetail=yes
minregexpire=360
maxregexpire=3600

[hardy] type=friend
username=ubuntu
secret=linux
auth=plaintext
host=hardy.mydomain.it
context=fromiax
peercontext=fromiax
qualify=yes
transfer=yes

Le righe da inserire in extensions.conf a questo punto sono abbastanza semplici e logiche;

Hardy
extensions.conf
[uscita] exten => _88XXX,1,Dial(IAX2/karmic/${EXTEN:2})

[...] [fromiax] exten => _X.,1,Set(CALLERID(name)=Karmic)
exten => _X.,n,Goto(interni,${EXTEN},1)

Karmic
extensions.conf
[uscita] exten => _88XXX,1,Dial(IAX2/hardy/${EXTEN:2})

[...] [fromiax] exten => _X.,1,Set(CALLERID(name)=Hardy)
exten => _X.,n,Goto(interni,${EXTEN},1)

Come potete vedere nel primo esempio per chiamare un interno remoto basta seleziona 88 + l’interno, mentre il secondo esempio è la rotta in entrata che cambia il Caller ID per distinguere chi chiama, e poi inoltra la chiamata nel contesto interni che è il contesto in cui si trovano i miei interni.

Spero possa essere utile a molti.

By

Frank

 

About Francesco Gabriele

5 commenti

  1. Interessante articolo, una domanda per legare i due centralini immagino che bind= debba recare l’indirizzo del centralino remoto a cui collegarsi?

  2. con bind indichi su quale interfaccia deve rimanere in ascolto ;)

  3. Ciao, interessante. Se ho il traffico in ingresso su hardy e la chiamata viene ruotata verso Karmic ho problemi di latenza? Come ti è sembrata la qualità su semplici adsl?
    Grazie
    ciao

  4. Prima di tutto scusami pe rla formattazione ma sono passato da WordPress 2 a 3 ed il restore del backup mi ha formattato male gli articoli e li devo sistemare :-)
    cmq ho attiva la soluzione su diversi clienti e i tempi di latenza sono abbastanza buoni usando il codec g729 poi ovviamente per evitare problemi conviene sempre dividere il traffico voip da quello normale e se possibile configurare un traffic shaper.

  5. bene,
    sto per collegare 5 trixbox in vpn anellare :-) sono tutti su shdsl con bmg 4+4 quindi spero di non aver problemi di latenza.
    Grazie per le info.
    Ciao

Inserisci un commento

Il tuo indirizzo email non sarà pubblicato. Required fields are marked *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>