Parcellite – Clipboard Utility für Linux

Utilities sind praktische, kleine Hilfsprogramme, die meist unspektakuläre, aber sehr wertwolle Dienste verrichten, die das tägliche Arbeiten am PC erleichtern. Heute möchte ich so in Hilfsprogramm vorstellen, das auf allen X-basierten Linux und UNIX-Desktops verwendet werden kann: Parcellite. Was Parcellite tut, ist denkbar simpel, erweist sich aber immer wieder als äusserst nützlich und zeitsparend. Es erstellt ein History der X-Windows Zwischenablage und ermöglicht es so, jeden Eintrag aus diesem History zu einem späteren Zeitpunkt wieder aus der Zwischenablage einzufügen. Das ist – generell gesagt – bereits alles.

Im Detail kann Parcellite aber noch einiges mehr. So ist es möglich, den zuletzt eingefügten Text zu bearbeiten. Um ein rasches Einfügen zu ermöglichen, können Inhalte wahlweise über ein Tray-icon oder über eine frei wählbare Tastenkombination eingefügt werden. Und auf Wunsch können Inhalte aus dem Clipboard an eine zuvor definierte Applikation übergeben werden. Auch in bezug auf die Einstellungen geizt Parcellite nicht: nebst der Grösse des Verlaufes können die verschiedensten Verhaltensweisen dieses praktischen Helfers verändert werden.

Alphorntrio Steiweid spielt auf

Ein langer Winter neigt sich seinem Ende zu und beim Spazieren über Feld und Wald sind überall die Botschafter des Frühlings zu finden. Auch die Alphornbläser werden nun wieder aktiv, proben im Freien und geben ihre ersten Konzerte. So ist auch das Alphorntrio Steiweid bald wieder zu hören. Der erste Auftritt erfolgt am kommenden Ostergottesdienst im reformierten Kirchgemeindehaus Aeschi (SO). Wir freuen uns auf den Auftritt und hoffen, dass unsrere Alphornmelodien eine Bereicherung für die Feier sein werden.

Es Gschänkli us em Ämmitau

Bald geht wieder ein Jahr zu Ende, die Adventszeit hat begonnen, Weihnachten ist nicht mehr fern. Wie wäre es dieses Jahr mit einem Geschenk aus dem Emmental unter dem Weihnachtsbaum? Hier ein paar Ideen:

Süssigkeiten: Konditorei Gerber

Konditorei Gerber

In der kleinen Konditorei mitten im Emmentaler Dorf Sumiswald ist alles noch echt. Alle Köstlichkeiten, die es hier zu kaufen gibt, werden von Hand und mit viel liebe zum Detail hergestellt. Marianne und Ernst Gerber sind Meister ihres Faches und freuen sich, Sie mit auserlesenen Spezialitäten zu verwöhnen: Hausgemachte Schokolade-Spezialitäten, Pralinen, Konfekt, verschiedene Torten und Hochzeitstorten. » Mehr Infos

Ämmitaler Ruschtig

Ammitaler RuschtigDas Emmental ist berühmt geworden für feinen Käse, dessen unverkennbares Markenzeichen die grossen Löcher sind. Die Region hat aber noch andere Köstlichkeiten zu bieten. Als Jeremias Gotthelf das Essen bei einer Taufe beschrieb, schloss er euphorisch mit der Feststellung, dass selbst der König von Frankreich solche Sachen nicht auf den Tisch bekomme. Fleisch, Käse, Backwaren und viele andere chüschtige Sachen gibt es bei Emmepro zu bestellen.

Wärchschür der Heimstätte Bärau

Heimstätte BärauIn der Werkscheuer der Heimstätte Bärau werden die verschiedensten Handarbeiten verkauft, die von Bewohnern und Bewohnerinnen der Heimstätte hergestellt worden sind. In dem schönen und liebevoll gestalteten Laden gibt es Kleider, Spielsachen, Modeschmuck, Hand- und Tischtücher und vieles mehr zu kaufen. Ein Besuch lohnt sich.

Kohler Keramik

Kohler KeramikUlrich Kohler führt die älteste Töpferei im Emmental, die Geschichte der Werkstatt reicht zurück bis in das Jahr 1969, einer Zeit, in der es noch Chacheliflicker gab, die von Hof zu Hof zogen, um zerbrochenes Geschirr zu heften. Chacheliflicker gibt es heute keine mehr, aber in Schüpbach werden noch Töpferwaren hergestellt, die an Schönheit und Glanz auch nach Jahrhunderten nichts verlieren.

Sachen aus Holz

Puzzle aus Holz«Holz ist heimelig», der Werkstoff aus dem Wald strahlt Wärme und Natürlichkeit aus, fühlt sich nicht nur in Kinderhänden angenehm an und setzt einen Kontrapunkt zum alltäglichen Kunststoff. In seinem Langnauer Atelier fertigt der Schreiner und Künstler Heinz Hofer Tierskulpturen und Spielsachen erster Güte, die viel Freunde bereiten.

Infos zu TR-069

Die Abkürzung «TR-069» steht für «Technical Report 69». Eine Bezeichnung die ideenlos, wenn nicht gar langweilig klingt. Aber das wofür TR69 steht, sorgt zurzeit für Kontroversen. TR69 wird als «Einfallstor für Spionagesoftware» oder gar als «Modem-Trojaner» bezeichnet. Was ist dran an diesen Behauptungen? Der folgende Artikel enthält eine kurze Einführung zum Thema.

TR69 ist bei Lichte betrachtet nicht mehr als ein Protokoll, das die Kommunikation zwischen einem Endgerät und einem Kontrollserver regelt. Endgeräte werden CPE’s (Customer Premises Equipment) genannt und sind in aller Regel Endgeräte beim Kunden: DSL-Modems, Router, ATA-Boxen, usw. CPE kann per Definition aber auch weiter gefasst werden. Nahezu bei jeder Komponente in einem Netzwerk kann TR69 zum Einsatz kommen. Auf der anderen Seite steht der Kontrollserver, der ACS (Access Control Server) genannt wird. Seine Aufgabe besteht darin, vermöge des TR69 Protokolles Informationen mit einem CPE auszutauschen. Dabei ist klar geregelt, wie die Kommunikation aufgebaut ist, welche Informationen dabei fliessen und welche Authorisierungsmechanismen zum Zuge kommen. Die erste wichtige Frage lautet nun aber: was sind das für Informationen, die ausgetauscht werden?

Leistungsumfang

Um diese Frage beantworten zu können, muss kurz auf das Leistungsspektrum von TR69 eingegangen werden. Dieses umschliesst drei Funktionen zur automatischen Fernkonfiguration und Fernwartung eines CPE:

  1. Konfiguration – Um die Konfiguration eines CPE beim Kunden zu erleichtern sieht TR69 vor, dass ein CPE nach der ersten Inbetriebnahme mit einem ACS Kontakt aufnimmt und von diesem seine Basiskonfiguration erhält. Dabei ist genau festgelegt, welcher (oder welche) ACS für diese Operation in Frage kommen. Bei DSL-Modems ist dies der DSL-Provider, mit dem der Kunden einen Vertrag abgeschlossen hat.

    Im Detail funktioniert das Spiel so: Das CPE bestimmt, welche Konfigurationsparameter von einem ACS abgefragt und verändert werden können. Beim einer Fritz!Box 7170 sind dies mehr als 400 Parameter! Das CPE liefert dem ACS auf Anfrage eine Liste dieser Parameter und ihrer Werte. Der ACS kann nun seinerseits diese Werte verändern und an das CPE zurück senden. Dieses Abfragen und Modifizieren von Parametern auf dem CPE kann beliebig oft vom ACS initiiert werden, ist also nicht an die Erstkonfiguration des CPE gebunden.

  2. Firmware Upgrade – TR69 beschreibt einen Mechanismus, der das Aktualisieren der CPE-Firmware, also zum Beispiel der Betriebssoftware auf dem DSL-Modem ermöglicht. Hierbei erhält das CPE eine enstprechende Anfrage vom Server, in der enthalten ist, wo eine neue Version der Firmware heruntergeladen werden soll. Der ACS sendet dem CPE also nicht die Firmware selbst, sondern nur eine Adresse, von der die Firmware heruntergeladen und installiert wird. In der Regel ist dies eine durch Passwort geschützte Datei auf einem Webserver des Providers.
    Der Vollständigkeit halber muss erwähnt werden, dass die Download-Funktion noch weitere Optionen bietet. Neben der Firmware ist auf einigen Geräten der Austausch von Webseiten des integrierten Webservers oder von anderen Dateien möglich. Bei der Download-Operation wird jeweils ein Funktionsnummer mitgeliefert, die den Typ des Downloads bestimmt.
  3. Wartung – Dazu gehören Funktionen wie das Auswerten von Logdateien, das Ermitteln von Traffic-Statistiken oder ein Neustart des Gerätes.

Sicherheit

Grundsätzlich gilt: Wer mit TR69 auf ein CPE zugreifen kann, ist klar festgelegt. Der TR69 Client auf einem CPE enthält die IP-Adresse eines ACS und die Authorisierungsparameter (Benutzername/Passwort), die vom ACS bei jeder Sitzung mitgeliefert werden müssen. Damit Passwörter nicht im Klartext durch das Netz gesendet werden, kommen SSL oder eine HTTP Digest-Authorisierung zum Einsatz. Obwohl TR69 ein asynchrones Protokoll ist, erfolgt der Aufbau einer Sitzung stets vom CPE aus. Dieser Sitzungsaufbau erfolgt periodisch, kann aber auch nach bestimmten Ereignissen (z.B Reboot) initiiert werden. Beim Sitzungsaufbau sendet das CPE eine sogenannte «Inform» Anfrage an den ACS. Dieser entscheidet dann, was damit zu geschehen hat. Antwortet er gemäss den TR69 Regeln auf die Anfrage, kommt die Sitzung zustande und der Server kann nun seinerseits Anfragen an das CPE stellen.

Eine Sitzung kann auch vom ACS eingeleitet werden. Dazu sendet der Server eine Anfrage an eine vom CPE festgelegte Webadresse. Die Anfrage ist jedoch nur gültig, wenn der ACS sich korrekt authorisiert. Dazu muss der Server eine Benutzer/Passwort-Kombination senden, die auf dem Modem vor der Auslieferung gespeichert worden ist und vom ACS nicht verändert werden kann! Zusätzlich empfiehlt TR69, dass die vom CPE zur Verfügung gestellte Adresse nach jeder Sitzung verändert wird. Damit wird dem Missbrauch des asynchronen Modus zusätzlich vorgebeugt.

Die meisten CPE Clients sind selbst konfigurierbar: Sie erlaube das Konfigurieren einzelner Funktionen oder können als ganzes ausgeschaltet werden. Bei ZyXEL Modems geschieht dies bequem über ein Menu, das via Telnet erreichbar ist. Bei der Fritz!Box ist es eine Datei tr069.cfg, die im Ordner /var/flash zu finden ist. Dort legt der Besitzer fest, ob er Firmware-Upgrades erlaubt und wie oft sein Gerät eine Session zum ACS initiiert. Duch das Ändern eines Passwortes kann zudem der asynchrone Modus deaktiviert werden. Und wem TR69 gänzlich suspekt ist, dem steht es frei, es komplett auszuschalten.

Für und Wider

Obwohl es grundsätzlich möglich ist, eine Überwachungssoftware via ACS zu installieren, ist die Bezeichnung «Einfallstor für Trojaner» übertrieben und führt zu falschen Ängsten und Verdächtigungen. Denn ausschliesslich der Provider hat Zugriff auf das CPE. Im Alltag ist TR69 nichts anderes als ein Protokoll, das dem Kunden die Arbeit abnimmt, wenn er seinen DSL-Router in Betrieb nimmt. Mit TR69 werden alle wichtigen Parameter für das Gerät beim ACS abgeholt und gespeichert, so dass dass das Gerät sofort betriebsbereit ist. Der Firmware-Upgrade kann den Kunden sogar vor Angriffen schützen, wenn damit Schwachstellen in der Betriebssoftware behoben werden.

Auf der anderen Seite kann TR69 für eine übertriebene Kontrolle des Providers missbraucht werden. Ein wichtiger Schlüssel dazu bieten die Parameter-Attribute. Jeder Parameter eines CPE kann mit zwei Attributen ausgezeichnet werden: «Notify» und «Access». Das Access-Attribut legt fest. wer diesen Parameter einsehen oder ändern darf. Theoretisch ist es möglich, damit den Zugriff des ACS einzuschränken. In der Praxis wird dieses Attribut von den meisten TR69-Clients noch nicht oder nur zum Teil genutzt. Interessanter ist das Notify-Attribut: Es legt fest, was geschieht, wenn der Besitzer des CPE den Wert eines Parameters verändert. Es kann bestimmt werden, dass der neue Wert sofort oder beim nächsten «Notify» (siehe oben) an den ACS gesendet wird. Mit andern Worten: Der Provider kann protokollieren, welche Parameter zu welchem Zeitpunkt vom Kunden verändert worden sind.

Dokumentation

Der Umfang und die Funktionsweise von TR69 ist im Dokument «TR-069 Amendment» genau beschrieben. Leider gebricht es dem Dokument an Struktur und Verständlichkeit. Es ist an vielen Stellen nur schwer verdaulich. Erschwerend kommt hinzu, dass der mehr als 100 Seiten umfassende Text nicht ein einziges Beispiel gibt. Wer also selbst eine TR69-Schnittstelle entwickeln will, steht einigen Schwierigkeiten gegenüber. Als weitere Informationsquelle kann der englische Wikipedia-Artikel genannt werden. Dieser enthält eine gute Zusammenfassung der Materie sowie Links zu einigen kommerziellen ACS-Anbietern.

…Ist das alles? Ja, leider. Jedenfalls im Moment. Ich habe selber eine ACS-Software entwickelt und viel Zeit damit verbracht, im Internet nach Informationen zu recherchieren. Die beiden gebotenen Links bleiben vorerst das spärliche Ergebnis dieser Suche. Auch wer nach freier Software fragt, wird enttäuscht. Denn im Moment gibt es noch keine TR69-Projekte.

Telefonieren mit Asterisk (III)

Asterisk LogoDer letzte Teil hat gezeigt, dass die Konfiguration einfacher Aufgaben leicht zu bewerkstelligen ist. Mit ein paar Zeilen in den Konfigurationsdateien extensions.conf und sip.conf kann eine einfache, hausinterne Telefonanlage aufgebaut werden. Die Aufgabe bestand darin, zwei Telefone via SIP mit dem Server zu verbinden und einen möglichst einfachen Wähplan zu erstellen, so dass zwischen den beiden Endgeräten Gespräche geführt werden können. Im folgenden soll die Telefonanlage so ausgebaut werden, dass auch externe Gespräche geführt werden können. Genau so, wie mit einem herkömmlichen Telefon, das am Festnetz angeschlossen ist.

Um das Kunststück zu vollbringen, benötigen wir ein VoIP Konto bei einem Schweizer Provider. VoIP Konti für den Heimgebrauch gibt es bei SolNet oder Green bereits für eine Monatspauschale ab Fr. 10.–. Bei beiden Providern gibt es VoIP als eigenständiges Produkt oder als Zugabe zu einem ADSL Abonnement. VoIP Kontos werden meist in Verbindung mit einer ATA Box (Analog-Telefon-Adapter) verwendet, so dass sie auch mit einem handelsüblichen, analogen Telefon genutzt werden können. Eine kurze Beschreibung einer Fritz!Box ATA gibt es hier. Ich verwende im folgenden ein VoIP Konto mit den folgenden fiktiven Zugangswerten:

Telefonnummer: 032 517 81 80
Login: 0325178180
Passwort: horsepower
SIP Server: sip.solnet.ch

ATA Boxen oder SIP-fähige VoIP Telefone können diesen Zugang direkt nutzen, um externe Teilnehmer anzurufen oder Gespräche zu empfangen. Im folgenden Beispiel erweitern wir unsere Konfiguration so, dass der Asterisk Server den VoIP Zugang nutzt. Dies bringt den Vorteil, dass alle am Server angeschlossenen Telefone externe Nummer anrufen können – auch gleichzeitig! Bei eingehenden Gesprächen kann bestimmt werden, welche internen Telefone das Gespräch entgegennehmen können.

Bei einigen Providern können zusätzliche Telefonnummern zu einem VoIP Konto bestellt werden, so dass jedem Telefon eine externe Nummer zugewiesen werden kann. Wir werden uns vorerst mit einer Nummer begnügen. Die Konfiguration unserer Anlage sieht dementsprechend wie folgt aus:

Beide im letzten Kapitel angeschlossenen Telefone können externe Nummern wählen und werden dann via Asterisk und dem VoIP Provider mit dem gewünschtne Teilnehmer verbunden. Falls das Telefon des Angerufenen eine Nummernanzeige hat, erscheint dort die Nummer des VoIP Kontos, also 032 517 8180. Mit Asterisk ist es möglich, zusätzlich zur Nummer auch einen Namen anzugeben. Es gibt eine Vielzahl an Möglichkeiten, die Caller ID (CID) zu manipulieren. Ruft ein externer Teilnehmer an, klingeln beide am Asterisk angeschlossenen Telefone.

In der Datei sip.conf müssen die folgenden Ergänzungen angefügt werden:

register => 0325178180:horsepower@sip.solnet.ch/0325178180

Damit wird der Asterisk Server angewiesen, sich beim VoIP Provider mit der Nummer 0325178180 zu registrieren. Der SIP Proxy beim Provider wird damit informiert, an welche Adresse im Internet ein eingehendes Gespräch weitergeleitet werden muss. Ruft jemand die Nummer 0325178180, gelangt das Gespräch zum VoIP Provider und dieser leitet es an unseren Asterisk Server weiter. Damit auch unser Server weiss, was er mit dem eingehenden Anruf zu tun hat, schreiben wird noch folgendes in sip.conf:

[sip-inout-0325178180]
type=peer
secret=horsepower
username=0325178180
fromuser=0325178180
host=sip.solnet.ch
context=default
insecure=very

Dieser Konfigurationsblock bewirkt zweierlei: Er wird einerseits benötigt um ausgehende Gespräche über den Wählplan zu initiieren. Andererseits dient er der Zuweisung eines externen Gespräches an einen Benutzer: Ruft jemand von extern auf unsere Nummer, durchsucht Asterisk alle Einträge in dieser Datei nach einem Namen, der mit der gewählten Nummer übereinstimmt. Wird ein Eintrag gefunden, gelten alle für diesen Benutzer festgelegten Parameter. Anschliessend wird im Wählplan eine passende Extension gesucht. Die Direktiven fromuser, insecure und context können in den meisten Fällen weggelassen werden. Ich habe sie trotzdem in das Beispiel aufgenommen, um sicherzustellen, dass das Beispiel funktioniert. Zum Schluss muss extensions.com noch wie folgt erweitert werden.

; Eingehende Anrufe
exten => 0325178180, 1, Dial(SIP/pc1&SIP/pc2,60)
exten => 0325178180, n, Hangup
; Ausgehende Anrufe
exten => _X., 1, Dial(SIP/${EXTEN}@sip-inout-0325178180, 120)
exten => _X., n, Hangup

Die erste Extension regelt die Zuweisung eines eingehenden Anrufes. Wird die Nummer 0325178180 gewählt, gelangt der Anruf via VoIP Provider auf unseren Asterisk Server. Dieser weist den Anruf dem internen SIP Konto sip-inout-0325178180 zu und sucht dann im Wählplan eine zur gewählten Nummer passende Extension. Diese wird in der zweiten Zeile nach dem Kommentar gefunden und ausgeführt. Mit Dial wird erreicht, dass beide Endgeräte, also die Softphones auf PC 1 und PC 2 während 60 Sekunden läuten. Wird auf einem der Geräte der Anruf entgegengenommen, kommt das Gespräch zustande. Das Dial Kommando kann also mehrere Telefone ansprechen, die SIP Kontos müssen lediglich durch ein ‚&‘ voneinander getrennt werden. Sollen mehrere Teilnehmer einen Anruf entgegennehmen können, bieten sich die Queues an. Queues sind wesentlich flexibler und erlauben die verschiedensten Optionen zur Steuerung.

Die Zeilen fünf und sechs, die dem zweiten Kommentar folgen, regeln das Verhalten des Servers bei ausgehenden Gesprächen. Als Extension verwenden wir hier ein Suchmuster, das auf eine beliebige Zahlenfolge der Ziffern 0 bis 9 zutrifft:

  • Eingeleitet werden Suchmuster im Wählplan stets mit einem Unterstrich (_). Asterisk erkennt daran, dass im folgenden keine Nummer kommt, sondern einer oder mehrere Platzhalter für Ziffern.
  • Ein ‚X‘ steht für eine beliebige Ziffer im Bereich 0 bis 9. Für Zahlenbereiche von 1 bis 9 kann ‚Z‘ verwendet werden, Bereiche von 2 bis 9 werden mit ‚N‘ notiert.
  • Der Punkt ist ein Platzhalter für eines oder mehrere Zeichen. _X. bedeutet somit: Eine oder mehrere Ziffern im Bereich 0 bis 9. So einfach ist das :-)

Wird nun eine Nummer wie zum Beispiel 0326143754 gewählt, geschieht folgendes: Asterisk sucht im Wählplan eine passende Extension und wird beim Suchmuster _X. fündig. Nun wird die gewählte Nummer, die in der Variablen ${EXTENSION} gespeichert ist, gewählt. Dazu wird wiederum das SIP Protokoll verwendet. Als Erweiterung kommt hinzu, dass wir den zuvor definierten SIP Peer verwenden. Dieser leitet das Gespräch anhand der Login- und Server Parameter an den VoIP Provider weiter. Dies geschieht einfach dadurch, dass wir am Ende der zu wählenden Nummer mit einem Klammeraffen angeben, welcher Peer für den Gesprächsaufbau verwendet werden soll.

Nun geht’s an’s ausprobieren. Zuvor muss aber dem Asterisk Server mitgeteilt werden, dass die Konfigurationsdateien neu geladen werden müssen. Öffnen Sie mit asterisk -r eine Konsole und geben Sie die beiden folgenden Kommandos ein:

extensions reload
sip reload

Falls jetzt keine Fehlermeldungen angezeigt werden, sind die Aenderungen akzeptiert worden und Sie können mit den Tests beginnen. Stellen Sie einen hohen verbose Level ein, um zu sehen, was im System vor sich geht.

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.

Telefonieren mit Asterisk (I)

Asterisk Logo«…Was soll ich machen? Eine virtuelle PBX? Was um alles in der Welt ist das!?» Ich gebe es freimütig zu, ich hatte den Begriff «PBX» wirklich nie zuvor gehört. Dass hängt damit zusammen, dass ich bisher mit Telefonie so gut wie nichts zu tun hatte und mich für Telefone bis vor einigen Wochen auch kaum interessierte. Telefone waren für mich eher etwas langweiliges.

Also, PBX ist die Abkürzung für «Private Branch Exchange» und kann am einfachsten mit «Telefonanlage» übersetzt werden. Klingt ganz einfach, oder? Ist es aber nicht! Denn damit begeben wir uns in ein Fachgebiet, das eine unstillbare Neigung zur Unübersichtlichkeit und Komplexität hat. Das hängt damit zusammen, dass vieles neu und die Dokumentation dementsprechend spärlich ist.

Durch die zunehmende Rechenleistung und erhöhte Bandbreite in den weltumspannenden Netzen haben sich in den vergangenen Jahren verschiedene Technologien entwickelt, die das Telefonieren auf IP-Basis ermöglichen. Als Trägermedium dient also nicht mehr ein herkömmliche Telefonleitung sondern ein Computernetzwerk. Digitale Telefonzentralen ermöglichen es, eine firmen- oder hausinterne Telefonanlage aufzubauen, die weniger als herkömmliche Zentralen kostet, dafür aber in bezug auf Funktionsumfang und Flexibilität einiges mehr bietet.

Wer sich mit digitaler Telefonie beschäftigt, wird rasch mit einer Unmenge an Fachbegriffen konfrontiert: VoIP, SIP, IAX, DTMF, H232, OpenSER, Voicemail, etc. etc. Um mir ein Bild der der Sache machen zu können, habe ich mich zuerst durch die Online-Dokus der verschiedenen Websites durchgelesen, die sich mit diesem Thema beschäftigen. Etwas frustriert stellte ich dann fest, dass es nicht ganz simpel ist, sich einen Überblick zu verschaffen und etwas Ordnung in das umfangreiche Angebot zu bringen. Ein guter Einstiegspunkt ist nach meiner bisherigen Erfahrung voip-info.org. Die Wiki-Seite ist zwar stellenweise ziemlich chaotisch, aber sie enthält einen Bereich für Einsteiger, der die verschiedenen Möglichkeiten, Techniken und Produkte vorstellt.

Asterisk, der Alleskönner

Eher früher als spät taucht der Begriff «Asterisk» auf, eine von Digium entwickelte Software-Telefonanlage, von der eine kommerzielle, aber auch eine freie, GPL-lizensierte Version gibt. Asterisk läuft auf den verschiedensten UNIX-Varianten, benötigt – je nach Verwendungszweck – keine zusätzliche Telefoniehardware und stellt durch einen modularen Aufbau eine Myriade an Funktionen zur Verfügung. Dabei ist das System in bezug auf die Ressourcen dennoch genügsam, ein kleines System mit bis zu 10 SIP-Telefonen läuft auf einem Server mit einer 700Mhz Intel-CPU mit 256 MB RAM problemlos.

Aber was genau ist Asterisk? Die Software als Telefonanlage zu bezeichnen ist zwar nicht falsch, aber eine glatte Untertreibung, denn Asterisk kann wesentlich mehr! Ausserdem muss Asterisk entsprechend konfiguriert und mit einem an die Bedürfnisse angepassten Wählplan ergänzt werden, damit es als Telefonanlage verwendet werden kann. Es ist treffender, Asterisk als Baukasten zu bezeichnen, der die Bausteine liefert mit denen verschiedensten Aufgaben gelöst werden können.

Der Wählplan

Das Herzstück des Asterisk Server ist der Wählplan (Dialplan), mit dem festgelegt wird, wer wen anrufen darf und welche Telefone klingeln, wenn eine bestimmte Nummer gewählt wird. Im Wählplan wird ferner festgelegt, wie das System reagiert, wenn ein Teilnehmer nicht abnimmt, besetzt ist oder selbst eine Umleitung definiert hat. Und endlich legt der Wählplan fest, welche externen Anschlüsse von welchen Teilnehmern benutzt werden dürfen und wie diese externen Anschlüsse basierend auf der gewählten Nummer selektiert werden. Und dies sind nur einige Standardfunktionen des Wählplans, er kann noch einiges mehr. Und das erfreuliche an der Sache: Die verschiedenen Kommandos des Wählplanes sind sehr gut dokumentiert und es gibt im Internet viele praxisnahe Beispiele.

Der Wählplan kann mit der Makrosprache einer Office-Anwendung verglichen werden. Dort gibt es Kommandos, die Anwendungsfunktionen wie «sortieren», «exportieren» oder «formatieren». Auch die Kommandos des Asterisk Wählplanes operieren auf einem entsprechend hohen Level. Eines der wichtigsten Kommandos ist «Dial». Dial() erwartet als Argument nebst verschiedenen Optionen eine Telefonnummer die in der Folge angerufen wird. Nimmt der Besitzer des angerufenen Telefones ab, kommt eine Verbindung zustande und Dial() bleibt solange aktiv, bis einer der Teilnehmer den Hörer auflegt oder die Verbindung anderweitig unterbrochen wird. Anschliessend wird das nächste Kommando im Wählplan ausgeführt, in einfacheren Beispielen ist dies meist «Hangup».

Anständige Makrosprachen ermöglichen auch Konstrollstrukturen, also das Verzweigen innerhalb des Makros, sobald gewisse Bedingungen erfüllt sind. Beim Wählplan ist dies nicht anders. Beispielsweise kann entsprechend reagiert werden, wenn eine externe Leitung vorübergehend nicht verfügbar ist oder wenn ein Teilnehmer seinen Appart auf «DND» (Do not disturb) gestellt hat. Im Wählplan können ausserdem externe ähnlich der CGI-Spezifikation Scripts aufgerufen werden, eine Gruppe von Anweisungen lässt sich in einem Makro zusammenfassen und beliebige Werte können für eine spätere Verwendung in einer Datenbank gespeichert werden.

Beispiele

Um das ganze zu veranschaulichen folgen nun einige praxisbezogene Beispiele, was mit Asterisk ohne grossen Aufwand realisiert werden kann:

snom360.jpg

Kann auch Wetterdaten und Fussballergebnisse anzeigen: snom 360

Aufwerten des privaten Telefonanschlusses durch Voicemail, Ansagetext und Anrufumleitung. Die Einstellungen können je nach Tageszeit ändern, so dass in der Nacht garantiert Ruhe herrscht. Einzelne Nummern oder auch ganze Nummernbereiche können gesperrt werden und eine Auswertung gibt Auskunft über alle ein- und ausgehenden Anrufe.

Teilen eines privaten Telefonanschlusses durch das Anschliessen mehrerer Telefone an einen Asterisk Server. Damit können intern kostenlos Gespräche geführt werden und wer eine externe Nummer wählt, wird automatisch weiterverbunden. Selbstverständlich können wiederum alle Funktionen aus dem ersten Beispiel genutzt werden.

Flexible und preiswerte KMU Telefonzentrale. Mit einem Asterisk Server wird das interne Firmennetz für die Telefongespräche genutzt. Alle angestellten erhalten eine Nummer für die interne Kommunikation. Wer externe Anrufe entgegennehmen können muss, bekommt zusätzlich eine externe Nummer, die global erreichbar ist. Für die verschiedenen Abteilungen der Firma können Gruppennummern definiert werden. Wer häufig im Aussendienst arbeitet, kann Gespräche per Knopfdruck auf ein Mobiltelefon umleiten oder ad hoc einen Ansagetext hinterlassen. Ausserhalb der Bürozeiten erhalten Anrufer eine entsprechende Meldung und können ihr Anliegen dem Voicemail-Dienst anvertrauen. Es können Konferenzgespräche geführt und direkte Verbindungen mit Partnerfirmen erstellt werden. Mit entsprechender Ausstattung sind auch Videokonferenzen möglich.

– Fortsetzung folgt –

RIPE-Tool

ripetool.png

Das RIPE-Tool

IP Ranges werden in Europa von RIPE (Réseaux IP Européens) verwaltet. RIPE legt fest, wem die einzelnen Bereiche gehören und wie diese miteinander in Beziehung stehen. Vereinfacht ausgedrückt. Damit Kunden die ihnen zugewiesenen Bereiche selber verwalten können, stellt RIPE zwei Methoden zur Aktualisierung der RIPE-Datenbank zur Verfügung: Per signierter Mail oder über ein Webserver-API. Wir haben unsere Ranges bisher mit dem ersten Verfahren aktualisiert. Da dies mittlerweile zu einer zeitraubenden Angelegenheit geworden ist, wurde ein Tool entwickelt, welches diese Aufgaben übernimmt.

Soll ein neu zu vergebender Range für einen Kunden reserviert werden, genügt es, diesen aus dem (auch von uns entwickelten) Netzwerk-Tool auszuwählen und anschliessend mit einer Adresse aus dem CRM zu verbinden – fertig! Ebenso leicht sind Aenderungen an der Adresse oder Halterwechsel durchzuführen: IP Range auswählen, Korrekturen anbringen und die Aenderung bestätigen.