El Viernes, 10 de Julio de 2009, Jeff Pyle escribió: > Hello, > > On Opensips 1.5.1, the scenario is this: A subscriber behind NAT places a > call through the proxy that gets relayed to Asterisk whose canreinvite=yes. > The call goes is answered and Asterisk reinvites the RTP endpoints > together. > > The call starts to go badly when Asterisk ACKs the subscriber's 200 OK to > its reinvite. Opensips tries to relay the ACK to the private IP of the > endpoint, not the public. Everything up to this point has been to the > public.
Easy: you must ensure that the proxy performs NAT detection for reply routes (onreply_route) for in-dialog requests, and fix the Contact (fix_contact()) in onreply_route. This is: - The UA sends INVITE behind NAT. - OpenSIPS fixed Contact and routes it to Asterisk. - Asterisk replies 200 => proxy => UA. - UA sends ACK => proxy => Asterisk. - Now Asterisk sends re-INVITE (in-dialog request) to the proxy. - The proxy routes it to UA. - UA replies 200. - Proxy *fixes Contact* for the 200 and routes to Asterisk. - Asterisk now will send ACK to proxy with RURI containing the fixed Contact address (UA's public IP:port). -- Iñaki Baz Castillo <[email protected]> _______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
