Goal
This guide helps you setup a simple, mature and flexible open source SIP server. OpenSER can be used on systems with limitted resources as well as on carrier grade servers, scaling to up to thousands call setups per second.
Applicability
OpenSER includes all major entity of a SIP Network. It is a registrar, location server, proxy server, redirect server, gateway to SMS/XMPP, or advanced VoIP application server.
Prerequisites (OS, dependencies on other software)
- Linux/Unix OS
Installation (OS agnostic)
Read first carefully the INSTALL file, paying especially attention to section 3C) and 3D).
Use packages
There are several packages ready to be installed. Packages are available for Debian, Fedora, FreeBSD, Gentoo, NetBSD, OpenBSD, Solaris.
Make packages
If you need a newer version. Make packages by typing 'make deb' or 'make rpm' instead of 'make install'.
Configuration (OS agnostic)
The configuration is located in /etc/openser
. The default configuration is ready for a very simple setup and for some very basic tests. You can already try to register to the SIP server.
Troubleshooting with ngrep
Before you try to register to your SIP server make sure udp and tcp port 5060 are open. Use ngrep for tracing SIP messages on the SIP server. Useful commands are:
ngrep port 5060 ngrep -d eth0 port 5060 ngrep -q 'test_user_name'
Message too big
If you get the following error when registering: <Message too big> then probably your host forwards the SIP Message to itself. So trace on localhost to see if this is the case. If your server has more than one DNS entry, make sure that you have all hostnames in /etc/hosts
and that you have the following line in your openser.cfg alias="yoursipdomain.ch:5060"
Troubleshooting with the xlog module
For debugging purposes, it may be very helpful to use the xlog module, which logs directly with syslog.
Add the following line to the /etc/syslog.conf
file:
# OpenSER messages # make sure this spacing is done with tabs, spaces may cause errors local7.* /var/log/openser # remove local7 from syslog and messages *.*;auth,authpriv.none,local7.none -/var/log/syslog *.=info;*.=notice;*.=warn;\ mail,news.none,local7.none -/var/log/messages
And add the following line to the openser.cfg:
log_facility=LOG_LOCAL7 ;Add the xlog module: loadmodule "/usr/lib/openser/modules/xlog.so"
It is particular helpful for logging variables. You can add e.g. follwing line at the beginning of the default route.
xlog("L_INFO", "request method: [$rm], from URI: [$fu], To URI: [$tu]");
The full set of variables is available on http://openser.org/docs/pseudo-variables.html
Control server with openserctl
With sudo openserctl moni
you can monitor the state of your openser (whether it is actually running after the installation).
openserctl is located in /usr/sbin
, which is not by default in the user PATH. To use openserctl as a non-priviledged user you need to add the path to the environment export $PATH=PATH:/usr/sbin
or call with the full path /usr/sbin/openserctl
. Addionally you have to change permissions for the fifosockets. Add the following line in /etc/openser/openser.cfg
.
sock_group="staff" # openser socket/fifo group, e.g. staff
If you don't want to type the read/write password every time you make a change via openserctl, you can add the following lines to your /etc/openser/openserctlrc
. This is also a good moment to configure the SIP domain.
## password for database read/write user DBRWPW=openserrw ## your SIP domain SIP_DOMAIN=yoursipdomain.ch
Plain text passwords
Be aware that this can be a security problem, as your password is unencrypted in a file. However, this might be anyway the case in /etc/openser/openser.cfg
.