Internet-Telefonie (VoIP) mit Asterisk einrichten (Anleitung)

Aus Portunity Wiki

Version vom 11:13, 16. Okt. 2015 bei Mgr@superroot (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Wie wird die Astersik an den SIP- und IAX-Port-Anschlüsse von Portunity angebunden? Wie kann raustelefoniert werden? Wie können eingehende Gespräche verarbeiten werden? - Konfigurationshinweise und Tipps rund um Asterisk.

Inhaltsverzeichnis

Protokoll: IAX

Ausgehende Gespräche - Outbound

Variante 1 (gut für erste Tests)

Um mit der Asterisk Gespräche mit dem IAX-Protokoll über den "IAX-VoIP-Server" von Portunity zu terminieren, ist im Dialplan einfach folgender Dial-Befehl zu verwenden:

exten => _0XXXXXX.,1,Dial(IAX2/iaxAAAAA:BBBB@iax.iaxport.de/${EXTEN})

Wobei iaxAAAAA der Loginname ist (iax plus eine Zahl !) und BBBB das dazu gehörige und selbst gewähltes Kennwort. Mit iax.iaxport.de wird der Server von Portunity adressiert und Asterisk mitgeteilt, das Gespräch über diesen aufgebaut werden sollen. Anstelle des Hostnamen kann auch die IP-Adresse verwendet werden (nicht empfohlen), wobei die Verwendung des Hostnames generrel sicherer ist falls sich die IP-Adresse mal ändern sollte. In der Variable ${EXTEN} steht die Zielrufnummer der aktuellen Asterisk-Extention.

Als Zielrufnummer kann eine ganz normale dt. Nummer verwendet werden (020269555888, wobei 0202 für wuppertal steht und die folgenden Ziffern eine Testnummer unserer TK-Anlage darstellen). Sofern eine führende Null zum Amt-holen im Dialplan der Asterisk definiert wurde, muß natürlich ${EXTEN:1} verwendet werden um die führende 0 der Amts-Holung nicht mit zu Portunity zu übertragen.

Variante 2 (Empfohlen):

Um nicht die Zugangsdaten in jedem Dial-Befehl im Dialplan stehen zu haben, bietet sich folgende Variante an:

In der iax.conf-Konfigurationsdatei wird folgender Abschnitt definiert:

[iaxport-outbound]
type=peer
username=iaxAAAAA
secret=BBBB
host=iax.iaxport.de

Im Dialplan vereinfacht sich die Anwahl dann wie folgt:

exten => _0XXXXXX.,1,Dial(IAX2/iaxport-outbound/${EXTEN})

Der Vorteil ist, dass die Zugangsdaten an EINER zentralen Stelle und nicht mehr im Dialplan stehen.

Eingehende Gespräche - Inbound

Variante 1: (alte Lösung für Asterisk-Versionen vor 1.6)

Um auch auf dem VoIP-Server von Portunity eingehende Gespräche für die SIP- und IAX-Adresse zu einem eigenen Asterisk-Server zu "leiten", sind weitere Schritte nötig.

Die einfachste ist einfach bei Portunity im Webinterface eine "Weiterleitung" zu einer eigenen "lokalen" SIP- oder IAX-Adresse eines eigenen Asterisk-Gateways zu definieren. Dazu im Webinterface in das SIP- und IAX-Port-Paket wechseln (direkt nach dem Login im linken Frame) und dort den Konfigurationsdialog (1. Icon) aufrufen. Im Block "Anrufweiterleitungen" nun einen Eintrag wie folgt definieren:

  • Priorität (Prio) = 1
  • Anruf von: leer lassen (=default)
  • Uhrzeit von / bis: 00:00 bis 23:59 (=default)
  • Zielrufnummer: alle (=default)
  • Aktion: Weiterleiten
  • Weiterleitungsziel: sip:ihresip@ihredomain.de

Als Weiterleitungsziel können sowohl eine SIP- als auch eine IAX-Adresse als auch Festnetz- oder Handynummern angeben werden (bitte beachten, dass nicht-voip-Adressen an dieser Stelle von Portunity abgerechnet werden !). Dort also einfach die SIP- oder IAX-Adresse des eigenen Asterisk-Servers eintragen und eingehende Gespräche werden zu dem Server weitergeleitet.

Diese Lösung setzt allerdings voraus, dass der eigene Asterisk-Server unter einer "stabilen" Domain / Hostnamen erreichbar ist, d.h. über eine statische IP-Adresse verfügt (z.B. von einem der Portunity-DSL-Zugänge !).

Variante 2; Empfohlen ab Asterisk 1.6

In der iax.conf-Konfigurationsdatei in der [general]-Sektion folgende Zeile einfügen:

register => iaxAAAAA:BBBB@iax.iaxport.de

Wobei iaxAAAAA wieder der Loginname ist (iax plus eine Zahl !) und BBBB das dazu gehörige und selbst gewählte Account-Kennwort. Mit iax.iaxport.de wird wiederum der Server adressiert und Asterisk wird mit dieser Zeile mitgeteilt, sich an den Server mit diesen Zugangsdaten "einzubuchen".

Dies kann auf der Asterisk-Console anschließend mit dem Befehl "iax2 show registry" überprüft werden, der dann etwas wie folgt auswerfen müsste:

gate*CLI> iax2 show registry
Host Username Perceived Refresh State
82.139.223.1:4569 iax12651 213.240.185.xxx:4569 60 Registered
gate*CLI>

Der Status sollte "Registered" sein, ansonsten liegt ein Fehler vor. Die Zeile bewirkt außerdem, dass sich der Asterisk-Server regelmässig beim Portunity-Server meldet (eben alle 60 Sekunden wie unter Refresh in diesem Beispiel ersichtlich) - d.h. dieses Verfahren funktioniert dadurch auch mit einer dynamischen IP-Adresse und bei einem IP-Wechsel vergehen maximal bis zu 60 Sekunden bis die neue IP-Adresse "nachgeführt" ist.

Des weiteren in die iax.conf einfügen: (iax00000 durch Ihren IAX-Benutzernamen ersetzen!)

[iax000000]
type=friend
host=iax.iaxport.de
username=iaxAAAAA
secret=BBBBBB
peercontext=iaxport
context=from-iaxport
notransfer=yes
requirecalltoken=no
disallow=all
allow=alaw

und in der extensions.conf:

[from-iaxport]
exten => s,1,Dial(wohinauchimmer)

Der [iax000000]-Abschnitt kann dann außerdem wie weiter oben beschrieben auch als Outbound-Konfiguration mitbenutzt werden.


Protokoll: SIP

Ausgehende Gespräche - Outbound

siehe bitte den folgenden Punkt:

Eingehende Gespräche - Inbound

Ihre Asterisk muss sich permanent an unserer VoIP-Plattform registrieren, damit wir eingehende Anrufe auch direkt weiterleiten können. Sie sollten SIP nur verwenden, wenn Ihre Asterisk eine "echte" IP-Adresse besitzt, also sich nicht hinter NAT / Masquerading befindet.
Falls Sie dies nicht möchten stellen Sie bitte sicher, dass Sie die korrekte STUN-Konfiguration vorgenommen haben.

  • Asterisk Version 1.8


Dies geschieht z.B. in der sip.conf:

register => sipAAAAA:BBBBB@sip.sipport.de/rufinbound

  • sipAAAAA = Ihr Tarif-Login-Name , z.B. sip4711 -> "sip" + eine mehrstellige Zahl
  • BBBBB = Das für den Tarif durch SIe vergebene Kennwort / Passwort.
  • rufinbound = Die extension aus der extensions.conf in die der Anruf springt. Hier können Sie auch Ihre Rufnummer nehmen. Aber achten SIe bitte auf die korrekte Schreibweise.

Damit weitere Daten, wie der Codeq, korrekt genommen werden, sollten Sie noch folgenden Block in die sip.conf einfügen:

[sipAAAAA]
type=peer
nat=no
insecure=invite,port
canreinvite=no
language=de
context=sip-inbound
host=sip.sipport.de
username=sipAAAAA
fromuser=sipAAAAA
secret=BBBBB
qualify=no
progressinband=yes
;stunserver_host=stun1.sipport.de
;stunserer_port=3478
disallow=all
allow=alaw
  • "context=sip-inbound" Hier definieren Sie den Context für eingehende Gespräche. In die Extensions dieses Context wird bei Anrufen gesprungen.
  • sipAAAAA = Ihr Tarif-Login-Name , z.B. sip4711 -> "sip" + eine mehrstellige Zahl
  • BBBBB = Das für den Tarif durch SIe vergebene Kennwort / Passwort.


Passend benötigen Sie noch folgende Zeilen in der extensions.conf:

[sip-inbound]
exten => rufinbound,1,NoOp(INCOMING SIP rufinbound !!!!)
exten => rufinbound,n,answer()
exten => rufinbound,n,Background(en/beep)
exten => rufinbound,n,Background(en/beep)
exten => rufinbound,n,Hangup


Sie können natürlich über diesen SIP-Account dann auch den Outbound terminieren.

Tipps & Hinweise

Firewall

  • Nicht vergessen eventuell die Firewall Ports und IP-Adressen freizuschalten.
    Im Zweifelsfall eine Firewall auch einfach mal ganz kurz für einen Test herunterfahren - funktioniert es dann, liegt eine Firewall-Fehlkonfiguration vor, funktioniert es immer noch nicht, liegt der Fehler nicht an der Firewall.
    Auf keinen Fall aber vergessen, die Firewall anschließend wieder hoch zu fahren !!!

Sicherheit

  • Sie sollten generell bei Telefonie sichere Kennwörter verwenden. Ein "hallo", "test" oder "xxx" sollten Sie auf KEINEN FALL, auch nicht für mal eben nur zum Testen! Wir versuchen Bots die diverse Kennwörter durchprobieren zwar zu sperren, aber verantwortlich sind wir nicht!
  • Auch sollten Sie, sofern möglich, Ihre TK-Anlage (Ihre Asterisk) so sicher wie möglich machen, damit sie nicht komprimiert wird, bzw. Sie nicht "in den Ruin" telefoniert werden!
Persönliche Werkzeuge