Installation von asterisk auf WRT54GL


Kurze Erklärung zu asterisk

Asterisk ist ein Programm mit dem sich ip-Telefone verbinden können. Es gibt Unmengen an Einstellungsmöglichkeiten.
Eine ausführliche Anleitung dazu findet Ihr unter http://www.das-asterisk-buch.de/.
Hier zeige ich eine schnelle Anleitung, wie Ihr mit Freunden, die sich auch mit Eurem asterisk Server verbunden haben telefonieren könnt. Das ganze geschieht über die vorher eingerichtete, verschlüsselte OpenVPN Verbindung. Es ist zwar nicht ganz so einfach einzurichten wie Skype, aber wer vertraut den heutzutage noch proprietärer Software?
Ein bis jetzt ungelöstes Problem habe ich aber noch mit dem asterisk auf dem WRT54GL. Telefonkonferenzen gehen darauf noch nicht. Um eine Telefonkonferenz auf dem asterisk, braucht dieser einen bestimmten Timer, der sich dort leider nicht einrichten lässt. Abhilfe soll dabei das neue OpenWRT Kamikaze schaffen, da dieses einen Kernel der 2.6er Generation mitbringt, White Russian dagegen hat einen 2.4er Kernel. Mit dem 2.6 Kernel kann man dann auch diesen Timer einrichten. ABER mit dem Kamikaze 2.6 Kernel funktioniert das Wlan vom WRT54GL noch nicht. Ausserdem konnte ich bis jetzt noch kein funktionierendes Modul für den SD Karten Mod (mmc.ko) finden das auf dem WRt54GL mit dem 2.6 Kernel läuft. Das ist auch der Hauptgrund, warum ich mich für White Russian entschiednen habe.

Mein Workaround für die "fehlenden" Telefonkonferenzen funktioniert folgendermaßen:
Wenn mein Rechner (Debian etch als betriebssystem) an ist, startet er seinen asterisk server und dieser meldet sich automatisch beim asterisk der auf dem WRT54GL läuft an. Wenn jemand mit seinem SIP Telefon an meinem Router angemeldet ist und mein Rechner an ist, kann er die Nummer "conf" anrufen. Der asterisk auf dem Router gibt dann den Anruf weiter an den asterisk auf meinem Rechner, und mein Rechner verbindet den Anrufer zur Telefonkonferenz.
D.h. Telefonkonferenzen funktionieren, aber eben nur wenn mein Rechner an ist. Falls nicht können sich aber trotzdem auf dem Router angeldete Telefonnutzer gegenseitig anrufen.




Einrichten des asterisk Servers unter OpenWRT White Russian

ipkg install asterisk installiert uns das Packet.
Jetzt noch die Konfigurationsdateien und die Init Datei einspielen.
/etc/init.d/S97asterisk
/etc/asterisk/sip.conf
/etc/asterisk/extensions.conf
In den Dateien sip.conf und extensions.conf müsst ihr noch die Namen der Clients und ihre Passwörter austauschen. Die in sip.conf eingegebenen Daten werden dann von den Nutzer als Daten zum Login gebraucht.
Wenn ihr in der sip.conf bei bindaddr=IPEueresWRT54GLimOpenVPN eingebt, dann kann man sich nur noch zum asterisk verbinden, wenn man im VPN ist. Sonst kann man sich auch vom normale lokalen Netzwerk auch dorthin verbinden. Eine Verbindung aus dem internet ohne im VPN zu sein ist nicht möglich, da die Firewall diese Zugriffe blockiert.
Die Init Datei muss noch ausführbar gemacht werden:
chmod +x /etc/init.d/S97asterisk
So jetzt könnt ihr schon den asterisk Server starten:
/etc/init.d/S97asterisk start




Clients verbinden

Es gibt viele Programme mit denen man sich jetzt verbinden kann. Und bei allen variiert die Konfiguration etwas. Ich stelle kurz die beiden Programme vor, die ich verwende:
Unter Debian: twinkle (aus den Repositorys)
Unter Windows: SJphone

Erstellt ein neues Profil gebt als registrar die IP eueres WRT54GL im VPN an. Als Benutzername den Clientnamen den Ihr verwenden wollt. (Er muss in der sip.conf eingetragen sein!!) Und als Passwort das, das Ihr in der sip.conf zu dem Clientnamen eingetragen habt.




Der Telefonkonferenz Workaround

Dazu müssen wir auf einem Rechner, der aus PerfomanceGründen im gleichen lokalen Netz wie der WRT54GL hängen sollte, über den wir die Konferenzen laufen lassen wollen asterisk installieren.
Ich zeige das Anhand eines Debian Etch Betriebssystems.
Allerdings nehmen wir nicht das asterisk aus den Repository sondern kompilieren uns es selbst:

apt-get install libpri-dev
cd /usr/src/
wget http://ftp.digium.com/pub/zaptel/zaptel-1.2-current.tar.gz
tar xvzf zaptel-1.2-current.tar.gz
cd zaptel-1.2.17.1
make
make install

cd /usr/src/
wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
tar xvzf asterisk-1.2-current.tar.gz
cd asterisk-1.2.18
make
make install
make samples

cd /usr/src/
wget http://ftp.digium.com/pub/asterisk/releases/asterisk-sounds-1.2.1.tar.gz
tar xvzf asterisk-sounds-1.2.1.tar.gz
cd asterisk-sounds-1.2.1
make install
modprobe ztdummy

Eventuell ist es nötig bei den cd Befehlen andere Verzeichnissnamen anzugeben, falls es bereits neuere Versionen der Programme gibt.

Jetzt haben wir asterisk mit den notwenigen Komponenten installiert. Wir müssen nur noch die Konfigurationsdateien auf dem Rechner und auf dem WRT54GL anpassen.

Zunächst bleiben wir auf dem Rechner und kopieren folgende Dateien:

/etc/openvpn/sip.conf
/etc/openvpn/extensions.conf
/etc/openvpn/meetme.conf
Die Namen der Clients in der sip.conf müssen identisch sein mit denen in der sip.conf auf dem WRT54GL!

Wir müssen nun folgende Dateien auf dem Router plazieren:
/etc/openvpn/sip.conf
/etc/openvpn/extensions.conf
Wie oben bereits beschrieben müssen wir in beiden sip.conf jeweils die Namen der Clients und ihre Passwörter ändern.
Dabei müssen die Namen identisch sein. Beachtet bitte, dass in der sip.conf, die auf dem rechner liegt keine Passwörter eingegeben werden.
Der Namen asterisk in der sip.conf auf dem Rechner ist der name Routers, und umgekehrt obelisk der Name des Rechners. Diese könnt ihr so lassen. Bitte ändert aber das Passwort für asterisk und obelisk. Nicht vergessen, dass dieses PW dann auch beim register Befehl in der sip.conf (auf beiden) geändert werden muss.
Ihr könnt selbstverständlich auch mehr als drei Benutzer anlegen. Einfach im gleichen Format, wie die vorherigen, mit hineinschreiben und die extension.conf auf dem WRT54GL ergänzen.
Der asterisk Server auf dem WRT54GL startet eh automatisch, der auf dem Rechner kann von Hand mit
asterisk -c -vvvvv gestartet werden. Wobei das -c dafür steht das er was auf die Kommandozeile ausgibt, also nicht im Hintergrund gestartet wird, und die Anzahl der v bestimmt, wieviele Informationen er auf die Kommandozeile ausgibt.
Ihr könnt selbstverständlich auch einfach die init Datei benutzen:
/etc/init.d/asterisk start




Hier gehts zur Firewall shorewall.