Welcome to FreeSWITCH! Comments inline...
-MC

On Wed, Feb 8, 2012 at 3:50 PM, Josh <mojo1736@privatedemail.net> wrote:
I am considering using FreeSWITCH as a replacement of our (rather
crappy, outdated and buggy) sip proxy system, and have the following
system setup on the server:

* eth0 faces the external Internet interface, *but* it does not have a
public IP address (it has a private one given to it by my ISP's DHCP
server);
* eth1 faces our internal network (say 10.1.1.0/24);
* tun0 serves all mobile smartphones and connects to the internal
network (it has a different ip range, say 10.1.2.0/24) - they are all
connected via the Internet using OpenVPN;

I would like to configure FreeSWITCH as a local registrar and ask it to
handle internal calls between ourselves (eth1<->tun0). I would also like
to use one external VOIP provider to which FreeSWITCH registers on
startup. This also needs to have all NAT-related issues dealt with as
well (hopefully by FreeSWITCH, if possible). I would also need to
emphasise that FreeSWITCH *cannot* just listen on any (public-facing)
interface port in order to receive calls from the external provider,
simply because my ISP won't allow it (i.e. I can't just "open" that port
and hope that someone will contact me - the connection needs to be
initiated by our server for incoming call to get routed through).
But calls will be sent to FreeSWITCH by some device, correct? If it's good old-fashioned SIP then FreeSWITCH will handle it just fine.
 

The purpose of registering this external account is so that both the
smart phones (tun0) and the internal net (eth1) users could use this
account to make external calls (starting with "0"). Obviously, I need
these calls to be routed properly via the external VOIP account. In
addition to that, I would also need to receive calls from that external
account to a nominated internal one (say on extension 20).

Could this be done relatively easily in FreeSWITCH?
"Relatively?" Of course! It's relatively easy for someone with some experience. I highly recommend that you ask consulting@freeswitch.org for professional assistance if you are not comfortable doing this all by yourself.
 

A question about binding: in order to be able to use both tun0 and eth1
interfaces so that FreeSWITCH serves the calls from both eth1 and tun0
devices/networks, is it possible to instruct it to bind on different IP
addresses (on tun0 and eth1 respectively) in order to serve calls
to/from these networks? I do *not* wish to bind to 0.0.0.0 - just use
the interfaces I am interested in - tun0 and eth1 in my case.
Yes, FreeSWITCH can bind to multiple interfaces. In FreeSWITCH lingo that would mean that you set up a separate SIP profile for each interface. (In fact, you can have more than one SIP profile on a given interface since the profile is a unique combo of IP addr and port number.)
 

If all of the above is possible, do I have to mess about and configure
SNAT/DNAT separately and use sip kernel module "helpers" etc (I *do*
have the routing set up properly though - that I am sure works 100%) or
is FreeSWITCH perfectly capable of setting it all up for me?
"Some assembly required." :D
FreeSWITCH can do some stuff for you, but you definitely need to make sure that your NAT is not behaving badly, like having a SIP ALG.
 

One final query: is there a decent distribution source package of
FreeSWITCH, which I could take and then use it to build a binary package
(I use Fedora on all of our machines). I need this, because all of our
images are built using the rpm packaging system and I cannot just "fetch
the latest git", compile and install FreeSWITCH - I need it packaged, so
that the image builder picks it up and distributes it to the machine
concerned. I checked the SUSE repository (as instructed on the
FreeSWITCH wiki), but found 2 packages, both of which cannot be build
due to errors!
I'll have to defer to Ken Rice on this one. I know he's working on RPMs for FreeSWITCH but I think it's all RedHat right now.
 

Many thanks in advance!