[OpenSIPS-Users] Fixing the Contact Header for NAT

Iñaki Baz Castillo ibc at aliax.net
Thu Nov 27 14:20:21 CET 2008


El Jueves, 27 de Noviembre de 2008, Juan Backson escribió:
> In the 200OK received by the nated client, the Contact is :Contact:
> <sip:1000 at 192.168.1.100:33756> 

> Opensips did not add the Record-Route even 
> though I did specify fix_nated_contact in on_reply_route.

Perhaps you don't understand the meaning of adding Record-Route, it has 
*nothing* to do with fix_nated_contact.

Adding Record-Route means that in-dialog requests (as the ACK for the 200 OK) 
will pass through the proxy, so the ACK will contain a Route header and a 
RURI with the value of the Contact received in the 200 OK:

  ACK sip:1000 at 192.168.1.100:33756
  From: zzzzzzz
  To: zzzz
  Route: <sip:ip_proxy>

This ACK will arrive to the proxy (it has a Route so the device/phone MUST 
send the request there), but whe this ACK arrives to the proxy it will remove 
the Route header and route it based on the RURI, this is: the proxy will 
forward this ACK to IP 192.168.1.100:33756.
Do you understand the problem? Most probably, the proxy is in a different 
network (hopefully with public IP) so it cannot reach that private IP.

To solve it, the proxy must run "fix_nated_contact" in on_reply_route. This 
will replace the IP in the Contact of the 200 OK with the received public IP.

In your case, this last point is not working since the UAS receives a Contact 
with a private IP. Verify it.


-- 
Iñaki Baz Castillo



More information about the Users mailing list