Almost sounds like you and I are having the same issue.
<br />
<br />Here&#39;s my issue
<br />http://opensips-open-sip-server.1449251.n2.nabble.com/Two-OpenSIPS-proxies-issue-td7580685.html
<br />
<br />Do you have a SIP trace?  I&#39;m just wondering if we are having the same problem.  Does the ACK that gets relayed to ifself on the other IP have the username missing in the RURI?
<br />
<br />
<br />
<br />
<br />On , Jeff Pyle &lt;jpyle@fidelityvoice.com&gt; wrote:
<br />&gt; Hello,
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; I&#39;m attempting to write a config to perform near-end NAT traversal on Opensips 1.7.  I&#39;m having a problem with the loose_route of the ACK after the 200 OK, and if I wait long enough, the BYE as well.
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; Here&#39;s the scenario.  An INVITE comes in the WAN side and is t_relay&#39;d to the LAN side.  The LAN-side UAS sends a 200 OK, and that is relayed back to the WAN-side UAC.  So far, so good.  Then the WAN-side UAC sends the ACK to the 200.  Opensips relays this from its own WAN IP to its own LAN IP - I found it with ngrep on the lo interface.  Eventually Opensips sends a 408 back to the UAC.
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; Here&#39;s the relevant portion of the config, based largely on the included sample.  This works fine with single-interface configurations:
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt;         if (has_totag()) {
<br />&gt;                 if (loose_route()) {
<br />&gt;                         if (method==&quot;INVITE&quot;) record_route();
<br />&gt; 
<br />&gt; 
<br />&gt;                         if (!t_relay()) sl_reply_error();
<br />&gt;                         exit;
<br />&gt;                 } else {
<br />&gt;                         if (method == &quot;ACK&quot;) {
<br />&gt;                                 if (t_check_trans()) {
<br />&gt; 
<br />&gt; 
<br />&gt;                                         if (!t_relay()) sl_reply_error();
<br />&gt;                                         exit;
<br />&gt;                                 } else {
<br />&gt;                                         exit;
<br />&gt; 
<br />&gt; 
<br />&gt;                                 }
<br />&gt;                         }
<br />&gt;                         sl_send_reply(&quot;404&quot;, &quot;Not Here&quot;);
<br />&gt;                 }
<br />&gt;                 exit;
<br />&gt; 
<br />&gt; 
<br />&gt;         }
<br />&gt; 
<br />&gt; 
<br />&gt; I&#39;ve verified with xlogs the ACK hits in the loose_route() portion of the config.  It does hit t_relay, but it relays the message to itself on its &#39;other&#39; IP.  I&#39;ve tried to look the extended debugs but I&#39;m not finding anything telling.  Unfortunately I don&#39;t have any experience with multiple interface configurations.  I suspect it has something to do with the double Via lines added, one from each interface.  Perhaps it&#39;s not detecting the second Via as its own?  (Even if that were the case, I can&#39;t explain why it&#39;s not responding to itself on the lo interface.)
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; I do have mhomed=1 enabled.  Without it the initial invite doesn&#39;t arrive at the LAN-side UAS.
<br />&gt; 
<br />&gt; 
<br />&gt; I&#39;ve experimented with check_via, aliases, etc.  No effect.  Any suggestions on where to go from here?
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; - Jeff
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt; 
<br />&gt;