====== Über OpenSIPS ====== 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: * Debian * 4.0 Etch * 5.0 Lenny * unstable * openSUSE * 11.0 * 11.1 * 11.2 * CentOS 5 * Fedora Darüber hinaus gibt es einen SVN-Tree und für Selbstbastler einen Tarball. ====== Szenario ====== {{ :projekte:opensips_szenario.jpg?100|Logischer Aufbau}} 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. ====== Installation Server ====== ===== Überlegung ===== Debian und OpenSIPS allein macht auch nicht glücklich - meine Idee zum Aufbau des SIP-Servers: * Debian Lenny als Betriebssystem * OpenSIPS Server * OpenSIPS Control zur Steuerung über die Konsole * OpenSIPS Control Panel zur Steuerung über den Webbrowser * SSH-Server zur Fernwartung * Apache Webserver * MySQL Datenbank * phpMyAdmin zur Verwaltung der MySQL-Datenbank über eine Weboberfläche 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: * PostgreSQL * MySQL * Oracle Ich verwende hier MySQL, da ich hier die meisten Vorkenntnisse habe. Wer allerdings eine Oracle-Lizenz übrig hat, kann auch gerne Oracle benutzen. ;-) ===== Installation von Debian Lenny ===== 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. ===== Apache2, PHP5, MySQL ===== 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 "" > /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. ===== Perl-Pakete ===== 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 **Hinweis:** Wird Oracle als Datenbank benutzt, muss das hierfür benötigte Modul (''DBD::Oracle'') aus dem CPAN bezogen und kompiliert werden! ===== OpenSIPS-Pakete ===== 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. ====== Installation und Konfiguration der Clients ====== 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: * Kphone * Linphone * minisip 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* ===== Konfiguration von Ekiga ===== 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. {{ :projekte:opensips_ekiga_konfiguration.jpg?200|Ekiga Konfiguration|}} Klicks im Menü auf "**Edit**" und "**Account**" zeigen das Account-Menü. Unter dem Menü "**Accounts**" stehen vier Account-Typen zur Auswahl: * **Ekiga.net Account**, Ekiga.net eigener SIP-Account, erfordert Registrierung. * **Ekiga Call Out**, Ekiga.net-Account, mit dem auch ins herkömmliche Festnetz telefoniert werden kann. * **SIP Account**, SIP-kompatibler Account, beispielsweise für OpenSIPS- oder OpenSERS-Server. * **H.323 Account**, H.232-kompatibler Account. Der dritte Account-Typ (''SIP Account'') wird hier benötigt. Erfordert werden folgende Angaben: {{ :projekte:opensips_ekiga_videounterhaltung.jpg?200|Videochat unter Ekiga|}} * **Name**, Benutzername, beispielsweise Vor- und Nachname * **Registrar**, IP-Adresse des SIP-Registrars, hier die IP-Adresse des OpenSIPS * **User**, Benutzername des Kontos auf dem Server * **Authentification User**, Benutzername zur Authentifizierung, falls abweichend vom Username * **Password**, Passwort des Benutzerkontos * **Timeout**, Timeout zum SIP-Server 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. ====== Erweiterte Konfiguration ====== 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. ===== OpenSIPS Control Panel ===== Das Control-Panel ist aktuell noch nicht konfiguriert. ===== User-Management ===== 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. ====== Screencast ====== ====== Internetverweise ====== * http://www.opensips.org - OpenSIPS-Projektseite * http://opensips-cp.sourceforge.net - OpenSIPS Control Panel-Projektseite * http://www.debian.org - Debian Linux Projektseite * http://vimeo.com/12769938 - Videotutorial: Grundinstallation des OpenSIPS auf Debian Lenny