Login
Immer anmelden
SSL Login

 
Newsletter
Werbung
Shopping
International Shopping
 
 


Yatego Shopping bei über 10000 Händlern und über
3 Mio. Artikel.


Linux

:

Linux-Bücher

Handy
Shop

  und Computer.

Viele Services

:

Apple iPad Reader,


Ratgeber,

 

Techniktops,

 

Yatego Clicks

  & über 3000

Gutscheine.

 
So, 3. Juli 2005, 00:00

Die eigene VoIP/ISDN-Anlage, Teil 2

Die LinuxBox Fon

  • type - Bezeichnet den Channel-Typen, also SIP, Zap, IAX usw.
  • identifier - Bezeichnet die Telefonnummer (Extension), die gewählt werden soll. Verwirrend ist oft, dass der Channel-Typ Parameter haben kann, die ebenfalls mit slash (Schrägstrich) abgetrennt werden. Während SIP/101 noch eindeutig ist (Wähle 101 auf dem SIP-Channel), ist die Anweisung Zap/g1/101(Wähle 101 auf einem Zap-Channel der Gruppe 1) schon nicht mehr ganz so einfach zu lesen, und bei der Anweisung IAX2/1234:4567@192.168.1.12/101@extern muss man schon genau hinsehen, wo eigentlich die gewählte Nummer steht (Wähle 101 auf dem IAX-Channel zum IAX-Server mit der IP 192.168.1.12, melde dich mit dem Usernamen 1234 und Password 4567 an und wähle dort den Context extern aus)
  • timeout - Timeout in Sekunden
  • options - Bezeichnet eine Reihe von Optionen, die dem Dial-Kommando mitgegeben werden können. Alle Optionen werden direkt hintereinander geschrieben. Die wichtigsten sind:
    • t: Erlaube dem Angerufenen, den Anruf zu transferieren
    • T: Erlaube dem Anrufer, den Anruf zu transferieren
    • r: Generiere einen Klingelton für den Anrufer, bis jemand abnimmt
    • m: spiele MusicOnHold ab, bis jemand abnimmt (Musik statt Klingelton)
    • g: Führe weitere Befehle in diesem Context aus statt nach dem Auflegen abzubrechen
    • A(x): Spiele Ansage x.gsm ab (statt Klingelton)
    • S(n): Lege nach n Sekunden auf, nachdem abgenommen wurde
    Eine vollständige Liste findet sich auf www.voip-info.org.
  • URL - Wird vom Anrufer mitgesendet, falls der Channel dies unterstützt. Optional.

Innerhalb des Dialplans können, ganz ähnlich wie in einem Shellskript, Variablen gesetzt und auch Systemvariablen benutzt werden. Die wichtigste Variable ist ${EXTEN}, welche die gewählte Extension enthält. Diese kann leicht im Zusammenhang mit Extension-Mustern verwendet werden. So besagt die Anweisung

exten => _X.,1,Dial(SIP/${EXTEN})

nichts anderes als "Wähle die gewählte Nummer auf dem SIP-Channel". Eine Liste der Systemvariablen gibt es auf www.voip-info.org.

6. VoIP

Bevor wir zu einigen praktischen Dialplan-Beispielen kommen, sollten wir uns noch näher mit VoIP auseinandersetzen. Wie man Asterisk für normale Telefonie (im Fachjargon PSTN - Public switched telephone network) benutzt, sollte nun einigermaßen klar sein. Aber was ist mit der "Internet-Telefonie"?

Von der Stuktur her gibt es zwei Möglichkeiten.

  1. Man baut sich sein eigenes Netzwerk auf (z.B. kann man seinen Kollegen, Verwandten und Freunden Account-Daten für den Asterisk-Server geben und/oder ENUM-Einträge für die eigenen Telefonnummern vornehmen, gekoppelt mit einem SRV-Record für den eigenen Asterisk-Server in einem öffentlichen DNS-Server)
  2. Man sucht sich ein oder mehrere VoIP-Provider.

Natürlich kann man auch beide Möglichkeiten kombinieren.

Asterisk spricht von sich aus mehere VoIP-Protokolle.

  • H.323 - Die "Mutter" aller VoIP-Protokolle, wird vor allem von älterer Hardware unterstützt, ist aber heute mehr und mehr auf dem Rückzug
  • SIP - Der heutige de facto-Standard
  • MGCP - ein weiteres, eher seltenes VoIP-Protokoll
  • Skinny/SCCP - das VoIP-Protokoll für Cisco-Telefone, teilweise nur rudimentäre Unterstützung
  • IAX2 - das Asterisk-eigene VoIP-Protokoll

Obwohl SIP der heutige Standard ist, ist dieses Protokoll nicht optimal. Probleme mit NAT und Firewalls gehören zum täglichen Brot von denjenigen, die SIP-Server (bestehend aus Registrar, Proxy und Location Server) aufsetzen. Dies hängt damit zusammen, das SIP eigentlich aus drei Protokollen besteht: SIP, SDP und RTP, wobei es sich, vereinfacht gesagt, bei SIP und SDP um Steuernachrichten handelt und bei RTP um den eigentlichen Voice-Datenstrom.

All diese Probleme hat IAX2 (Inter-Asterisk eXchange) nicht. IAX benutzt nur einen einzigen Port, und zwar 4569, üblicherweise UDP - TCP ist aber auch möglich.

Meine Empfehlung bei der Suche nach einem VoIP-Provider lautet daher, einen zu suchen, der IAX unterstützt. Die Einsteiger-Angebote, die einen IAX-Port anbieten, kosten häufig nichts und VoIP-interne Gespräche sind kostenlos.

Mit IAXTel gibt es ein reines IAX-Netzwerk, welches (fast) keine kommerziellen Interessen verfolgt und Community-orientiert ist. Gesponsort wird IAXtel vom "Hersteller" von Asterisk, der Firma Digium. Registriert man sich dort, erhält man eine 11-stellige Telefonnummer, die mit 1-700 beginnt. IAXtel ist auf US-amerikanische Verhältnisse zugeschnitten, aber um keinen bestimmten kommerziellen Provider aus Deutschland zu bevorzugen, werde ich die IAX-Konfiguration am Beispiel von IAXtel vorstellen. Bei allen anderen Providern, die IAX anbieten, sollte es ähnlich aussehen. Im Beispiel gehe ich davon aus, dass wir von IAXtel die Nummer 17001234567 erhalten haben.

Um nun zwischen VoIP-Nummern und normalen Telefonnummern zu unterscheiden, muss Asterisk entsprechend konfiguriert werden. Als Basis nehmen wir hier unser Beispiel aus dem ersten Teil.

;/etc/asterisk/extensions.conf
[default]
exten => 123456,1,Dial(Zap/g1/${EXTEN})
exten => 17001234567,1,Dial(Zap/g1/123456)
[extern]
exten => _1700NXXXXXX,1,Dial(IAX2/user:password@iaxtel.com/${EXTEN}@iaxtel)
exten => _1888NXXXXXX,1,Dial(IAX2/user:password@iaxtel.com/${EXTEN}@iaxtel)
exten => _1877NXXXXXX,1,Dial(IAX2/user:password@iaxtel.com/${EXTEN}@iaxtel)
exten => _1866NXXXXXX,1,Dial(IAX2/user:password@iaxtel.com/${EXTEN}@iaxtel)
exten => _1800NXXXXXX,1,Dial(IAX2/user:password@iaxtel.com/${EXTEN}@iaxtel)
exten => _X.,1,Dial(Zap/g2/${EXTEN})

Wie man sieht, haben sich einge Veränderungen ergeben. Zum ersten ist im Context [default] nur noch unsere eigene Nummer zu sehen, die anderen Nummern stehen in einem anderen Context, nämlich [extern]. Dies hat den Zweck, dass Anrufer von außen nicht auf unsere Kosten telefonieren sollten. Dementsprechend muss auch noch der Context des Trunks Zap/g1 abgeändert werden. Zur Erinnerung - dies entspricht der NT-Karte.

;/etc/asterisk/zapata.conf
switchtype = euroisdn
signalling = bri_net_ptmp
pridialplan=local
echocancel=yes
immediate=yes
group = 1
context=extern
channel => 1-2
signalling = bri_cpe_ptmp
group = 2
context=default
channel => 4-5

Damit können wir selbst raus telefonieren - andere, die über ein anderes Interface als Zap/g1reinkommen, können nur unsere eigenen Nummern anwählen.

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Newsletter
Neue Nachrichten