erlug
[Top] [All Lists]

Re: [Erlug] Telefonare con SIP attraverso dietro un NAT

To: ERlug - Lista Pubblica <erlug@xxxxxxxxxxxxxx>
Subject: Re: [Erlug] Telefonare con SIP attraverso dietro un NAT
From: Fabio Muzzi <kurgan@xxxxxxxxxx>
Date: Sun, 11 Dec 2005 18:02:13 +0100
Hello Marco,
Sunday, December 11, 2005, 3:42:49 PM, you wrote:



>> Non mi e` chiaro esattamente cosa si potrebbe fare ora, che non si
>> potesse fare fino a ieri.

MBS> Uscire con SIP da una rete nattata e sperare che qualcosa funzioni.
MBS> Da qualche tempo si parla di STUN (per altro notevole accrocchio), ma
MBS> per ora pochi softphone lo supportano e non avevo mai potuto verificare
MBS> che funzionasse.

In  realta`  il problema e` piu` sottile, ed e` legato come al solito alla
coglionata  numero  uno: includere nel payload informazioni pertinenti gli
indirizzi di rete.

Lo  stun  e`  uno  scempio, in pratica cerca di scoprire con che indirizzo
esci e poi ficca quello nel payload.

La  soluzione  elegante  per usare senza pippe il SIP attraverso il NAT e`
duplice:

1-  a  livello si SIP, il server (che si suppone abbia indirizzi statico e
magari non nattato) deve ignorare gli indirizzi forniti nei messaggi SIP e
considerare  SOLO  l'indirizzo  da  cui  realmente  arrivano  i  pacchetti
(Asterisk lo fa, volendo)

2-  a livello di RTP, usare il gioco dell'apertura simmetrica delle porte:
lo  stream  RTP  deve  sempre partire dalla stessa porta verso la quale e`
destinato,  in  questo modo anche i piu` bagonghi dei firewall stateful (o
NAT  dinamico  many-to-one) riescono a capire cosa farne dei pacchetti che
tornano indietro.

3-  opzionalmente,  se si usano piu` di un client SIP dietro uno stesso ip
statico,  occorre  obbligatoriamente variare le porte UDP usate per l' RTP
in modo da non avere sovrapposizioni.

4-  per  finire, non dimenticate il keepalive sul SIP per tenere il client
registrato e il NAT aperto.




-- 

 Fabio "Kurgan" Muzzi 

La diagnosi del tecnico:
   La fogna in cantina e` traboccata e ha messo in corto i cavi di rete

<Prev in Thread] Current Thread [Next in Thread>