夏、休暇、アスタリスク、または独自のVoIPオペレーター

夏、休暇、アスタリスク


ヨーロッパで車を運転するために、夏休みに友人と一緒に集まりました。 そして、灰色の秋には、赤道に近づくと考えられています。 そして、かなり合理的に、コミュニケーションの問題が生じました。 Skype、ICQ、その他のサービスは確かに優れていますが、古い世代には適していません。 妻と友人、そして両親? 妻はすぐに、彼女は喜んで(何かを伝えている人)にはあげないだろうと言いました。 あなたが自分の番号を労働者に任せて、人々が私が忘却に沈んだような気分にならないようにするといいでしょう。 繰り返しになりますが、私が理解することを望まないモバイル事業者の困難なローミング料金を考えると、結果として得たいもののアイデアが形成されました。

  1. 世界中のどこからでもローカル料金で電話をかける
  2. 個人番号への電話を受ける
  3. 利用できない場合のボイスメッセージ
  4. ボイスメール
  5. SMSの受信と送信
  6. 接続セキュリティ


ソフトウェアの選択



予算のVoIPの実装には、アスタリスクが最適です。私はときどき仕事で対処する必要があります。 安くて陽気で信頼できる。

GSMゲートウェイは確かに優れていますが、goipでさえ12,000ルーブルです。 など。 したがって、私に受け入れられると思われた唯一のオプションは、chan_dongleといくつかのhuaweiでした。

SMSの送受信は、ジャバーまたは電子メールのいずれかです。

セキュリティは別の問題です。 それでもやはり、アスタリスクが公開されている場合、それは素晴らしいことではないと思います。 ラップトップからアスタリスクに接続する場合、一般に、VPNが何であろうと関係ありません。 しかし、これは正しくなく、毎回ラップトップを手に入れるのに便利ではありません。 そして、私がアンドロイドに夢中になっていることを考慮して、私はvpnクライアントの市場を研究し、古いgalaxyにOpenVPNをインストールしました。

それでは始めましょう


私はパントリーの奥の隅にうろついて、古いコンピューターを取り出した。 Ubuntuシステム以来 Debianは私のようなものです。 フラッシュドライブからのubuntuは魔法のステップの後にのみ置かれるので、私はディスクから排他的にそれを置きます。

ハブではjedi方式が優先され、標準のインストールマナが好きではないため、11個のハンドルの付いたアスタリスクを配置し、スポイラーの下に詳細を隠します。 OpenVPNを定命のものに設定します。 11個のアスタリスクの選択は、新しいxmppモジュールによるもので、着信メッセージを処理できるようになりました。

Openvpn

OpenVPN経由の接続を使用することが決定されたため、アスタリスクが付いたコンピューターはnatの背後で動作するため、外部VPNサーバーを使用します。 個人的なニーズのために、私はドイツ人の間でservachekを持っています。 しかし、原則として、あなたが私たちのものを使用するならば、それは悪くありません。 私はSelectel(広告ではない)が好きで、すべてが直感的で、道路上でのみ行われます。 そして、コストは非常に人道的です。オンにする必要があります。オフにしないでください。

一般に、ネットワークに突き刺さっているもの(私の場合はDebian)でopenVPNを実行します。

サーバー用
OpenVPNを置きます
sudo su aptitude update aptitude upgrade aptitude install openvpn 


ディレクトリを作成し、例からスクリプトのセットをコピーします。
 mkdir /etc/openvpn/easy-rsa/ cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ 


変数の編集
 nano /etc/openvpn/easy-rsa/vars 

ルール:
 export KEY_COUNTRY="RU" export KEY_PROVINCE="REGION" export KEY_CITY="GLUBINKA" export KEY_ORG="KROILOVO CORP" export KEY_EMAIL=”KC@example.ru” 


次に、証明書を生成し、設定を使用してディレクトリに転送します。
 cd /etc/openvpn/easy-rsa/ source vars ./clean-all ./build-dh ./pkitool --initca ./pkitool --server server cd keys openvpn --genkey --secret ta.key cp server.crt server.key ca.crt dh1024.pem ta.key /etc/openvpn/ 


クライアントの証明書を生成する必要があります
 cd /etc/openvpn/easy-rsa/ source vars ./build-key client_name , clien_name   


クライアントデバイスに転送する必要があります。
 /etc/openvpn/ca.crt /etc/openvpn/easy-rsa/keys/clien_name.crt /etc/openvpn/easy-rsa/keys/ clien_name.key /etc/openvpn/ta.key 


私のserver.conf
 port 1110 proto tcp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 192.168.100.0 255.255.255.0 ifconfig-pool-persist ipp.txt client-to-client #     tls-auth ta.key 0 keepalive 10 120 comp-lzo max-clients 10 persist-key persist-tun status openvpn-status.log verb 3 


Linuxクライアントの場合
OpenVPNを置きます
 sudo su aptitude update aptitude upgrade aptitude install openvpn 

/ etc / openvpnには
 ca.crt clien_name.crt lien_name.key ta.key client_name.conf 

私のclient_name.conf
 Client dev tun proto tcp remote serverIP 1110 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client_name.crt key client_name.key tls-auth ta.key 1 comp-lzo verb 3 


Androidクライアントの場合
Google PlayからAndroid用OpenVPNをインストールします
サーバーで生成された証明書をUSBフラッシュドライブにコピーする
サーバーのアドレスとポートを設定し、証明書を追加して接続します。


その結果、すべてのデバイスを1つのVPNで取得します。
5台のデバイスがありました:
  1. OpenVPNサーバー
  2. アスタリスク
  3. ラップトップ
  4. 電話番号
  5. コンパニオンフォン


アスタリスク

asterisk.orgにアクセスし、ダウンロードでダウンロードします。 asterisk.orgを置いたその瞬間に。 したがって、11.2.1はコンピューター上にあるので設定しました。 11.4.0は現在利用可能です。 私はそれがそれほど違うとは思いませんが、チェンジログは読みませんでした。
アスタリスクをインストールする
 sudo su mkdir /usr/src/asterisk cd /usr/src/asterisk wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz aptitude update aptitude upgrade 

依存関係を置きます
 aptitude install build-essential linux-headers-`uname -r` g++ libmysqlclient-dev libxml2-dev libncurses5-dev libsqlite3-dev libssl-dev libsrtp0-dev unixodbc-dev 

jabberを使用する予定があるため、iksemelとopensslをインストールする必要があります。 それらがなければ、xmppモジュールはビルドされません
 aptitude install libssl-dev libssl1.0.0 libiksemel-dev libiksemel3 

設定を開始
 tar xvf asterisk-11-current.tar.gz cd asterisk-11-current ./configure make menuselect 

デフォルトでxmppとaelを追加
 make make install 

やる
 make samples 

デフォルトの設定を取得します。
やる
 make config 

アスタリスクが悪魔によって起動されるように。


チャンドングル

次に、chan_dongleを収集する必要があります。 同志BG2によってサポートされた素晴らしいプロジェクトですが、屋根ふきのフェルトが消え、屋根ふきのフェルトは、克服できない状況のために、プロジェクトは長い間更新されず(残念なことです)、11アスタリスクの下で完全に組み立てることを拒否しました。 しかし、githubは私たちを助けてくれます。
chan_dongleの設定
 aptitude install git cd /usr/src/asterisk wget https://github.com/jstasiak/asterisk-chan-dongle/archive/asterisk11.zip unzip asterisk11.zip 

それでは、マニュアルに
 aclocal autoconf automake –a ./configure Make Make install 



次に、 wiki.e1550.mobiプロジェクトのwikiを読み、サポートされているモデムのリストからモデムを見つけます。 私の場合、E1550とE173でした。 モデム自体はすべてがシンプルで、usbmodeswitchのテーマまたはWindowsの下でgoogleを実行すると、ターミナルを介してモデムのみのモードに変換されます。 E1550では、音声機能を有効にする必要がありました。 Dongle.confに特別な変更を加えず、SIMカードのIMSIを追加しました。これにより、モジュールはSIMカードを選択し、着信のコンテキストを選択します。
dongle.confの変更
 context=dongle-incoming [mts] imsi=25001xxxxxxxxxx; exten=911 [megafon] imsi=25002xxxxxxxxxx; exten=921 


CLIアスタリスクでモジュールをオーバーロードし、モデムがフックされているかどうかを確認します
 dongle reload now dongle show devices 

すべてが表示され、すべてが良好であれば、このすべての構成を開始できます。

アスタリスクを構成する

sip.confでユーザーを登録します
sip.conf
 [general] language = ru; tcpenable = yes ; transport = tcp,udp; [LOCAL-USERS](!) type = friend ; host = dynamic ; context = from-office ; disallow = all ; allow = ulaw ; allow = alaw ; allow = gsm ; monitor = yes ; callcounter = yes ; callwaiting = no ; rtptimeout = 10; rtpholdtimeout = 20; dtmfmode = rfc2833 ; [10](LOCAL-USERS) ; username = 10 ; secret = passfor10 ; [11](LOCAL-USERS) ; username = 11 ; secret = passfor11 ; [12](LOCAL-USERS); username = 12 ; secret = passfor12; [13](LOCAL-USERS); username = 13 ; secret = passfor13; [14](LOCAL-USERS); username = 14 ; secret = passfor14; 


queues.confにキューを作成します
queues.conf
 [general] persistentmembers = yes ; autofill = yes ; monitor-type = MixMonitor [WORKGROUP] strategy = ringall; ringinuse = yes ; timeout = 20 ; retry = 1 ; maxlen = 0 ; member => SIP/10 member => SIP/11 member => SIP/12 member => SIP/13 member => SIP/14 


私はAELが知覚にとってより便利であると考えているので、ダイヤルプランはそれだけに書きました。
Extensions.ael
 Globals { __TRANSFER_CONTEXT=transfer; //     }; context transfer{ _1X => Dial(SIP/${EXTEN},60,t); //  } context from-office { includes { ; //      mobile-numbers; city-numbers; local-users; }; }; context mobile-numbers { ;//  _89XXXXXXXXX => Dial(Dongle/s:25002/${EXTEN},,T); //  ,      :) }; context city-numbers { ; // _XXXXXX => Dial(Dongle/s:25002/${EXTEN},,T); }; context dongle-incoming { ;//  c chan_dongle 921 => Queue(WORKGROUP,t,,,60); //       workgroup 911 =>{ ;//     Answer; Dial(SIP/10,60,tT); //   Dial(SIP/11,60,tT); //   Playback(/tmp/ya_v_otpuske); //     Jabbersend(asterisk@jabber_example.ru,grasp@jabber_example.ru,    {CALLERID(num)}); //   jabber   Hangup; }; sms => { Jabbersend(asterisk@jabber_example.ru,grasp@jabber_example.ru,${CALLERID(num)} ${SMS}); // jabber    Hangup(); }; ussd => { Jabbersend(asterisk@ jabber_example.ru,grasp@jabber_example.ru,${USSD}); // // jabber   ussd Hangup(); }; }; context local-users { _500 => { ; //     Wait(2); Record(/tmp/ast:wav); Wait(2); Playback(/tmp/ast); Wait(2); Hangup; }; _600 => { ; //  ,    jabber System(/usr/sbin/asterisk -x 'dongle ussd mts *100#'); System(/usr/sbin/asterisk -x 'dongle ussd megafon *100#'); }; _1X => { Dial(SIP/${EXTEN},60,tT); //    }; }; 


ロジックは次のとおりです。勤務先電話番号を呼び出すと、呼び出しはキューにラップされます。 このキューには、すべてのデバイスと、オフィスにあるパートナーのVoIP電話の2番目の回線があります。 私の個人番号に電話をかけるとき、アスタリスクは最初にアンドロイドに接続しようとし、次にラップトップに接続します。利用できない場合は、休暇中だという音声メッセージが再生され、最も早い機会にのどが渇いているすべての人に連絡できるようになります。 さて、最後にジャバーでメッセージを。

Androidでは、2x 3xクライアントとCSipSimpleをインストールしました。 一方向の音には問題がありましたが、それを理解する時間はなかったので、openVPNで「VPNを介してすべてのトラフィックをリダイレクトする」チェックボックスをオンにしました。 3Gとwifiで確認しましたが、途切れることはありません。

ジャバーは直火を上げた。 説明する価値はないと思います。サードパーティのものを使用できます。 xmpp.confで設定を登録し、すべてはハーフキックで始まりました。 OpenFireは、アスタリスクプラグインが用意されているため、好奇心からのみ設定されましたが、これは別の話です。 jabberを介したSMSの送信を厳しくすることは残っていますが、これまでのところ、本当に必要なのかどうかはまだ決定していません。 ボイスメールも設定する必要がありますが、あまり関係がないようです。休暇から戻ってくるので、はっきりします。

その結果、このアイデア全体がどのように定着するかがわかります。 私の頭は、同僚へのリダイレクト、デスクトップやその他の利点をはるかに超えた仕事をする、一種のモバイルオフィスの実装について考えています。

厳しく判断しないでください。 メモリからのアクションのシーケンスを説明したので、何かを示すのを忘れた場合、修正するために書いてください。何かを見逃している可能性があります。 また、上級の同志がそのような何かについて彼らの考えや実現を共有するならば、私はただうれしいです。

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


All Articles