PDA

Voir la version complète : Comment modifier des messages SIP INVITE?



elyseh
12/06/2011, 22h51
Bonsoir à tous!
Je voudrais modifier les messages SIP INVITE qu'un proxy reçoit avant de le renvoyer au destinataire du message. Je voudrais précisement modifier les adresses IP dans le corps du message. Malheureusement je n'ai aucune idée de quels fichiers de configuration modifier ou de quel genre de script écrire. Mes configurations se font sur TRIXBOX. Je vous prie de me donner des idées.
Merci d'avance.
Elyse

Comdif
12/06/2011, 23h07
Bonsoir à tous!
Malheureusement je n'ai aucune idée
Heureusement que tu n'as aucune idée, parce que la tous les trunks avec
auth par IP sont morts.

Malheureusement hélas j'ai cru voir que OpenSER sais faire.
bon hack :-)
Mais bon pas chez moi car la tu devras non seulement d'avoir la bonne IP, le bon compte, le bon password et être enregistré.

Reaper
13/06/2011, 01h06
Comdif il ne parle pas d’authentification, reste dans le sujet.
elyseh Il est facile de modifier n'importe quel champ une fois reçu par proxy.

Explique nous plus pourquoi veux tu effectuer la modification sur la trixbox au lieu de proxy ? Et précise exactement de quel IP il s'agit. (FROM? CONTACT ?)

elyseh
13/06/2011, 11h10
Comdif il ne parle pas d’authentification, reste dans le sujet.
elyseh Il est facile de modifier n'importe quel champ une fois reçu par proxy.

Explique nous plus pourquoi veux tu effectuer la modification sur la trixbox au lieu de proxy ? Et précise exactement de quel IP il s'agit. (FROM? CONTACT ?)

En réalité mon TRIXBOX joue un role de proxy. Je veux modifier l'adresse IP dans l'attribut C du corps du message (SDP) INVITE
Je voudrais remplacer l'adresse IP contenu dans l'attribut
Connection Information (c): IN IP4 10.10.10.10
par 10.10.8.1 (adresse du client source) afin que les flux RTP soient envoyés à cette adresse au lieu du 10.10.10.10 (adresse du proxy).
Donc en un mot je voudrais que les flux RTP passent directement entre mes deux clients au lieu de traverser les proxys.

Reaper
13/06/2011, 15h05
Dans ce cas il faut utiliser canreinvite=yes au niveau de compte sip.
Google sur cette option si tu veux plus d'information.

elyseh
13/06/2011, 18h03
Merci pour ta réponse.
Mettre canreinvite=yes ne résout pas mon problème. Le proxy met toujours son adresse IP à la place de celle du client SIP. J'ai essayé directrtpmedia=yes aussi. Mais rien.
De plus, mes deux clients SIP sont connectés chacun à 2 serveurs Asterisk différents.
Je pense que écrire des scripts AGI pour modifier "soit meme" les attributs pourrait résoudre le problème. Est ce que c'est possible?
Merci d'avance.

Reaper
13/06/2011, 18h06
Non c'est pas possible, tu as du mal à d’écrire ton schéma, commence par dessiner un schema réseau de tes asterisk's (nat ip's ect), et met le ici, et arrête appeler asterisk proxy, c'est un B2BUA pas un proxy.

elyseh
13/06/2011, 23h27
Voici mon architecture.

Clt SIP A <=> NAT1 <=> Server SIP 1 <=> Server SIP 2 <=> NAT2 <=> Clt SIP B

IP client SIP A :10.10.8.1
IP Serveur SIP 1: 10.10.10.1
IP Serveur SIP 2:10.10.10.2
IP client SIP B: 10.10.9.1

Je répète le problème. Je voudrais que les deux clients A et B puissent échanger directement entre eux les paquets RTP.

Reaper
13/06/2011, 23h57
Dans ce cas il vous faut que canreinvite soit activé sur l'ensemble de chemin.
C.a.d entre les peers d'asterisk 1&1 et client 2, Serveurs sip1 & 2 est en publique ?

elyseh
14/06/2011, 20h06
Les 2 serveurs SIP sont dans le réseau publique.
Quand chacun ou l'un des deux clients se trouve derrière un NAT canreinvite=yes ne marche plus.
D'où la recherche d'une solution où on peut demander au serveur de modifier l'attribut C et d'y mettre l'adresse appropriée avant de le transmettre.

Reaper
14/06/2011, 21h57
Je suppose que vous avez cherché le google les mot suivants ? "Asterisk nat"
Je vous conseille de lire le premier lien en détail.