sipfwd/Documentation

Table of Contents toctoggle

This SIP forwarding daemon acts as a stateless SIP proxy to essentially forward a SIP address to another SIP server. This is useful if you already have an account with a SIP provider, but aren't too happy about the SIP URL you got and instead prefer to use a SIP URL with your own domain name (but don't want to run a full-blown SIP server like Asterisk or OpenSER).

So it allows you to use and publish SIP URLs of the form sip:user@example.com with the minimum possible effort.

Of course, your existing SIP provider has to allow incoming connections via SIP (unfortunately, some providers choose to block direct SIP connections and only allow connections via PSTN).

Prerequisites

For compiling the source code, you need to have the following packages available (in addition to the standard development environment):

  • SQLite 3
  • The GNU oSIP library
  • UDNS (optional)

UDNS is only needed for DNS SRV support and can be disabled in the Makefile (see -DHAVE_UDNS).

Set Up

In order to run your own SIP forwarding daemon, there are two things to consider:

  • IP address: it is advised to explicitly bind the daemon to a specific IP (or IPv6) address using the -b command line option.
  • DNS: in order to have SIP requests for example.com routed to your SIP forwarding server, you will either have to set up your DNS zone such that A/AAAA records for example.com point to the SIP forwarding server, or add an SRV record for _sip._udp.example.com.

As an example, have a look at the setup for the cmeerw.org domain which has a SRV record:

_sip._udp.cmeerw.org.   28800   IN      SRV     10 0 5060 edge.cmeerw.net.

and A/AAAA records for edge.cmeerw.net:

edge.cmeerw.net.        28800   IN      A       217.11.63.119
edge.cmeerw.net.        28800   IN      AAAA    2001:6f8:~131c::1

Consequentially, the SIPFwd daemon is bound to these IP addresses using the the -b command line option:

sipfwd -b 217.11.63.119 -b 2001:6f8:~131c::1

Configuration

Configuration information is stored in an SQLite3 database in the "forward" table. To add a forwarding rule, you simply have to insert it into the database, e.g.

$ sqlite3 /var/lib/sipfwd/sipfwd.db
> INSERT INTO forward (local, remote)
    VALUES ('user@example.com', 'sip:account@sipprovider.example.com');
> INSERT INTO forward (local, remote)
    VALUES ('sales@example.com', 'sip:166@voipfone.co.uk');
> INSERT INTO forward (local, remote)
    VALUES ('time@example.com', 'sip:123@voipfone.co.uk');

This will forward any SIP connections for user@example.com to account@sipprovider.example.com.

Note that the local column has to be specified as username@domain, whereas the remote column has to be specified as a full SIP URI.

Demo

For demonstration purposes I have added the users spam and time to the SIPFwd daemon configuration running on cmeerw.org (these will seemlessly forward to services provided by Voipfone). So just point your SIP client to sip:spam@cmeerw.org and sip:time@cmeerw.org to give it a try...

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 dated June, 1991.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

see http://www.gnu.org/licenses/old-licenses/gpl-2.0.html for full details.