[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> 

> 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
  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
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