pourquoi le nat pose un probleme en sip ?
en http, par exemple, le serveur répond au client sur l'@ utilisée par la couche transport, c'est à dire l'adresse que remonte l'interface réseau. donc, qd la session vient d'un client natté, c'est l'@ publique que voit le serveur (une des fonctions du nat est en sortie de remplacer l'@ privée par une @ publique). Donc, ca marche !
en sip, on voit tout pareil cette adresse, mais le protocole sip prévoit que les adresses d'échange soient indiquées dans des éléments du protocole. Un client natté met donc son @ privée (sans serveur stun, il n'a pas conscience d'être natté), et le serveur sip est censé lui répondre sur cette @. notamment pour l'établissement du flux audio. Donc, si le client est natté, ca marche pas !!!
cela permet d'avoir la signalisation (SIP) sur une adresse, et le flux media (RTP) sur une autre - c'est très utile lorsque la charge monte
le nat avec asterisk a deux niveaux
- client : asterisk prend en compte l'@ip utilisée par la couche transport, et non celle indiquée dans le protocole
- serveur : qd asterisk est derriere un nat, il utilise les @ fournies dans externip dans le protocole si l'adresse de l'interface n'est pas celle de localnet
voili voila....