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