Einen Linux VoIP Server mit Asterisk erstellen
June 21, 2018 | Kategorie: tutorials

Asterisk ist eine kostenlose Voice over IP Lösung zum Betrieb Ihrer eigenen Telefonanlage.

Voice over IP ist das Telefonieren über Rechnernetze, welche nach Internetstandards aufgebaut sind. Dabei werden für Telefonie typische Informationen, mithin Sprache und Steuerinformationen beispielsweise für den Aufbau einer Verbindung, über ein Datennetz übertragen. Bei den Gesprächsteilnehmern können Computer, auf IP-Telefonie spezialisierte Telefonendgeräte oder klassische Telefone, die über spezielle Adapter angeschlossen sind, die Verbindung herstellen.

  • Voice over IP ist bedeutend günstiger. Sowohl innerhalb Österreichs, als auch im Ausland. Intern und zwischen Ihren Niederlassungen telefonieren Sie ohnehin umsonst.
  • Bei neuen Nebenstellen sind keine aufwendigen Erweiterungen der Ports oder IC nötig. Auch die aufwendige Verkabelung fällt oft weg.
  • Bei vielen PBX sind Videotelefonie, Chat, Voicemail, Anrufgruppen, Rufumlegung, Reporting-Tools und vieles mehr bereits enthalten.
  • VoIP Endgeräte, also Softwaretelefone sind für so gut wie jede Plattform – oft kostenlos – verfügbar.

Bestimmt gibt es noch viele gute Gründe, die für einen Umstieg auf IP Telefonie sprechen.

Installation

Zuerst installieren wir Asterisk als APT Package

apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion

und wechseln danach in das Verzeichnis

cd /usr/src

wo wir nun die aktuelle Asterisk Software mit wget herunterladen

wget downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

und entpacken diese mit

tar zxvf asterisk-16-current.tar.gz

Jetzt wechseln wir in den entpackten Unterordner (bei euch heißt er evtl. anders)

cd asterisk-16.*

und beginnen damit, einige Scripte auszuführen

contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install

Wir werden danach nach einem „ITU-T telephone code“ gefragt, für Österreich ist es 43. Weitere Ländercodes finden Sie im Internet. Jetzt beginnen wir, den eigentlichen Asterisk Server zu konfigurieren, wozu es ein configure script gibt. Im Asterisk Ordner geben wir ein

./configure --with-jansson-bundled
make
make install
make samples
make config
ldconfig

Die grundinstallation wäre damit geglückt, nun werden wir noch einige Sicherheitsvorkehrungen treffen. Wir erzeugen eine Benutzergruppe asterisk und einen Benutzer asterisk, der sein Heimverzeichnis unter /var/lib/asterisk hat und fügen ihn noch der Benutzergruppe asterisk hinzu.

groupadd asterisk
useradd -d /var/lib/asterisk -g asterisk asterisk

Um Asterist auch unter dem neuen Benutzer und der Grupe zu starten müssen wir noch folgende Befehle ausführen

sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/g' /etc/default/asterisk
sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g' /etc/default/asterisk
sed -i 's/;runuser = asterisk/runuser = asterisk/g' /etc/asterisk/asterisk.conf

Außerdem müssen wir noch die Rechte an einigen Verzeichnissen bearbeiten.

chown -R asterisk:asterisk /etc/asterisk /var/{run,lib,log,spool}/asterisk /usr/lib/asterisk

Jetzt können wir den Dienst starten und er sollte unter dem Benutzer asterisk ausgeführt werden.

systemctl start asterisk

Um in das CLI (Command line interface) zu gelangen geben Sie ein

asterisk -rvv

Je mehr “v” Sie anhängen, desto mehr Debug-Meldungen werden angezeigt!

Die Erstkonfiguration

Die wichtigsten Konfigurationsdateien finden Sie unter /etc/asterisk. Hier sehen Sie ein Beispiel aus einer sip.conf:

# Der "general" context gilt global, Änderungen können im jeweiligen Sub Context vorgenommen werden.
[general]
bindaddr = 0.0.0.0
bindport = 5060

# Im Falle eines VoIP Trunks ins PSTN
[extern]
type = friend
host = 1.1.1.1
dtmfmode = rfc2833
disallow = all
allow=ulaw
allow=alaw

[intern]
dtmfmode = rfc2833
disallow = all
allow=ulaw
allow=alaw

[101]
context=intern
type = friend
secret = 1234
host = dynamic

[102]
context=intern
type = friend
secret = 1234
host = dynamic

[103]
context=intern
type = friend
secret = 1234
host = dynamic

Dialplan

In der Datei /etc/asterisk/extensions.conf kann das Rufverhalten der einzelnen Peers definiert werden.

[from-outside]
; Hier konfigurierst du die Einstellungen für eingehende Anrufe von einem Trunk oder einer externen Quelle.
; Füge hier beispielsweise Routen hinzu, um Anrufe an bestimmte interne Erweiterungen weiterzuleiten.

exten => _X.,1,NoOp(Inbound call from outside)
exten => _X.,n,Dial(SIP/$(EXTEN)@intern)  ; Leite den Anruf an die interne Erweiterung weiter
exten => _X.,n,Hangup()

[from-inside]
; Hier konfigurierst du die Einstellungen für ausgehende Anrufe von internen Erweiterungen.
; Füge hier beispielsweise Routen hinzu, um Anrufe an externe Nummern oder Trunks weiterzuleiten.

exten => _X.,1,NoOp(Inbound call from inside)
exten => _X.,n,Dial(SIP/${EXTEN}@intern)  ; Wähle die Nummer über den Trunk "intern" (in sip.conf)
exten => _X.,n,Hangup()

exten => _0X.,1,NoOp(Outbound call from inside) ; 0 als Vorwahl für externe Anrufe
exten => _0X.,n,Dial(SIP/${EXTEN:1}@extern)  ; Wähle die externe Nummer über den Trunk "extern" (in sip.conf)
exten => _0X.,n,Hangup()

Voicemail

In der Datei voicemail.conf kann man Voicemails konfigurieren.

[101]
101 => password1, Employee 1, user1@mail.local

[102]
102 => password2, Employee 2, user2@mail.local

[103]
103 => password3, Employee 3, user3@mail.local
Beitrag auf Github bearbeiten
Suche
Weiterlesen