Hi,
I am evaluating software to solve SIP+RTP+NAT problems in typical SOHO setups:
Scenarios: Typical scenarios are (A)DSL "dial-up / dynamic IP" connections with one public IP and a router doing NAT for some LANs.
1) WAN multiple LANs internet <-> NAT router <-> SIP phones sip registrar SIP proxy <-> SIP phones with NAT logic :
2) WAN multiple LANs internet <-> NAT router <-> SIP proxy with NAT logic, SIP phones sip registrar <-> SIP phones :
Notes: - the SIP phones use the SIP proxy with NAT logic as outbound proxy - the proxy is notified if the public IP changes
The closest match so far has been siproxd [1]. But I would prefer to use openser+nathelper+rtpproxy. Now it seems nathelper is designed for a different scenario (SIP provider):
WAN/internet sip registrar <-> ser+nathelper <-> NAT router <-> multiple LANs with SIP phones
and uses the packet source address in fix_nated_contact.
Now I stumbled across milkfish [2] and its patches [3] to openser (nathelper). It seems the patch allows to explicitly set the address used by fix_nated_contact to rewrite the contact header (instead of using the packet source address). Searching the mailing list archives I did not find a better solution. Closest match I found was the thread: "[Devel] Extended nathelper" started by Walter Schober http://www.mail-archive.com/devel@openser.org/msg01930.html Ending in the suggestion to use add_rvc_param(). But add_rcv_param seems to use the packet source address, too. But also from this thread it seems one might use the mangle module to rewrite the contact header field, but then I am not sure about the state of this module: "This is a module to help with SDP mangling. Still in testing."
I am a bit surprised that there is no straight forward solution to such a common setup. Am I missing something really obvious?
Thanks
Greetings Jens Thiele
[1] siproxd http://siproxd.sourceforge.net/ [2] milkfish http://wiki.milkfish.org [3] milkfish openser patches http://packages.milkfish.org/boozy/Milkfish_Sources_for_OpenWrt-SDK/OpenWrt-SDK/package/openser/patches/