Wie man aufhört, für Roaming zu bezahlen, oder mit einer Nummer auf der ganzen Welt

Die Idee zu diesem Material kam mir letztes Jahr, als ich am Ende des Monats, nachdem ich einen großen Kreis um unser Unermessliches geschlossen hatte, Rechnungen für Roaming erhielt. Trotz der Zusicherungen von Mobilfunkunternehmen über kostenloses Roaming innerhalb des Landes kann SMS- oder Internetverkehr separat berechnet werden. Und die im Tarif enthaltenen Protokolle gelten nur in der „Heimatregion“. Nun, da dieses Jahr nicht nur Reisen in mein Heimatland geplant sind, begann ich meine Idee zu verwirklichen - meine eigene stationäre Telefonzentrale zu Hause, die mich überall auf der Welt kontaktieren kann.
Unterwegs löste ich das Problem der Telefonkommunikation zwischen Wohnungen und Häusern von Verwandten, da die Zeit der internen Verhandlungen nicht nur nach Stunden, sondern nach zehn Stunden berechnet wurde.
Kleiner Spoiler: Infolgedessen konnte ich Asterisk auf dem NAS und dem Router installieren



Also kam ich zu dem Schluss, dass ich meine eigene Telefonie brauche. Man könnte jeden der SIP-Telefoniedienste wählen, die in großer Anzahl auf dem Markt vorhanden sind. Aber ich hatte eine Liste von Anforderungen, die keiner der Betreiber erfüllte:

  • Unabhängige Wahl der internen Nummern
  • Zugang zu externen Kommunikationsleitungen mit der Möglichkeit, Festnetz- und Mobilfunknummern anzurufen
  • Möglichkeit, einen Betreiber auszuwählen, der IP-Telefonie anbietet
  • Die Möglichkeit, die SIM-Karte des ausgewählten Betreibers mit dem üblichen "Telefon" -Tarif zu verwenden
  • Vorhandensein des Sprachmenüs zum Weiterleiten eines eingehenden Anrufs an den erforderlichen Teilnehmer
  • Minimale oder Nullkosten für die Wartung und Aufrechterhaltung der internen Kommunikation

Viele Betreiber bieten eine virtuelle Telefonzentrale und sogar ein Sprachmenü an. Dieser Service ist aber bereits bezahlt. Einige Betreiber erlauben das kostenlose Telefonieren in ihrem Netzwerk, aber es gibt ein Problem beim Wählen langer Nummern. Und sicherlich erlaubt Ihnen niemand, die SIM-Karte des ausgewählten Betreibers mit den minimalen Kosten für Anrufe oder vorausbezahlte Minuten zu verwenden. Also habe ich beschlossen, selbst mein eigener Telekommunikationsbetreiber zu werden.

Erster Schritt. Plattformwahl: Virtualisierung

Da ich mich bereits mit IP-Telefonie beschäftigte, wurde beschlossen, meine Asterisk-basierte Telefonanlage zu erhöhen - sie ist kostenlos, es gibt viele Foren, Handbücher und ... warum nicht? Ich bekam ein paar Handys mit SIP-Unterstützung und begann über die Plattform für die Arbeit mit Asterisk nachzudenken. Um es in die Cloud oder auf einen virtuellen Server zu stellen, würde dies bedeuten, dass Sie früher oder später bezahlen müssen, aber dann bricht die Idee, Telefonie kostenlos zu machen, zusammen. Aus diesem Grund habe ich mich für die Virtualisierungsfunktion meines QNAP TS-451 NAS entschieden. Ich habe bereits über diesen Netzwerklaufwerkschip geschrieben, damit Sie mehr lesen können . Die Systemleistung reichte nicht nur für die Arbeit von Asterisk selbst, sondern auch für die Weboberfläche aus. Daher entschied ich mich für die Elastix-Distribution. Ich muss sagen, dass die letzte Distribution, die auf der offiziellen Elastix.org-Website unter Nummer 5 verfügbar ist, bereits Shareware ist. Ich empfehle daher, dass Sie auf Torrents nach Torrents Version 4 suchen - sie war kostenlos und frei verbreitet, aber jetzt ist sie nicht auf der Website verfügbar.

Die Erstellung von Benutzern in Elastix wird häufig beschrieben, der Rest wird im Netzwerk jedoch nicht ausführlich behandelt. Daher werde ich die Verbindung des Multifon SIP-Providers von Megafon und die Erstellung eines Sprachmenüs mit Anrufweiterleitung beschreiben.

Erstellen Sie in Multifon eine Amtsleitung mit den Parametern Ihres Kontos. Sie können diese Option mit einer beliebigen Megafon-Betreibernummer verbinden. Die Abbuchung hängt nicht vom ausgewählten Tarif ab und wird für jede Minute eines ausgehenden Anrufs vorgenommen. Der Posteingang ist kostenlos. Es werden zwei Gesprächslinien gleichzeitig unterstützt. Außerdem können Sie konfigurieren, dass eingehende Anrufe nur an das Telefon, Telefon + Multiphone, nur an Multiphone gehen.


Texteinstellungen für diejenigen, die sich selbst einen Multifon-Trunk hinzufügen möchten:

Trunk Multifon
Peer-Details:

Benutzername = Telefonnummer
Typ = Peer
Geheimnis = Passwort
Port = 5060
nat = ja
unsicher = port, einladen
host = sbc.megafon.ru
fromuser = phone_number
fromdomain = multifon.ru
dtmfmode = Inband
context = from-trunk

Register String:
Telefonnummer: Passwort@multifon.ru/ Telefonnummer

Wir sind also mit dem SIP-Anbieter verbunden und können den eingehenden Anruf jetzt an eine der Nebenstellennummern weiterleiten. Was aber, wenn der Anrufer die zu wählende Nebenstellennummer auswählen soll? Sie können ein Sprachmenü mit einer Auswahl an Empfängern erstellen. Ich werde eine schrittweise Beschreibung machen.

Erstellen Sie ein Sprachmenü in Elastix

Gehen Sie zu Systemaufzeichnungen. Hier sind die Parameter der Sprachaufzeichnung, die durchgeführt werden müssen, bereits geschrieben: PCM, 16 Bit, 8000 Hz. Dies kann sowohl im Standard-Aufzeichnungsprogramm als auch in Programmen von Drittanbietern wie SoundForge erfolgen.



Nachdem die Sprachansage erstellt und auf den Server hochgeladen wurde, wechseln Sie zum Menüpunkt IVR. Wir erstellen ein neues Sprachmenü und wählen die Begrüßungsdatei sowie die Reaktion auf das Drücken der Tasten aus. In meinem Fall habe ich gewählt, dass durch Drücken der Nummer „3“ die Nummer „101“ aufgerufen wird und so weiter. Wenn die falsche Taste ausgewählt ist oder der Anrufer keine einzige Taste drückt, wird der Anruf an die Nebenstelle 304 weitergeleitet.



Jetzt müssen wir den eingehenden Anruf in unser Sprachmenü bringen. Wir gehen zum Element Eingehende Routen und erstellen eine neue Regel. Wählen Sie im letzten Absatz von "Ziel festlegen" IVR und die zuvor erstellte Warteschlange aus, die ich "dozvon" genannt habe.


Wir speichern und verwenden. All dies funktionierte ungefähr einen Monat lang ohne Fehler, aber das schien mir nicht genug zu sein. Schließlich hat nicht jedes Haus einen NAS mit einer virtuellen Maschine oder einem Server, auf dem Sie den Stern erhöhen können, aber fast jedes Haus hat einen Router!

Mögliche Probleme und deren Lösung mit einem virtuellen Server

Beim Erstellen der Server- und Portweiterleitung stellte sich heraus, dass der Betrieb von zwei virtuellen Maschinen und einem physischen Server auf demselben Netzwerkport nicht sehr effektiv ist. Die einfachste Lösung bestand darin, das Virtualisierungssystem zu nutzen und eine separate Netzwerkschnittstelle für eine virtuelle Maschine auszuwählen. Es stellte sich heraus, dass dies mit den integrierten QNAP-Tools sehr einfach war. Danach blieb die virtuelle NAS + 1-Maschine selbst auf der ersten Netzwerkschnittstelle und die zweite virtuelle Maschine auf der zweiten Netzwerkschnittstelle.



Schritt 2: Erhöhen Sie das Sternchen auf dem Router

Es ist also passiert, dass ich den Yota-Anbieter verwende, aber nicht die ursprünglichen Router. Ich habe mich lange Zeit für einen hervorragenden Router von Zyxel - Keenetic LTE entschieden. Vor ein paar Jahren habe ich es bereits unter den härtesten Bedingungen des Outbacks getestet und war vollkommen zufrieden - dazu gibt es auf Habré ein separates Material .

In der neuesten NDMS-Firmware, genauer gesagt ab Firmware 2.08.B, ist die Unterstützung für OPKG-Pakete für die Router-Familie Zyxel Keenetic enthalten. Dies bedeutet, dass Sie die unterschiedlichste Software einsetzen können. (Es gibt eine Menge Software, die für Zyxel-Router angepasst ist.) Warum also nicht Asterisk dort platzieren? Es ist wichtig, dass der Router mindestens 128 MB RAM hat. Kaum gesagt als getan!
Dies ist umso angenehmer, als die Zyxel-Spezialisten sogar ein Handbuch für die Bereitstellung von Asterisk für ihre Router erstellt haben. Um Telefonie auf einem Router bereitzustellen, reicht es im Prinzip aus, die schrittweisen Anweisungen zu befolgen. Und ich werde Ihnen erzählen, wie ich die Funktionsweise dieses Systems verbessert und auf ein System gebracht habe, das sich auf einem separaten virtuellen Server drehte.

Das erste, was mir auffiel, war ein unklares Problem beim Starten des Routers nach einem Neustart der Software. Es stellte sich heraus, dass mein Flash-Laufwerk, das an den USB-Anschluss des Routers angeschlossen ist, Strom bis zu 0,16 A verbraucht. Dies stellte sich als ausreichend heraus, so dass das LTE-Modem im Zyxel Keenetic LTE-Router nicht regelmäßig gestartet werden konnte. Alles wurde geheilt, indem ein Flash-Laufwerk über einen externen USB-Hub mit zusätzlicher Stromversorgung angeschlossen wurde. Hat den von vielen Leuten erprobten D-Link DUB-H7 genommen . Damit waren die Probleme beendet. Ich glaube, dass Router mit zwei USB-Anschlüssen ohne solche Krücken funktionieren.

Kommen wir nun zu den Asterisk-Einstellungen. Hier müssen Sie bereits alle Stifte bearbeiten. Es gibt zwei Möglichkeiten: Gehen Sie über SSH und bearbeiten Sie dort (MC ist vorhanden) oder gehen Sie um den Ball zur IP-Adresse des Routers und bearbeiten Sie Dateien mit Notepad ++. Beide Optionen passten zu mir und ich machte mich an die Arbeit. Meine Benutzer wurden hinzugefügt und der Multi-Trunk in der Datei sip.conf registriert. Es bleibt nur eine Sprachwarteschlange zu erstellen. Ich habe die Begrüßungs-Sprachdatei in \\ 192.168.1.1 \ Asterisk-blue \ var \ lib \ asterisk \ Sounds \ ru abgelegt und die folgenden Änderungen an der Datei extensions.conf vorgenommen.

Erstellen eines Sprachmenüs in Asterisk
[extern ausgehend]
; ------------------ Multifon - exten => _8 .........., 1, NoOp ()
exten => _8 .........., n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _8 .........., n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _8 .........., n, Answer ()
exten => _8 .........., n, Wait (2)
exten => _8 .........., n, Wiedergabe (/ opt / var / lib / Sternchen / Sounds / itsp_names / multifon)
exten => _8 .........., n, Dial (SIP / Multifon / 7 $ {EXTEN: 1} ,, T)
exten => _8 .........., n, Hangup ()

[Multifon-eingehend]; ===== Eingehender Anruf von Multifon =====
exten => _........, 1, NoOp ()
exten => _........, n, Wait (4)
exten => _........, n, Answer ()
exten => _........, n (spielen), NoOp ()
exten => _........, n, Wait (1)
exten => _........, n, Wiedergabe (hallo)
exten => _........, n, Wait (0,5)
exten => _........, n, Wiedergabe (priv)
exten => _........, n, Set (TIMEOUT (Ziffer) = 1)
exten => _........, n, NoOp ()
exten => _........, n, WaitExten (7)

exten => _1,1, NoOp ()
exten => _1, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _1, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _1, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _1, n (dial_ext), Dial (SIP / 101.60, mt)

exten => _2,1, NoOp ()
exten => _2, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _2, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _2, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _2, n (dial_ext), Dial (SIP / 302.60, mt)

exten => _3,1, NoOp ()
exten => _3, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _3, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _3, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _3, n (dial_ext), Dial (SIP / 304.60, mt)

Also hat es funktioniert. Ausgehende Anrufe gehen über Multifon, interne Anrufe zwischen Teilnehmern sind kostenlos und eingehende Anrufe über Multifon können an jeden der drei Teilnehmer gerichtet werden. Aber es schien mir nicht genug. Und es ist schade, dass nur Megaphone eine alternative SIP-Verbindung zu einer Mobilfunkleitung bietet. Was ist, wenn Sie einen anderen Mobilfunkanbieter verwenden möchten? Es gibt eine Lösung für das Problem!

Schritt drei: Wir verbinden jeden Mobilfunkbetreiber mit unserem Asterisk

Der letzte Schritt bestand darin, einen beliebigen Mobilfunkbetreiber mit unserem Telefonieserver zu verbinden. Die logischste Lösung wäre, ein GSM-SIP-Gateway anzuschließen, das am Ausgang eine SIP-Amtsleitung bereitstellt. Die Kosten für solche Geräte pro 1 SIM-Karte beginnen jedoch bei 9.000 Rubel, weshalb beschlossen wurde, den anderen Weg einzuschlagen. Wir finden ein Modem mit Sprachunterstützung. In unserem Fall stellte sich heraus, dass es sich um Huawei E3131 handelte. Das Entsperren und Aktivieren von Sprachfunktionen wurde im Netzwerk wiederholt beschrieben, sodass ich davon nicht abgelenkt werde. Wir legen die benötigte SIM-Karte in den USB-Hub-Anschluss ein und schalten zunächst den Betrieb als 3G-Modem im Menü aus.



Dann beginnen wir mit der Konfiguration der Dateien des Asterisk. Installieren Sie zuerst das Dongle-Paket mit dem Befehl in der opkg install asterisk11-chan-dongle- Konsole. Öffnen Sie nach der Installation die Datei dongle.conf und bearbeiten Sie sie, um Folgendes zu erhalten:

Arbeitsdatei dongle.conf
[Dongle]
Intervall = 15

[Standardeinstellungen]
Kontext = Dongle-eingehend
rxgain = 0
txgain = 0
usecallingpres = yes
callwaiting = nein
dtmf = Inband
mindtmfgap = 45; minimales Intervall vom Ende der Vorschau DTMF vom Beginn des nächsten in ms
mindtmfduration = 80; minimale DTMF-Tondauer in ms
mindtmfinterval = 200; minimales Intervall zwischen den Enden der DTMF mit den gleichen Ziffern in ms

[GSM1]
audio = / dev / ttyUSB1
data = / dev / ttyUSB2
imei = *****************; E3131 - Geben Sie das IMEI-Modem ein

Speichern Sie die Datei und wechseln Sie zur Datei extensions.conf. Das Multifon kann auskommentiert und zur Arbeit mit dem Modem hinzugefügt werden.

Wir registrieren uns für den Betrieb von Anrufen über das USB-Modem in der Datei extensions.conf
[Dongle-ausgehend]; für ausgehende Anrufe:
; ------------------ GSM1 Donle - exten => _8 .........., 1, NoOp ()
exten => _8 .........., n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _8 .........., n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _8 .........., n, Answer ()
exten => _8 .........., n, Wait (2)
exten => _8 .........., n, Wiedergabe (/ opt / var / lib / Sternchen / Sounds / itsp_names / beeline-gsm)
exten => _8 .........., n, Dial (DONGLE / GSM1 / 8 $ {EXTEN: 1} ,, T)
exten => _8 .........., n, Hangup ()

[Dongle-eingehend]; für eingehende Anrufe:
exten => s, 1, NoOp ()
exten => s, n, Warte (4)
exten => s, n, Answer ()
exten => s, n (spielen), NoOp ()
exten => s, n, Wait (1)
exten => s, n, Wiedergabe (hallo)
exten => s, n, Warte (0,5)
exten => s, n, Wiedergabe (priv)
exten => s, n, Set (TIMEOUT (Ziffer) = 1)
exten => s, n, NoOp ()
exten => s, n, WaitExten (7)

exten => _1,1, NoOp ()
exten => _1, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _1, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _1, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _1, n (dial_ext), Dial (SIP / 101.60, mt)

exten => _2,1, NoOp ()
exten => _2, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _2, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _2, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _2, n (dial_ext), Dial (SIP / 302.60, mt)

exten => _3,1, NoOp ()
exten => _3, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _3, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _3, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _3, n (dial_ext), Dial (SIP / 304.60, mt)

Jetzt fing alles an und funktionierte wie es sollte. Asterisk akzeptiert eingehende Anrufe an eine Nummer und der Benutzer wählt durch Auswahl einer Nummer aus, wo er angerufen werden soll. Ein ausgehender Anruf geht über jeden Mobilfunkbetreiber, wo immer Sie sind. Das heißt, Sie können Ihre SIM-Karte in ein USB-Modem einlegen und überall auf der Welt hingehen. Dort reicht es aus, Zugriff auf das Netzwerk zu haben und auf dem Smartphone / Laptop einen SIP-Client zu haben, der eine Verbindung zu Ihrem Asterisk-Server herstellt. Die Lösung wird ausgeführt und funktioniert. Die daraus resultierenden Störungen wurden behoben, indem ein USB-Hub mit externer Stromversorgung hinzugefügt und das Flash-Laufwerk ausgetauscht wurde, da einige Laufwerke fehlerhaft funktionierten. Alle Arbeiten zur Inbetriebnahme der Telefonie werden einen Abend dauern.

Um zu verhindern, dass diese Arbeit verschwindet, können Sie mit einem Befehl eine Sicherung des gesamten Asterisk auf einem Flash-Laufwerk erstellen:

Erstellen Sie eine Sicherungskopie des Asterisk auf einem Flash-Laufwerk
tar cvzf / opt / backup-`date "+% Y-% m-% d_% H-% M" .tar.gz -C / opt / bin usw. home lib verloren + gefunden root sbin share tmp usr var

Bonus für Besitzer von Zyxel Keenetic LTE

Es ist zu beachten, dass dieser Router auch mit zwei SIP-Clients mit physischen FXS-Ports ausgestattet ist, an die Sie jedes analoge Telefon anschließen können. Und dieser Client stellt problemlos eine Verbindung zum Asterisk-Server her, der sich darauf dreht.

Bonus für Besitzer von Zyxel Keenetic *

Wenn Sie kein Geld für den Kauf von SIP-Telefonen ausgeben möchten, unterstützt die Keenetic-Router-Reihe den Zyxel DECT-Adapter, der die SIP-Telefoniefunktion mit der Möglichkeit zum Anschließen eines beliebigen DECT-Mobilteils hinzufügt.

Fazit

Das Problem der freien Kommunikation zwischen verschiedenen Teilnehmern mit häufigen und langen Gesprächen ist gelöst. Die Aufgabe der „Anwesenheit“ des Teilnehmers in der Stadt und der freien Kommunikation mit dem Eigentümer der Nummer, wo immer sich der Eigentümer befindet, ist ebenfalls gelöst. Die QNAP TS-451 NAS-Lösung mit Virtualisierung profitiert von der Möglichkeit, Asterisk über eine Webschnittstelle zu konfigurieren. Die Lösung mit einem Router erfordert jedoch fast keine Kosten. Sternchen - es ist einfach! Warum für Roaming bezahlen, wenn die Verbindung kostenlos sein kann?

Ich möchte dem Zyxel-Team separat für die Reaktionsfähigkeit, die Unterstützung beim Experimentieren und die Verbesserung der Funktionalität ihrer Geräte danken.

PS Wie weiter unten richtig ausgeführt, verbieten fast alle Mobilfunkbetreiber die Verwendung einer SIM-Karte zur Erstellung eines GSM-Gatters. Tatsächlich wird Sie niemand blockieren, bis Sie den kommerziellen Betrieb Ihres Tores aufnehmen. Der Autor ist nicht verantwortlich für Ihre Handlungen.
Ich kenne jedoch Fälle, in denen Unternehmen Dutzende von SIM-Karten in GSM-Gateways für günstige Anrufe zu Mobilfunknummern verwendeten.

Source: https://habr.com/ru/post/de402367/


All Articles