Frank Durda IV píše v Út 29. 09. 2009 v 00:19 -0500:
The reason SER doesn't appear to work with two interfaces that connect to two isolated networks is pretty simple: If you use record_route() and loose_route() to handle the called-party BYE and re-INVITEs addressing correctly and fix_nated_contact() to straighten out the Contact headers in both directions on most messages, SER also inserts two Record-Route: headers, which is fine for the direction the Method message is sent in, but the order is only good for that direction. On the replies (such as 180/183/200) once you get past the SER, everything falls apart. The two Record-Routes that come out of SER (or are just passed-through) are now in the wrong order for the side of the isolated networks that the reply is sent out of SER to, so the machine receiving them tries to send the PRACK/ACK back to SER on the IP address of the other isolated network because that Record-Route line appears first, and of course you can't get there from here.
I'm sorry I haven't read all the discussion but the paragraph above hit my eyes and I think you should check whether your client/gateway/etc. is compliant with RFC3261 chapter 12.1.1 and 12.1.2.
Regarding record-route headers and creating route set: - UAS gets all headers and builds the route set - UAC gets all headers REVERSE the order and use it as route set
If it wasn't done this way any request with two or more Record-route headers (regardless who added them - one proxy both or two proxies on the path) would be affected and very probably wouldn't reach the other end.
Michal