OpenSIPS ist eine quelloffene Server-Software, welche IP-Telefonie basierend auf SIP ermöglicht. So kann OpenSIPS als Vermittlungsstelle, über welche Clients Verbindungen herstellen, agieren. Darüber hinaus eignet sich OpenSIPS auch als XMPP- und SMS-Gateway.
OpenSIPS ist eine Software-Sammlung, welche es vorkompiliert für folgende Distirbutionen gibt:
Darüber hinaus gibt es einen SVN-Tree und für Selbstbastler einen Tarball.
OpenSIPS ist flexibel und skalierbar, von einer einfacher „Zwei-Mann-Lösung
“ bis hin zur Telefonieanlage für 2000 Benutzer sind keine Grenzen gesetzt.
In meinem Beispiel geht es aber nur um eine simple Konfiguration mit einem Server und zwei Clients, welche über den SIP-Server miteinander kommunizieren wollen.
Debian und OpenSIPS allein macht auch nicht glücklich - meine Idee zum Aufbau des SIP-Servers:
Insbesondere OpenSIPS CP ist eine hübsche Erweiterung, welche es kinderleicht macht, den OpenSIPS zu verwalten. OpenSIPS und das CP benötigen eine Datenbank, das CP benötigt darüber hinaus noch Apache2 oder lighttpd als Webserver. Folgende Datenbanken werden vom CP unterstützt:
Ich verwende hier MySQL, da ich hier die meisten Vorkenntnisse habe. Wer allerdings eine Oracle-Lizenz übrig hat, kann auch gerne Oracle benutzen.
Da OpenSIPS nur eine Software-Sammlung und keine eigene Distribution ist, bedarf es der Installation einer Distribution, wie beispielsweise Debian. Unter dieser wird dann OpenSIPS installiert.
Ich habe mich hier für ein Debian Lenny entschieden und eine Minimal-Installation ohne zusätzliche „Aufgaben
“ installiert.
Die benötigten Komponenten, wie beispielsweise Webserver, installiere ich immer manuell nachträglich, da in diesem Beispiel die Aufgabe „Webserver
“ bei der Paketinstallation noch viel unnötigen Ballast mit installiert.
Die Fähigkeit, Debian zu installieren, setze ich hier einfach mal vorraus - darauf gehe ich hier nicht weiter ein. Neben der klassichen Konsoleninstallation gibt es mitlerweile auch ein grafisches Installationsfrontend, welches die Installation ein wenig „benutzerfreundlicher
“ gestaltet.
Nachdem nach der Debian-Installation alle Updates installiert wurden (sehr wichtig!), bedarf es nun der Installation der benötigten Webserver- und Datenbank-Pakete:
# apt-get install apache2 php5 php-pear php5-xmlrpc php5-mysql php5-cli mysql-server phpmyadmin
Bei der Installation wird ein root-Passwort für MySQL abgefragt - dieses bitte unbedingt merken, es wird später benötigt, um eine Verbindung mittels „phpMyAdmin“ herzustellen, um beispielsweise die spätere OpenSIPS-Datenbank mit benötigten Inhalten zu füllen.
Das OpenSIPS-CP benutzt einige PHP PEAR-Bibliotheken die es nun gilt zu installieren:
# pear install MDB2 # pear install MDB2#mysql # pear install MDB2#pgsql # pear install log
Nach der Installation sollte die Funktionsfähigkeit des PHP-Interpreters verifiziert werden, da ansonsten später das OpenSIPS Control Panel nicht funktionieren wird:
# /etc/init.d/apache2 restart # echo "<?php phpinfo(); ?>" > /var/www/test.php # w3m http://localhost/test.php
Wenn PHP korrekt installiert wurde, wird mit dem letzten Aufruf die PHP5-Konfiguration auf dem Bildschirm ausgegeben.
Als weitere Abhängigkeit wird auch Perl benötigt, um unter anderem Datenbank-Konnektivität zu ermöglichen. Die benötigten Perl-Module sind glücklicherweise im Repository vorhanden:
# apt-get install perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perl libberkeleydb-perl
DBD::Oracle
) aus dem CPAN bezogen und kompiliert werden!
Anschließend folgen die OpenSIPS-Pakete - diese befinden sich in Form von vorkompilierten Debian-Paketen auf einem Webserver. Für Debian Lenny wäre das: http://opensips.org/pub/opensips/latest/packages/debian/5.0-lenny/
Die enthaltenen Pakete können einfach mittels wget bezogen und danach mithilfe von dpkg installiert werden:
# mkdir sip_pkgs && cd sip_pkgs # wget -r -l1 -nd -A deb http://opensips.org/pub/opensips/latest/packages/debian/5.0-lenny/ # dpkg -i *.deb
Aufgrund fehlender Abhängigkeiten wird die Installation mit einem Fehler abgebrochen, mithilfe von apt-get können die Abhängigkeiten aufgelöst werden. Es werden in diesem Fall die fehlenden Pakete und anschließend die OpenSIPS-DEBs installiert:
# apt-get install -f
Nach erfolgreicher Installation muss der Dienst über die Konfigurationsdatei noch aktiviert werden, bevor er gestartet werden kann:
# vim /etc/default/opensips
Hier wird die folgende Zeile
RUN_OPENSIPS=no
in
RUN_OPENSIPS=yes
geändert. Anschließend kann die Datei gespeichert und der Dienst gestartet werden:
:wq # /etc/init.d/opensips start Starting opensips: opensipsListening on udp: 127.0.0.1 [127.0.0.1]:5060 ... tcp: 127.0.0.1 [127.0.0.1]:5060 Aliases: tcp: localhost:5060 udp: localhost:5060 .
Nach diesem Schritt ist OpenSIPS schon startklar und einsatzfähig. Ohne weitere Anpassungen gibt es allerdings kein Usermanagement. Das bedeutet, jeder Benutzer kann sich anmelden und die Dienste in Anspruch nehmen. Wenn man lieber die Übersicht über das „Geschehen“ auf dem Server haben möchte, empfiehlt es sich Usermanagement zu implementieren und so angelegte, registrierte Benutzer vorrauszusetzen. Somit wäre der Server nicht mehr öffentlich.
Die Clients werden durch zwei virtuelle Maschinen mit Xubuntu Linux 10.04 repräsentiert. Aber natürlich kann hier auch jede andere Linux-Distribution oder auch ein Windows-Betriebssystem zum Einsatz kommen. Als SIP-Client verwende ich hier Ekiga, andere mögliche SIP-Clients wären:
Wer ein wenig unnötigen Ballast loswerden will, kann einige der vielen, wie ich finde, etwas unnötigen Zusatzprogramme entfernen:
$ sudo apt-get remove --purge simple-scan* brasero* exaile* gnome-games* pidgin* transmission* xchat* software-center*
Ekiga unterstützt mehrere Accounts, um es hier zu verwenden, wird ein angelegter Account (oder eben ein nicht angelegter Account, wenn kein Usermanagement implementiert wurde) eingebunden.
Klicks im Menü auf „Edit“ und „Account“ zeigen das Account-Menü. Unter dem Menü „Accounts“ stehen vier Account-Typen zur Auswahl:
Der dritte Account-Typ (SIP Account
) wird hier benötigt. Erfordert werden folgende Angaben:
Mit dieser Konfiguration können zwei konfigurierte Benutzer bereits miteinander Telefonieren und Chatten, mit Ekiga sind sogar Video-Unterhaltungen möglich.
Je nach Codec, welcher sich im Einstellungsmenü von Ekiga einstellen lässt, kann sich die Bildqualität durchaus sehen lassen. Die Soundqualität lässt sich ebenfalls durch Modifizierung der Codec-Einstellungen anpassen.
Für einen ersten Funktionstest ist die aktuelle OpenSIPS-Konfiguration ausreichend. Zu einem voll funktionsfähigen und sinnvolleren OpenSIPS entwickelt sich der Dienst allerdings erst nach einigen Modifizierungen.
Das Control-Panel ist aktuell noch nicht konfiguriert.
Die momentane Konfiguration von OpenSIPS hat den entscheidenden Nachteil, dass es kein User-Management gibt. Das bedeutet, dass sich Benutzer einfach anmelden können, ohne ein gültiges Benutzerkonto zu besitzen. Somit könnte sich ein Benutzer „Paul“ ohne Konto anmelden, ein anderer Benutzer könnte sich am nächsten Tag ebenfalls als „Paul“ anmelden und so unter seinem Namen Telefonate führen oder für den eigentlichen Paul gedachte Informationen erhalten. Betreibt man einen OpenSIPS in dieser Konfiguration im Internet, kann dieser ganz schnell und einfach als „Spam-Schleuder“ missbraucht werden.