[OpenSER-Users] openser to solve SIP+RTP+NAT problems in typical SOHO setup

Jens Thiele karme at berlios.de
Thu Aug 2 14:57:29 CEST 2007


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




More information about the Users mailing list