Newsgroup: it.tlc.telefonia.voip
Titolo: asterisk dietro NAT

Salve a tutti.
Ho installato asterisk ed in lan va benissimo.
Vorrei fare connettere dei client SIP dall'esterno tipo ekiga o xlite. I 
client sono dietro NAT, ed anche il server asterisk e' dietro NAT.
La connessione ADSL avviene con il router Pirelli della Alice business, 
al quale ho reindirizzato *TUTTO* il traffico di *TUTTE* le porte e di 
*TUTTI* i protocolli su un firewall.
Sul firewall poi, ho reindirizzato sul server asterisk la porta e 5060 e 
le porte UDP da 10000 a 20000, come da istruzioni trovate sul sito di 
asterisk. Anzi per non sbagliare ho reindirizzato tutto l'intervallo che 
va da 4000 a 6000 in TCP/UDP sul server asterisk.
Il client si connette, esegue le chiamate, ma alla risposta l'audio in 
uscita al client non arriva al server.
Ho creato anche una conference room; dai clients che vi accedono 
dall'esterno, si sente la voce che chiede di inserire il pin per la 
conferenza, ma i toni dtmf non vengono 'sentiti' da asterisk e quindi 
non si entra nella room.
Il comando rtp debug in console asterisk, in effetti rileva soltanto 
pacchetti in uscita, ma non in ingresso, sebbene dai 'pc' clients si 
veda traffico' in uscita.
Forse e' una cavolata, ma ci sto sbattendo la testa da due giorni.
In sip.conf ho anche messo NAT=yes.
Suggerimenti?
Saluti e grazie.

 va da 4000 a 6000 in TCP/UDP sul server asterisk.
Io ho aperte e rigirate sul server le porte da 5060 a 5063 UDP e dalla 
8000 alla 20000 sempre UDP, oltre alla porta per l'IAX (non la ricordo, 
ma se non lo usi non serve).
In sip.conf ho nat=never per i client interni alla rete, e nat=route per 
i client esterni.
Ovviamente deve esserci anche un canreinvite=no.
Controlla anche il file rtp.conf che indica quali porte usare per l'rtp.
A me ha sempre funzionato perfettamente...
Ciao, Piero.

 Controlla anche il file rtp.conf che indica quali porte usare per l'rtp.
L'intervallo e' 10000-20000
Su un client dietro nat, con wireshark ho visto che i pacchetti con 
protocollo UDP-RTP portano come destinazione l'ip privato del server di 
asterisk invece che quello pubblico....
Il problema quindi e' proprio questo.... ma perche' mi ritrovo quell'IP 
ed il client cerca di comunicare con quello, invece che con quell pubblico?
Ho provato sia con ekiga che con eyebeam e il traffico e' lo stesso!
C'e' qualcosa che mi sfugge! ma cosa?
Saluti e grazie!

 C'e' qualcosa che mi sfugge! ma cosa?
Risolto!
E' stato necessario usare externip = ip_pubblico in sip.conf.
Ora devo controllare se dall'interno funziona!
Saluti.

 asterisk invece che quello pubblico....
Forse manca, in sip.conf->general, una entry externip=tuo_ip_pubblico?
Inoltre dovresti dichiarare anche i tuoi indirizzamenti locali, tipo:
localnet=
192.168.27.0/255.255.255.0
 #<- tra dsl router e fw
localnet=
172.16.0.0/255.255.0.0
     #<- la lan vera e propria
-- 
For a list of all the ways technology has failed to improve the quality 
of life, please press three.
(C) Alice Kahn

 
Perfetto, grazie.
Ora ho un altro problema!
Se faccio una chiamata tra due interni, entrambi dall'esterno (da due ip 
differenti) gli interni squillano, ma non ho l'audio. Se metto uno dei 
due in attesa ed ascolto la moh e poi lo riprendo, allora sento anche 
l'audio.
Se entrambi gli interni chiamano la conference room, tutto funziona 
regolarmente....
Avviando asterisk con l'opzione verbosa e debug non ci sono ne' warning 
ne' errori quando le chiamate iniziano.
Cosa ho mancato questa volta?
Grazie e saluti!

 Grazie e saluti!
Come stai messo con i codec?? g729 non è supportato da asterisk.
prova a far andare tutto con gsm o ulaw, compresi i telefoni, disattiva 
ovunque il g729 e vedi se va.
ciao 

 
Il g729 e' gia' escluso dalla lista in sip.conf. La comunicazione stando 
a quanto dicono i client avviene in g711a (alaw) fin dall'inizio...
Grazie e saluti.

 regolarmente....
Puzza di reinvite, hai impostato reinvite=no?
Verifica anche che i sip client/telefoni non stiano usando porte RTP random.


 impostato reinvite=no?
Ooops... canreivite=no


 
Mezzo risolto anche questo.... la colpa e' del firewall che rileva quel 
traffico come DoS e scarta tutti i pacchetti generati dalla 
conversazione! La cosa curiosa e' che si verifica quando due interni 
vogliono comunicare direttamente. Alla risposta non si sente nulla; poi 
se uno dei due mette in attesa l'altro e poi riprende la conversazione, 
da quel momento in poi il traffico non e' piu' considerato come DoS!
Inoltre ogni tanto durante la conversazione 'ci scappa' qualche DoS... 
(per il firewall ovviamente!)
Boh...

 conversazione! [...]
Sarà una cazzata, ma io metto il server asterisk sempre in DMZ. Secondo 
me a livello casalingo è una soluzione accettabile, con il consiglio di 
cambiare la porta standard per eventuali altri servizi (in particolare 
ssh server).
-- 
http://theluckystrike.wordpress.com

 E' stato necessario usare externip = ip_pubblico in sip.conf.
Io ho quello, anzi: ho un 'externhost', avendo l'IP dinamico...
Pero' ho dovuto metterlo solo per far funzionare Eutelia, per il resto 
mi pare che funzionasse tutto, prima...
Ciao, Piero.

 Come stai messo con i codec?? g729 non è supportato da asterisk.
Il mio lo supporta (non solo passthru, ovviamente)  :-) :-).
Ciao, Piero.

 ssh server).
Io ho la porta dell'ssh giusta, non ho DMZ, ma ho la 22 girata sul mio 
server.
I miei log, ovviamente, sono pieni di tentativi di accesso, ma l'utente 
autorizzato ad ssh e' uno solo, ovviamente NON root, e non lo 
beccheranno mai...
Ho installato un modulo che dovrebbe bannare chi fa troppi tentativi, ma 
non sono ancora riuscito a farlo funzionare...
Ciao, Piero.

 Ciao, Piero.
Ciao!
-- 
http://theluckystrike.wordpress.com