Telefonieren mit Asterisk (II)

Asterisk LogoWer einen Asterisk Server installiert hat und einen Blick in den Ordner mit den Konfigurationsdateien wirft, wird eine Überraschung erleben: Es gibt – je nach Version und Distribution – rund 30 Konfigurationsdateien. Dies braucht den Einsteiger jedoch nicht zu beunruhigen, denn um eine simple Testkonfiguration zu erstellen, genügt das Anpassen von zwei Dateien. Das folgende Beispiel zeigt, wie eine Minimalkonfiguration erstellt werden kann: Diese besteht aus zwei Telefonen, die via Asterisk Server miteinander kommunizieren können. Anstelle der Telefone können als Endgeräte auch PC’s mit sogenannten Softphones verwendet werden. Ich gehe im folgenden davon aus, dass es ein lokales Netz gibt, an dem bereits ein Linux Server und zwei PC’s angeschlossen sind. Auf dem Linux Server ist zudem Asterisk installiert, die Konfigurationsdateien befinden sich unter /etc/asterisk.

Name und IP der verwendeten Rechner:

Linux Server: bigfoot [192.168.10.1]
PC 1 (Endgerät): phone1 [192.168.10.2]
PC 2 (Endgerät): phone2 [192.168.10.3]

Wichtig: Zwischen den beiden PC’s und dem Linux Server darf keine Firewall stehen! Asterisk unterstützt Konfigurationen mit Firewalls, einfachheitshalber wird hier aber nicht weiter darauf eingegangen.

In einem ersten Schritt geht es darum, die beiden PC’s, auf denen später Softphones installiert werden, beim Asterisk Server anzumelden. Es gibt mehrere Protokolle, die dafür verwendet werden. Wir werden im folgenden das zurzeit populärste Protokoll verwenden: Das Session Initiation Protocol, kurz SIP. Alle zu verwendenden SIP-Geräte werden in der Datei sip.conf eingetragen. Mit einem Editor wie joe oder vi wird also sip.conf editiert und folgendes an das Ende der Datei geschrieben:

[pc1]
type=friend
username=pc1
secret=dolittle
host=dynamic

[pc2]
type=friend
username=pc2
secret=dolittle
host=dynamic

Es handelt sich hier nur um das absolut nötigste, damit ein Endgerät sich anmelden kann. Weitere Informationen zu sip.conf und den Parametern für SIP Konti gibt’s auf voip-info.org, dem zurzeit umfassendsten Angebot rund um das Thema VoIP. Die beiden Konfigurationsblöcke definieren zwei SIP Konti pc1 und pc2. Die Username’s, die für das Login benötigt werden, lauten genau gleich: pc1 und pc2. Das für die Anmeldung benötigte Passwort wird mit secret festgelegt. Ich habe für beide Konti dasselbe Passwort verwendet, was für die Praxis natürlich nicht zu empfehlen ist. In einer produktiven Umgebung sollten auch stärkere Passwörter zur Anwendung kommen.

Mit type=friend wird festgelegt, wie eine Verbindung zwischen dem Endgerät und dem Server zustande kommt: Die Option friend bestimmt, dass von beiden Seiten eine Verbindung aufgebaut werden kann. Die beiden anderen möglichen Optionen lauten user und peer.

host definiert, unter welcher Adresse das Endgerät erreicht werden kann. Wir könnten hier auch die Hostnamen der verwendeten PC’s eintragen (phone1/phone2). Mit der Option dynamic geben wir an, dass die Adresse nicht bekannt ist, also zur Laufzeit ermittelt wird, wenn das Endgerät sich anmeldet. In einer produktiven Umgebung ist es angezeigt, die Host Adresse anzugeben, wenn sie bekannt ist. Die Option dynamic wird häufig verwendet, wenn die Endgeräte ihre Adresse dynamisch per DHCP beziehen und keinen eindeutigen Hostnamen haben.

Die Konfiguration der SIP Endgeräte ist damit abgeschlossen. Hat doch nicht weh getan, oder? Damit könnte nun bereits ein Softphone auf einem PC konfiguriert und angemeldet werden. Das wäre aber auch schon alles; die Eingabe einer Nummer würde nur zu einem Fehler führen. Wir müssen Asterisk als nächstes mitteilen, was geschehen soll, wenn eine bestimmte Nummer auf einem Endgerät gewählt wird. Mit anderen Worten: Wir müssen einen einfachen Wählplan zusammenstellen: Wenn die Nummer 100 gewählt wird, soll das Softphone auf PC 1 läuten und wenn dieser die Nummer 200 wählt, soll sich das Softphone auf PC 2 angesprochen fühlen. Dies ist der denkbar einfachste Wählplan, der in vielen Asterisk-Tutorials zu finden ist.

Bei Asterisk sind alle Einstellungen des Wählplanes in der Datei extensions.conf abgelegt. Lassen Sie sich durch den Umfang der Datei nicht beirren, gewiss sind umfangreiche Wählpläne eine komplexe Angelegenheit; einfachere Konfigurationen bestehen aber dennoch nur aus wenigen, leicht zu verstehenden Direktiven. Wenn Sie einen Asterisk Server aufbauen, werden Sie nach und nach mit allen Konzepten und Möglichkeiten des Wählplans vertraut werden. Öffnen sie als nächstes extensions.conf und tragen Sie am Ende der Datei folgendes ein:

exten => 100, 1, Answer
exten => 100, n, Dial(SIP/pc1, 60)
exten => 100, n, Hangup

exten => 200, 1, Answer
exten => 200, n, Dial(SIP/pc2, 60)
exten => 200, n, Hangup

Sobald Sie mit einen verbundenen Endgerät eine Nummer wählen, durchsucht Asterisk den Wählplan nach dieser Nummer. findet er eine entsprechende Extension, führt er die darin aufgeführten Komandos solange aus, bis eine der beiden Gegenstellen das Gespräch beendet. Wählen Sie zum Beispiel die Nummer 200, findet Asterisk die Extension 200 und führt das erste Komnando aus: Answer. Damit wird der Server angewiesen, den Anruf entgegenzunehmen. Das nächste Kommando, Dial, bildet bereits den Kern der ganzen Sache: Es ruft das Endgerät pc2 an und stellt eine Verbindung her, wenn das Gespräch entgegengenommen wird. Mit anderen Worten: Wählt PC 1 die Nummer 200, klingelt bei PC 2 60 Sekunden lang das Softphone. Wird das Gespräch entgegengenommen, kommt eine Sprechverbindung zustande. Nimmt PC 2 nicht ab, kommt nach 60 Sekunden die nächste Anweisung im Wählplan zum Zuge: Hangup. Damit endet die Verbindung.

Wichtig: Die Anweisungen einer Extension werden nicht in der Reifenfolge abgearbeitet, wie sie in der Datei stehen. Vielmehr entscheiden Prioritäten darüber, welche Anweisung als nächstes zum Zuge kommt. Prioritäten müssen in aufsteigender, lückenloser Reihenfolge notiert werden. Um die Sache etwas einfacher zu machen, kann wie in unserem Beispiel anstelle der Aufzählung (1..2..3) auch die Priorität ’n‘ (next) verwendet werden. Prioritäten können ähnlich wie in alten BASIC-Dialekten als Sprungmarken verwendet werden.

Nun ist es an der Zeit, den Server zu starten und die Endgeräte anzumelden. Asterisk wird üblicherweise beim Booten als Hintergrundprozess gestartet. Um Asterisk als Daemon zu starten, genügt es, den Programmnamen einzugeben: asterisk. Wenn keine Fehlermeldungen angezeigt werden, können Sie davon ausgehen, dass Ihre Einträge in den Konfigurationsdateien in Ordnung sind. Wir wollen jedoch genau wissen, was der Server tut und starten ihn deshalb im Konsolenmodus. In diesem Modus wird – ähnlich einer UNIX Shell – eine Eingabeaufforderung angezeigt. Sie können durch die Eingabe von Kommandos den Status des Systems prüfen, einzelne Konfigurationsdateien neu laden und tausend weitere Dinge tun. Eine Übersicht der verfügbaren Kommandos erhalten Sie durch die Eingabe von help. Starten Sie Asterisk nun wie folgt:

asterisk -vvvvvc

Dies startet den Server und bringt Sie sofort in den Konsolenmodus. Die 5 Buchstaben ‚v‘ setzen den Verbosity Level auf 5. Asterisk zeigt in diesem Level alle wichtigen Ereignisse auf der Konsole an. Sie können den Level mit dem Kommando set verbose 0-12 jederzeit neu setzen. Im Level 12 bekommen Sie nahezu alles angezeigt, was Asterisk tut, im Level 0 herrscht stoische Ruhe auf der Konsole. Setzen Sie für den folgenden Test den Level auf 12.

Wenn Sie Asterisk wieder beenden wollen, geben Sie stop now ein. Falls Asterisk bereits als Hintergrundprozess läuft, können Sie mit folgendem Kommando zur Konsole gelangen: asterisk -r. Mit exit verlassen Sie die Konsole wieder, ohne dass auch Asterisk beendet wird.

Da der Server nun für unseren Test betriebsbereit ist, können wir uns der Konfiguration der Endgeräte, resp. der Softphones auf den PC’s zuwenden. Ich werde im folgenden das Softphone Ekiga für Linux verwenden. Die Konfiguration kann aber leicht auch auf andere Programme übertragen werden, etwa auf das X-Ten Softphone, das auf verschiedenen Plattformen läuft. Bei Ekiga ist es ein Leichtes, ein SIP Konto zu erstellen. Wenn Sie Ekiga das erste Mal starten, erscheint der Konfigurations-Druide. Nehmen Sie sich einen Moment Zeit und legen die die Programmparameter fest. Wenn Sie gefragt werden, ob Sie ein kostenloses Ekiga.net Konto anlegen wollen, wählen Sie die Checkbox „Überspringen“.

Sobald Sie den Konfigurations-Druiden durchlaufen haben, wählen Sie im Menu Bearbeiten => Konten und im folgenden Dialog die Option Hinzufügen. Nun können Sie die Parameter für das SIP Konto festlegen, im folgenden Beispiel konfigurieren wir PC 1:

Speichern Sie nun diese Einstellungen und schliessen Sie den Dialog mit den Konten. In der Statuszeile von Ekiga sollte nun eine Meldung wie die folgende erscheinen: Ekiga ist bei 192.168.10.1 angemeldet. Ebenso sollten Sie auf der Asterisk Konsole eine Meldung sehen, dass sich ein Endgerät verbunden hat:

-- Registered SIP 'pc1' at 212.101.1.113 port 5061 expires 3600
-- Saved useragent "Ekiga/2.0.1" for peer pc1

Geschieht nichts? Dann kontrollieren Sie bitte alle Einstellungen noch einmal. Sind die beiden Geräte untereinander erreichbar? Haben Sie eine Firewall aktiv, welche die SIP Ports blockiert? Läuft Asterisk? Um Gewissheit darüber zu haben, ob ein Engerät erfolgreich angemeldet ist, geben Sie auf der Konsole folgendes ein: sip show peers. Es sollte für PC 1 folgendes angezeigt werden:

pc1/pc1 192.168.10.2 5061 OK (5 ms)

Haben Sie beide Endgeräte konfiguriert und angemeldet? Nun, dann geben Sie jetzt im Ekiga auf PC 1 in der Wählleiste die Nummer 200 ein und klicken Sie auf das Verbindungssymbol:

Auf PC 2 sollte nun das Softphone klingeln. Sobald Sie den Anruf entgegennehmen, wird ein Gesprächskanal aufgebaut. Auf der Konsole werden Sie ausserdem eine Menge Meldungen sehen. Falls etwas nicht klappt, analysieren Sie die Konsolenmeldungen; Asterisk ist in bezug auf Fehlermeldungen sehr detailliert.

Sicher, nach dem ersten Erfolgserlebnis wird die Ernüchterung kommen, denn die nun erreichte Konfiguration dient bestenfalls als Gegensprechanlage. Der nächste Teil zeigt wie Sie via SIP Provider auch externe Gespräche führen und entgegen nehmen können.

Ein Gedanke zu „Telefonieren mit Asterisk (II)

  1. Pingback: Benjamin Stocker » Telefonieren mit Asterisk (III)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert